Was mache ich falsch

Ich wollte in php ein kleines Gästebuch schreiben.

_Quelltext:
Willkommen in meinem Gästebuch
Bitte schreiben sie hier ihre Nachricht:

if(isset($note)) {
$fp = fopen($guestbook.txt,„a“);
fputs($fp,nl2br($note)."
");
fclose($fp);
}
?>
Was andere bereits geschrieben haben:
@READFILE($guestbook.txt) ?>_

Mein Problem ist, dass wenn man auf den Senden-Button geht keine Reaktion kommt, außer das ide Seite nochmal geladen wird.

Was kann ich verändern, damit es klappt?

Moin,

Mein Problem ist, dass wenn man auf den Senden-Button geht
keine Reaktion kommt, außer das ide Seite nochmal geladen
wird.

Naja, die Seite soll sich ja auch selbst aufrufen.
Dann soll die Seite zwei Überschriften und dann ein Formular ausgeben.
Das auch, wenn das Formular abgeschickt wurde.

Was kann ich verändern, damit es klappt?

Du solltest prüfen, ob Du mit Deiner Servereinstellung in $note überhaupt einen Wert erhältst. Normalerweise heißt es $_POST[„note“].

Da gibts einen Fachbegriff dafür, wie diese Einstellung heißt, der mir aber gerade nicht einfällt.

Grüße,
-Efchen

das müsste die einstellung register_globals sein

so ziemlich alles… :frowning:
Hi,
der Hauptfehler wurde ja bereits genannt. Darüber hinaus folgende Hinweise:

nimm besser $_SERVER[‚SCRIPT_NAME‘] - das lässt sich nicht manipulieren.

wenn das funktioniert, sind noch short_open_tags aktiviert. Trotzdem solltest Du vorausschauend <?php angeben.

$fp = fopen($guestbook.txt,„a“);

das kann man zwar so simpel lösen, hat aber den Haken, dass man bei vielen Beiträgen ziemlich weit scrollen muss bis zum aktuellen. Daher gibt man die Beiträge eher chronologisch absteigend und ggf. unterteilt in mehreren Seiten aus.

@READFILE($guestbook.txt) ?>

abgesehen vom ist es übel, dass Du Usereingaben ungefiltert ausgibst. Da kann Dir jeder einigermaßen kundige User die Seite komplett umkrempeln. Nimm besser:

<?php if(file_exists($guestbook.txt)) echo htmlspecialchars(file_get_contents($guestbook.txt)); ?>

Gruß
Ingo

@READFILE($guestbook.txt) ?>

abgesehen vom ist es übel, dass Du Usereingaben ungefiltert
ausgibst. Da kann Dir jeder einigermaßen kundige User die
Seite komplett umkrempeln. Nimm besser:

<?php if(file_exists($guestbook.txt)) echo
htmlspecialchars(file\_get\_contents($guestbook.txt)); ?\>

nahcdem du es jetzt nochmal mit kopiert hast, fände ich es schon mal interessant, zu spekulieren zu was $guestbook.txt evaluiert wird :smile:

Moin,

nahcdem du es jetzt nochmal mit kopiert hast, fände ich es
schon mal interessant, zu spekulieren zu was $guestbook.txt
evaluiert wird :smile:

An sich zum Inhalt der Variablen $guestbook mit angehängtem „.txt“.
Folgt direkt auf den Variablenname ein Buchstabe, braucht es Klammern.

Grüße,
-Efchen

Hi,

dieser Fehler war mir doch glatt entgangen…

An sich zum Inhalt der Variablen $guestbook mit angehängtem
„.txt“.

nicht ganz. Der Punkt trennt die (nicht vorhandene) Variable von der (nicht definierten) Konstanten „txt“, so dass PHP zwar ggf. beides anmeckert, aber letztlich „txt“ draus macht.

Ein Tipp an den TE: ganz am Anfang error_reporting(E_ALL); setzen und bei der Entwicklung keine Fehler über @ unterdrücken.

Gruß
Ingo