Kommentar wird nicht geschrieben
liebewinter
- php
Vor einiger Tage habe habe einen große Fehler gemacht , habe mein Festplatte gelöscht... , so einiger sache könnte geretten werden... .Ich habe geprüft und meine Kontakt PHP datei ist in Ordnung , aber nicht 100% .... , wenn schreibe E-mail , name und Messagen sie werden nicht geschrieben.. weder auf "test.txt" Datei noch auf Website .
http://localhost/testphp.php
Auf dieses Fenster zeigt wie ich PHP Paketen installiert habe .
https://imgur.com/a/Umr0djC
<?php ### messages.php ### utf8 ### äöüÄÖÜ ###
header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Berlin');
?>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0">
<title>Kontakt</title>
<style>
body {
background-color: #ebf5d7;
grid-gap: 5px;
grid-template-columns: 10% 72% 17%;
grid-template-areas:
"header header header"
"nav nav nav"
"linkBox linkBox linkBox"
"main main main"
"infoBox infoBox infoBox"
"footer footer footer" ;
}
@media screen and (min-width: 40em) {
body {
display: grid;
grid-template-columns: 10% 72% 17%;
grid-template-areas:
"header header header"
"nav nav nav"
"linkBox main infoBox"
"footer footer footer";
}
}
@media screen and (min-width: 30em) {
#externalLinks a {
text-decoration: none;
display: block;
text-align: center;
font-size: 15px;
font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, sans-serif;
}
li a, .dropbtn {
display: block;
color: #000;
padding: 8px 16px;
text-decoration: none;
}
}
body > header {
grid-area: header;
background-image: url("../f409784856.png");
padding: 60px;
}
body > nav {
grid-area: nav;
background-color: #d2f5c4;
}
body > #externalLinks {
grid-area: linkBox;
background-color: #d2f3c6;
;
}
body > main {
grid-area: main;
background-color: #eaf6e5;
}
body > #furtherInformation {
grid-area: infoBox;
background-color: #d2f3c6;
}
body > footer {
grid-area: footer;
background-color: #99ee7a;
}
/* Nav */
nav {background-color: #d2f5c4;}
nav a{
color: black;
text-decoration: none;
display: inline;
padding: 0px 8px;
font-size: 17px;
font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, sans-serif;
}
nav ul {list-style-type: none;}
nav li {display: block;display:inline-block;}
/* ExternalLinks */
#externalLinks a {
text-decoration: none;
display: block;
text-align: center;
font-size: 15px;
font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, sans-serif;
}
#externalLinks ul {
list-style-type: none;
margin: 5px;
padding: 0;
}
#externalLinks li{float: left}
/* Geben an Link1, link2, link3 ; Farbe , Padding, .... */
li a, .dropbtn {
display: block;
color: #000;
padding: 8px 16px;
text-decoration: none;
}
li a:hover, .dropdown:hover .dropbtn { background-color: #f1ebeb;}
.dropdown-content {
display: none; /* display wird ausgeschaltet ,aber erlaubt die anderen elemente, position ,background ,.... */
font-size: 12px;
position: absolute; /* die stellung folgt der Erste Link(li) */
background-color: #f1f1f1 ;
min-width: 160px; /* macht größer die Inneren Links */
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); /* Bau ein Schatte und geben an dem Schatten Farbe */
z-index: 1; /* Zeigen die Ordnung wie die Links gezeigt werden... */
}
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none; /* Bekomme die Liks keine Unten Stricht ....*/
display: block;
}
.dropdown-content a:hover {
background-color: #9f9e9e;
}
/* Offnen die Innere Links */
.dropdown:hover .dropdown-content {
display: block;
left: 109px; /* zeigt wo dem innere link fenster gezeigt wird */
top: 214px; /* zeigt wo dem innere link fenster gezeigt wird */
}
/* Main */
input, textarea{
background:rgba(220,220,220,0.75);
border:1px solid rgba(220,220,220,0.75);
font:inherit;
border-radius:0.2941em;/*5px;*/
padding:0.4118em;/*7px;*/
/*farbigen Rahmen in Chrome und Safari abschalten.*/
outline:none;
}
input:focus, textarea:focus{
background:#fff;
border:1px solid #000;
outline: none; /* einige Browser add line auf input , das verhindert es... */
}
input[type=submit]{
background:#be633c;
border:none;
color:#fff;
border-radius:50% 50%;
box-shadow:inset 0 0 1em #fb9d23;
padding:0.5882em;/*10px*/
}
input[type=submit]:focus, input[type=submit]:active{
background-color:#A33202;
}
/* Footer */
#copry {
overflow: auto;
font-size: 2px;
list-style-type: none;
font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, sans-serif;
}
#img1 {float: left;margin-bottom: 3px;}
#copry a {text-decoration: none;margin-bottom: 3px;}
#copry p {font-size: 10px;margin-bottom: 0;}
/* Komment Button */
#comment:hover { box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);}
#comment {font-size: 11px;} /* Button from comment */
#form {font-size: 14px;} /* size from comment window */
</style>
</head>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0">
<title>Kontakt</title>
<style>
body {
background-color: #ebf5d7;
grid-gap: 5px;
grid-template-columns: 10% 72% 17%;
grid-template-areas:
"header header header"
"nav nav nav"
"linkBox linkBox linkBox"
"main main main"
"infoBox infoBox infoBox"
"footer footer footer" ;
}
@media screen and (min-width: 40em) {
body {
display: grid;
grid-template-columns: 10% 72% 17%;
grid-template-areas:
"header header header"
"nav nav nav"
"linkBox main infoBox"
"footer footer footer";
}
}
@media screen and (min-width: 30em) {
#externalLinks a {
text-decoration: none;
display: block;
text-align: center;
font-size: 15px;
font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, sans-serif;
}
li a, .dropbtn {
display: block;
color: #000;
padding: 8px 16px;
text-decoration: none;
}
}
body > header {
grid-area: header;
background-image: url("../f409784856.png");
padding: 60px;
}
body > nav {
grid-area: nav;
background-color: #d2f5c4;
}
body > #externalLinks {
grid-area: linkBox;
background-color: #d2f3c6;
;
}
body > main {
grid-area: main;
background-color: #eaf6e5;
}
body > #furtherInformation {
grid-area: infoBox;
background-color: #d2f3c6;
}
body > footer {
grid-area: footer;
background-color: #99ee7a;
}
/* Nav */
nav {background-color: #d2f5c4;}
nav a{
color: black;
text-decoration: none;
display: inline;
padding: 0px 8px;
font-size: 17px;
font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, sans-serif;
}
nav ul {list-style-type: none;}
nav li {display: block;display:inline-block;}
/* ExternalLinks */
#externalLinks a {
text-decoration: none;
display: block;
text-align: center;
font-size: 15px;
font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, sans-serif;
}
#externalLinks ul {
list-style-type: none;
margin: 5px;
padding: 0;
}
#externalLinks li{float: left}
/* Geben an Link1, link2, link3 ; Farbe , Padding, .... */
li a, .dropbtn {
display: block;
color: #000;
padding: 8px 16px;
text-decoration: none;
}
li a:hover, .dropdown:hover .dropbtn { background-color: #f1ebeb;}
.dropdown-content {
display: none; /* display wird ausgeschaltet ,aber erlaubt die anderen elemente, position ,background ,.... */
font-size: 12px;
position: absolute; /* die stellung folgt der Erste Link(li) */
background-color: #f1f1f1 ;
min-width: 160px; /* macht größer die Inneren Links */
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); /* Bau ein Schatte und geben an dem Schatten Farbe */
z-index: 1; /* Zeigen die Ordnung wie die Links gezeigt werden... */
}
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none; /* Bekomme die Liks keine Unten Stricht ....*/
display: block;
}
.dropdown-content a:hover {
background-color: #9f9e9e;
}
/* Offnen die Innere Links */
.dropdown:hover .dropdown-content {
display: block;
left: 109px; /* zeigt wo dem innere link fenster gezeigt wird */
top: 214px; /* zeigt wo dem innere link fenster gezeigt wird */
}
/* Main */
input, textarea{
background:rgba(220,220,220,0.75);
border:1px solid rgba(220,220,220,0.75);
font:inherit;
border-radius:0.2941em;/*5px;*/
padding:0.4118em;/*7px;*/
/*farbigen Rahmen in Chrome und Safari abschalten.*/
outline:none;
}
input:focus, textarea:focus{
background:#fff;
border:1px solid #000;
outline: none; /* einige Browser add line auf input , das verhindert es... */
}
input[type=submit]{
background:#be633c;
border:none;
color:#fff;
border-radius:50% 50%;
box-shadow:inset 0 0 1em #fb9d23;
padding:0.5882em;/*10px*/
}
input[type=submit]:focus, input[type=submit]:active{
background-color:#A33202;
}
/* Footer */
#copry {
overflow: auto;
font-size: 2px;
list-style-type: none;
font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, sans-serif;
}
#img1 {float: left;margin-bottom: 3px;}
#copry a {text-decoration: none;margin-bottom: 3px;}
#copry p {font-size: 10px;margin-bottom: 0;}
/* Komment Button */
#comment:hover { box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);}
#comment {font-size: 11px;} /* Button from comment */
#form {font-size: 14px;} /* size from comment window */
</style>
</head>
<body>
<header></header>
<nav>
<ul>
<li><a href="https://wiki.selfhtml.org/wiki/HTML/Seitenstrukturierung/nav">Home</a></li>
<li><a href="https://wiki.selfhtml.org/wiki/HTML/Tutorials/HTML5-Seitenstrukturierung">About Us</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
<aside id="externalLinks">
<ul>
<li class="dropdown">
<a href="#" class="dropbtn">Computer</a>
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
<a href="#">Link 4</a>
</div>
<li><a href="#">News</a></li>
<li><a href="#">Bucher</a></li>
</ul>
</aside>
<main>
<br>
<br>
<form action="" method="post" id="form">
<label>E-Mail: *<br><input placeholder="my e-mail" type="text" name="email"><br></label>
<br>
<label> Name: *<br><input placeholder="my name" type="text" name="name"><br></label>
<br>
<label> Message: <br><textarea cols="45" rows="6" name="message"></textarea><br></label>
<p>
<input type="submit" name="post" value="POST COMMENT" id="comment">
</p>
<br>
<h2>Comments:</h2>
</form>
<?php
$file = "test.txt";
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message'])) {
echo "<br>" . "<b>" . "<h3>*** Please enter all required fields ***</h3>" . "</b>";
}
else
{
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
}
if(isset($name) && isset($email) && isset($message)){
$data = array("name" => $name, "email" => $email, "message" => $message);
$data = serialize($data);
file_put_contents($file, $data . "\n", FILE_APPEND|LOCK_EX);
}
$messages = file($file);
foreach ($messages as $line) {
$data = unserialize($line);
echo "<br>";
echo "<b>" . "From:" . "</b>" . " " . $data["name"] . " ";
echo "<b>" . "at:" . "</b>" . " " . $date = date('m/d/Y h:i:s a', time()) . "<br><br>";
echo $data["message"] . "<br><hr>";
}
$messages = file($file);
?>
</main>
<aside id="furtherInformation"></aside>
<footer id="copry" >
<p>My Website: Linux and More © 2018. All Rights Reserved.</p>
<a id="img1" href="https://creativecommons.org/licenses/by-nc/4.0/"><img alt="Creative Commons License" width="120px" height="40px" src="../f409591688.png" ></a>
<p>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0<br> International License.
Content of this site cannot be republished<br> either online or offline without our permissions. </p>
</footer>
</body>
</html>
oder auch mein Code hier , hier
https://codepen.io/mezb/pen/qKjroP
so , ich habe ein Kopie von kontakt.php Datei auf mein Laptop gebracht , dort funzioniert alles Gut , ich bekomme was auf E-mail , name und Message geschrieben habe , das bedeutet das auf mein Rechner es fehlt etwas , aber ich weiss nicht was... , auf Synaptic ich habe alle PHP Datein installiert die mit einem Stern stehe , wie das Bild zeigt ...
Also, nach meinem Test waren die Eingaben in der Datei test.txt.
Vermutung: Der Webserver hat keine Schreibrechte an der Datei test.txt. Lösung: Datei anlegen und Rechte geben:
cd DEIN_VERZEICHNIS
touch test.txt
sudo chown www-data:www-data test.txt
sudo chmod 660 test.txt
<?php
header('Content-Type: text/html; Charset=utf-8');
Es kann auch sein, dass die beiden Leerzeichen vor dem '<?php' stören, weil danach womöglich der header-Befehl nicht mehr ausgeführt werden kann. Das ist von der PHP-Version und den Einstellungen abhängig. (Wahrscheinlich nicht bei Deinem Linux)
Vor einiger Tage habe habe einen große Fehler gemacht , habe mein Festplatte gelöscht...
Du hast den eigentlichen Fehler sehr viel früher gemacht. Man macht Backups um sich gegen solche Fehler zu sichern.
Dankeeeeeee ! , das war das Fehler !
ich wünsche dir ein schöne Tag !
Noch eine frage.... wenn ich mit Root rechten , öffnen der test.txt Datei , löschen alles was dort stehe , dann auf den Website Reload , die kommentaren werden gelöschen aber bleibt die zeit , From: at: 08/06/2018 04:05:51 pm wie das Bild zeigt
was kann machen um alles zu löschen ?
Die Ausgabe des Datums erfolgt durch:
echo "<b>" . "at:" . "</b>" . " " . $date = date('m/d/Y h:i:s a', time()) . "<br><br>";
Das bedeutet, dass immer das Datum und die Uhrzeit des ABRUFES angezeigt wird. In der Datei test.txt steht gar kein Datum:
a:3:{s:4:"name";s:3:"Ich";s:5:"email";s:13:"ich@localhost";s:7:"message";s:5:"Hallo";}
Also kann das Datum des Eintrages nicht ermittelt und angezeigt werden. Das bedeutet: Du musst hier was ändern:
if(isset($name) && isset($email) && isset($message)){
$data = array("name" => $name, "email" => $email, "message" => $message, "datetime" => date('m/d/Y h:i:s a', time()));
$data = serialize( $data );
file_put_contents( $file, $data . "\n", FILE_APPEND|LOCK_EX );
}
und natürlich:
echo "<b>" . "at:" . "</b>" . " " . $data["datetime"] . "<br><br>";
Außerdem hast Du in der Datei test.txt ganz offensichtlich 4 leere Zeilen, die Du nicht überspringst.
foreach ($messages as $line) {
$data = unserialize($line);
# …
}
Das muss geändert werden:
foreach ( $messages as $line ) {
if ( $line and $data = unserialize( $line ) ) {
# …
}
}
Das Löschen eines Inhalts einer Datei geht sehr bequem so:
~> truncate -s 0 test.txt
Du kannst das NICHT veröffentlichen! Der gesamte Code (PHP und HTML) ist aus irgendwelchen Quellen kopiert. Und dabei hast Du Sachen kopiert, von denen Du nicht verstanden hast, was diese tun. Und es sieht gefährlich aus. Eine böswillige Person kann Dir und anderen schaden, in dem diese z.B.
<script>alert('Iam a bad devil!');</script>
als Nachricht oder Name einträgt. (Das ist nur ein Beispiel, eine reale Handlung könnte sehr viel schädlicher sein. )
echo "<br>";
echo "<b>" . "From:" . "</b>" . " " . $data["name"] . " ";
echo "<b>" . "at:" . "</b>" . " " . $date = date('m/d/Y h:i:s a', time()) . "<br><br>";
echo $data["message"] . "<br><hr>";
das muss mindestens zu
echo "<br>"
. "<b>From:</b> " . htmlspecialchars( $data["name"] )
. " <b>at:</b> " . htmlspecialchars( $data["datetime"] )
. "<br><br>" . htmlspecialchars( $data["message"] )
. "<br><hr>";
werden und selbst dann ist das erzeugte HTML noch sehr schlecht.
Der Grund wird sein, dass Du Beispiele verwendest hast, welche teilweise ungefähr 20 Jahre alt sind. Genau sieht die Seite auch aus:
Das macht man heute nicht mehr. Man soll den Elementen ansehen, was diese bewirken.
Danke für deinen Hilfe , ich habe deine Code so geschrieben…
<?php
$file = "test.txt";
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message'])) {
echo "<br>" . "<b>" . "<h3>*** Please enter all required fields ***</h3>" . "</b>";
}
else
{
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
}
}
if(isset($name) && isset($email) && isset($message)){
$data = array("name" => $name, "email" => $email, "message" => $message, "datetime" => date('m/d/Y h:i:s a', time()));
$data = serialize( $data );
file_put_contents( $file, $data . "\n", FILE_APPEND|LOCK_EX );
echo "<b>" . "at:" . "</b>" . " " . $data["datetime"] . "<br><br>";
}
}
$messages = file($file);
foreach ( $messages as $line ) {
if ( $line and $data = unserialize( $line ) ) {
# …
echo "<br>"
. "<b>From:</b>" . htmlspecialchars( $data["name"] )
. "<b>at:</b>" . htmlspecialchars( $data["datetime"] )
. "<br><br>" . htmlspecialchars( $data["message"] )
. "<br><hr>";
~> truncate -s 0 test.txt
}
}
?>
aber die webseite wird nicht gezeigt....
Das hier ist kein PHP:
truncate -s 0 test.txt
Das sollst Du in einem Terminal ausführen um die Datei test.txt zu leeren.
Du muss unbedingt lernen, dass in der Datei /var/log/apache2/error.log
alle Fehler automatisch in englischer Sprache eingetragen werden.
Beim Entwickeln gehe wie folgt vor:
sudo tail -f -n /var/log/apache2/error.log
ein. Gib das Passwort ein, falls Du gefragt wirst.Hallo , ich habe gemacht was du Oben sagst aber ist nicht gezeigt , egal ... , ich habe die Datei geöffnet und zeigt das ....
[Mon Aug 06 18:21:43.458911 2018] [:error] [pid 15430] [client 127.0.0.1:36320] PHP Parse error: syntax error, unexpected '}', expecting end of file in /var/www/html/prove.php on line 360
[Mon Aug 06 18:21:47.684645 2018] [:error] [pid 7651] [client 127.0.0.1:36322] PHP Parse error: syntax error, unexpected '}', expecting end of file in /var/www/html/prove.php on line 360
was ich auf zeile hatte , war ein } ich habe ihn gelöscht , aber das Probleme bleibt ....
unexpected '}', expecting end of file
Du hast ein also ein '}' zu viel. Jetzt finde heraus wo. Ein guter Editor wird Dir dabei helfen.
Hallo , ich habe gemacht was du Oben sagst aber ist nicht gezeigt , egal ... , ich habe die Datei geöffnet und zeigt das ....
[Mon Aug 06 18:21:43.458911 2018] [:error] [pid 15430] [client 127.0.0.1:36320] PHP Parse error: syntax error, unexpected '}', expecting end of file in /var/www/html/prove.php on line 360
[Mon Aug 06 18:21:47.684645 2018] [:error] [pid 7651] [client 127.0.0.1:36322] PHP Parse error: syntax error, unexpected '}', expecting end of file in /var/www/html/prove.php on line 360
was ich auf zeile hatte , war ein } ich habe ihn gelöscht und noch andere Fehler welcher du frühr gesprochen hast , ~> truncate -s 0 test.txt , habe ihn gelöscht und jetzt bekomme die Website...
jetzt habe noch nach fehler gesucht und bekomme
[Mon Aug 06 18:36:18.894007 2018] [:error] [pid 15430] [client 127.0.0.1:36422] PHP Notice: unserialize(): Error at offset 0 of 1 bytes in /var/www/html/prove.php on line 376
und auf zeile 376 habe....
376 if ( $line and $data = unserialize( $line ) ) {
echo "<br>"
ich habe jetzt der Bluefish Editor installiert ....
Was hat das
# …
da zu suchen? Da war eine einzelne Zeile. Und ist ein Kommentar.
<?php
# …
echo "Hallo";
echo " Welt";
ergibt: Hallo Welt
Löschst Du aber einen Zeilenbruch ...
<?php
# … echo "Hallo";
echo " Welt";
... dann ergibt das: Welt
Bitte versuche ein Grundlagenbuch oder eine Webseite zum Erlernen von PHP in Deiner Muttersprache zu finden.
ich habe
…
geschrieben weil du geschriebst hast....
ich weiss echo für drück ist , ich weiss das ich keine ahnung von PHP have , deshalb ich frage , um jemand mir zu helfe…
ich versuche jemand frage mit deinem Code , vielleicht wegen Geld....
ich danke mir dich für deinem hilfe
ich habe
…
geschrieben weil du geschriebst hast.
Der "Kleine Unterschied" ist:
Ich habe
if ( $line and $data = unserialize( $line ) ) {
# …
echo "<br>"
geschrieben. Du hast:
if ( $line and $data = unserialize( $line ) ) {
# … echo "<br>"
geschrieben.
In einem Programm ist das oft ein großer Unterschied!
Merke Dir: "Computer sind so dumm, dass die schon bei dem Fehlen eines einzelnen Zeilenumbruchs wegen eines "Fehlers" nichts mehr machen - dafür aber genau und schnell!"