liebewinter: Kommentar wird nicht geschrieben

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

Folgende Nachrichten verweisen auf diesen Beitrag:

  1. 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 ...

    PHP Dateien die installier habe

  2. 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.

    1. Dankeeeeeee ! , das war das Fehler !

      ich wünsche dir ein schöne Tag !

      1. 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

        screenshot kommenter nicht löscht alles

        was kann machen um alles zu löschen ?

        1. 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

          Das Wichtigste:

          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.

          1. 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....
            1. 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:

              1. Öffne ein Terminal
              2. Tippe sudo tail -f -n /var/log/apache2/error.log ein. Gib das Passwort ein, falls Du gefragt wirst.
              3. Lass das Terminal offen, während Du die Webseite abrufst.
              4. Schau in diesem Terminal nach, welche Fehler hinzugekommen sind. Und werte die Fehlermeldungen (auch die Notizen!) aus.
              1. 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 ....

                1. unexpected '}', expecting end of file

                  Du hast ein also ein '}' zu viel. Jetzt finde heraus wo. Ein guter Editor wird Dir dabei helfen.

                2. 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...

                  1. 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 ....

                    1. 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.

                      1. 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

                        1. 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!"