Kleines Kommentar-Script: finde Fehler nicht

Hallo Zusammen!

Ich hab ein wirklich sehr kleines Kommentar-Script geschrieben, aber es funktioniert nicht. Könnt ihr mir helfen?

postcomment.php

Dein Vorname:
Dein Kommentar:

getcomment.php

$name = echo . $\_POST[" **vorname**"];
 $comment = echo . $\_POST["yourcomment"];
 $datei = fopen("comment.php", r+);
 fwrite($name, $comment);
 fclose($datei);

Gruß mnapster

Hallo mnapster,

zum Formular:

Dein Vorname:
Dein Kommentar:

Das sieht auf den ersten Blick okay aus, aber warum heißt das Feld für den Kommentar „yourname“? In der getcomment.php greifst du nämlich auf $_POST[„yourcomment“] zu und das existiert dann nicht. Das musst du also am Formular noch entsprechend ändern:

Dein Vorname:
Dein Kommentar:
Nun zum PHP-Script:

$name = echo . $_POST[„vorname“];
$comment = echo . $_POST[„yourcomment“];
$datei = fopen(„comment.php“, r+);
fwrite($name, $comment);
fclose($datei);

Wenn ich das richtig lese, willst du also die Formulardaten formatiert in die comment.php schreiben, inklusive des echo-Befehls, um sie auszugeben. Dabei machst du gleich so ziemlich alles falsch, was man falsch machen kann. :wink: Die HTML-Formatierungen dürfen nicht im Array-Bezeichner stehen, sondern außerhalb von $_POST[]. Beispielsweise existiert $_POST[„vorname“] gar nicht, wohl aber $_POST[„vorname“]. PHP nimmt es da zurecht sehr genau und gibt sonst einen Leerstring aus. Außerdem fehlen in den Strings $name und $comment die abschließenden Semikola, also nicht die des aktuellen Befehls, sondern die derjenigen, die in die comments.php geschrieben werden sollen. Und natürlich gehört dann bereits das „echo“ mit in die Anführungszeichen, die Anführungszeichen innerhalb der Strings müssen mit Backslash „escaped“ (Wer weiß dafür ein gutes, deutsches Wort?) werden. Damit es bei der Anzeige und beim Includen kein Problem gibt, sollten noch die PHP-Tags eingefügt werden, und der Übersicht halber noch Zeilenumbrüche. Beim Befehl fwrite() fehlt die Angabe der zu schreibenden Datei. Zur Kontrolle kannst du das Ganze am Ende oder an jeder beliebigen Stelle, wo der Kommentar erscheinen soll, per include() ausgeben lassen. Außerdem öffnest du die Datei comment.php besser mit dem Parameter „a+“, um weitere Kommentare anzuhängen. Wenn du den Kommentar jedesmal überschreiben willst, bleibst du einfach bei „r+“ (die Anführungszeichen sind erforderlich). Ich würde es einfach mal so probieren:

<?php $name = "<?php echo \"</p>Name: ".$\_POST['vorname']."\";\r";
$comment = "echo \"
Kommentar: ".$\_POST['yourcomment']."\";?\>\r";
$zusammen = $name.$comment;
$datei = fopen("comment.php", "a+");
fwrite($datei,$zusammen);
fclose($datei);
include("comment.php");
?\>

Du musst aber vorher bei allen und noch die Leerzeichen entfernen. Die habe ich nur wegen der Darstellbarkeit hier im Forum eingefügt.

LG
Huttatta

Vielen Dank erstmal. Ich hab jetzt noch ne Frage: Ich versuche die ganze Zeit jetzt weiter oben noch eine Zeile mit dem Datum anzuhängen.

$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);

Ich kriegs aber nicht hin diese Zwei Informationen in einem String zu vereinen und in die Datei zu schreiben (unter $time). Also dann:

<?php $datum = date("d.m.Y",$timestamp);<br />$uhrzeit = date("H:i",$timestamp);
$time = "<?php echo ... //mach ich iwie immer noch falsch :frowning: <br />$name = "echo \"Name: **".$\_POST['yourname']."**\";\r";
$comment = "echo \"
Kommentar: ".$\_POST['yourcomment']."\";?\>\r";
$zusammen = $time.$name.$comment;
$datei = fopen("comments.php", "a+");
fwrite($datei,$zusammen);
fclose($datei);
include("comments.php");
?\>

ich haette den ursprungspost echt genauer lesen sollen - s.u.

Ganze am Ende oder an jeder beliebigen Stelle, wo der
Kommentar erscheinen soll, per include() ausgeben lassen.
Außerdem öffnest du die Datei comment.php besser mit dem
Parameter „a+“, um weitere Kommentare anzuhängen. Wenn du den
Kommentar jedesmal überschreiben willst, bleibst du einfach
bei „r+“ (die Anführungszeichen sind erforderlich). Ich würde
es einfach mal so probieren:

<?php :blush:name = "<?php echo \"Name: ".$\_POST['vorname']."\";\r"; $comment = "echo \" Kommentar: ".$\_POST['yourcomment']."\";?\>\r"; $zusammen = $name.$comment; $datei = fopen("comment.php", "a+"); fwrite($datei,$zusammen); fclose($datei); include("comment.php"); ?\>

kann es sein, dass ihr auszufuehrenden code ungefiltert aus userinput erstellen wollt?
das ist selbst fuer hobbyisten absolut unzulässig.

$datei = fopen("comment **.txt**", "a+");
fwrite($datei,$zusammen);
fclose($datei);

print file\_get\_contents("comment.txt");

Hallo Jörg,

kann es sein, dass ihr auszufuehrenden code ungefiltert aus
userinput erstellen wollt?
das ist selbst fuer hobbyisten absolut unzulässig.

mir ging es zwar nur darum, das vorgegebene Stück Code zum Funktionieren zu bringen, aber da hast du natürlich absolut Recht.

LG
Huttatta

versuch mal hier mit:

<?php $datum = date("d.m.Y");<br />$uhrzeit = date("H:i");
$time = $datum.' '.$uhrzeit;

$name = $\_POST['yourname'];
$comment = $\_POST['yourcomment'];
$zusammen = $time.'

Name: **'.$name.'** Kommentar:'.$comment.' ';   
$datei = fopen("comments.php", "a+");  
fwrite($datei,$zusammen);  
fclose($datei);  
include("comments.php");  
?\>