Hallo nochmal,
$daten=$_POST[eintrag]."<br>von<br>"
$daten=$_POST[name]."<br><br>";
Der Schlüssel der Variablen muss in Anführungszeichen stehen:
$_POST['name'] statt $_POST[name].
Die 1. Zeile müsste mit einem Semikolon (;) aufhören.
In der 2. Zeile überschreibst Du den Inhalt der Variable.
Um weiteren Inhalt an eine String-Variable dranzuhängen,
müsstest Du es mit .= schreiben, also so:
$daten=$_POST['eintrag']."<br>von<br>";
$daten.=$_POST['name']."<br><br>";
Oder gleich so:
$daten=$_POST['eintrag']."<br>von<br>".$_POST['name']."<br><br>";
Allerdings ist das ganze Vorgehen sehr gefährlich.
Du übernimmst einfach das, was der Benutzer eingibt,
und schreibst es ohne Prüfung in die Daten-Datei,
welche Du später ebenfalls ohne Prüfung den Besuchern
auslieferst.
Beschäftige Dich mal grundsätzlich mit dem Thema Sicherheit.
Sinnvoll wäre zumindest mal ein strip_tags().
Und damit gewisse Sonderzeichen (<,>,",&) am Ende
(wenn das Gästebuch angezeigt wird) korrekt angezeigt
werden, musst Du sie mit htmlspecialchars() umwandeln.
/* Variablen putzen: */
$eintrag2=htmlspecialchars(strip_tags($_POST['eintrag']));
$name2=htmlspecialchars(strip_tags($_POST['name']));
/* String, der gespeichert werden soll, zusammensetzen: */
$daten="<p>Eintrag von $name2<br>$eintrag2</p>\n";
$eintragen = "eintragen.txt";
$datei = fopen($eintragen,"a");
Hier fehlt eine saubere Fehlerbehandlung.
Du musst zuerst kontrollieren, ob die Datei eintragen.txt
überhaupt existiert und ob sie beschreibbar ist.
Das erledigt die Funktion is_writable().
Erst wenn diese Prüfung erfolgreich war,
solltest Du die Datei mit fopen() öffnen.
Und auch dann wieder: Testen ob das Öffnen und Schreiben
erfolgreich war, andernfalls Fehlermeldung (oder so).
Also z.B. so etwas (Code ungetestet):
if (is_writable($eintragen))
{
$datei = fopen($eintragen,"a");
if ($datei===false)
{ echo "Fehler - Datei konnte nicht geöffnet werden."; }
else
{
if (fwrite($datei,$daten)===false)
{ echo "Fehler - Daten können nicht gespeichert werden."; }
else
{ echo "Daten wurden erfolgreich gespeichert."; }
fclose($datei);
}
}
$datenbank = "daten.dat"; $datei = fopen($datenbank,"r");
fpassthru($datei);
Hier heisst die Daten-Datei plötzlich daten.dat - oben hiess sie
eintragen.txt - das kann nicht gutgehen...
Ausserdem ist $datenbank ein etwas unglücklicker Dateiname
für eine normale Text-Datei...
Auch hier wieder:
Vor dem öffnen prüfen, ob die Datei überhaupt existiert - z.B.
mit file_exists() - dann erst mit fopen() öffnen und mit
fpassthru() den Inhalt durchschleusen.
Alternativ könnte man den Inhalt auch mit readfile() ausgeben.
(Das hat den Vorteil, dass man sich das fopen() sparen kann.)
$ausgaberesultat=readfile($datenbank);
if ($ausgaberesultat==false)
{ echo "Datei mit den Einträgen konnte nicht eingelesen werden."; }
Wenn ich auf die Schaltfläche "Absenden" klicke, kommt keine saubere Seite, dann erscheint so:
"von
" $daten=$_POST[name].""; $eintragen = "eintragen.txt"; $datei = fopen($eintragen,"a"); fwrite($datei, $daten); ?> Eintrag erfolgreich. Zurück zum Gästebuch"
Wo ist der Fehler?
Dein Webserver kann offenbar kein PHP, oder er wendet es zumindest
bei dieser Datei (gb.php) nicht an.
Wende Dich an Deinen Webhosting-Anbieter, um zu erfahren, was Du
machen musst, damit PHP läuft.
(Dir ist ja hoffentlich schon klar, dass PHP auf Deinem eigenen
Rechner nicht funktioniert, es sei denn, Du hast dort drauf
einen Webserver am laufen, der PHP kann...)
HTH, mfg
Thomas