PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einfaches PHP-Gästebuch Problem



Bellerophon
08-07-2003, 15:52
Hallo liebe Leute!
Ich bin ein absoluter Newbie in PHP und habe mich mal an einem Gästebuch versucht. Ich finde, dass man sich nur sachen auf den Server packen sollte, von denen man auch Ahnung hat und deshalb versuche ich halt, mein Gästebuch selber zu schreiben.
Nun steh ich aber vor einem Problem, dass sich nicht lösen lässt.
Hier erstmal das Script:

<?php
/* hier ist der HTML Code*/
echo "<html>";
echo "<body>";
echo "<center>";
echo "<h2>Gästebuch</h2>";
echo "<form action='guestbook.php3' method='get'>";
echo " Ihr Name:<br>";
echo " <input type='text' name='new_name'><br>";
echo " Ihr Eintrag:<br>";
echo " <textarea name='eingabe' rows='7' cols='35'></textarea><br>";
echo " <input type='Submit' name='send' value='Eintragen'>";
echo "</form>";
echo "</body>";
echo "</html>";

$bookfile="guestbook.dat";
/* Testausgabe der oben eingegebenen Variablen*/
echo ("Name:".$new_name);
echo ("Eingabe:".$eingabe);

/* Test, ob überhaupt was eingegeben wurde. Wenn ja, wird es geschrieben.*/
If ($eingabe<>"")
write_input($new_name,$new_input,$bookfile);

/* Auslesen der bisherigen Einträge*/
read_file($bookfile);

/* Funktion zum Schreiben neuer Einträge*/
function write_input($new_name,$eingabe,$bookfile){
$fd = fopen($bookfile,"a");
fwrite ($fd, "<br><b>".$new_name.":</b><br>".$eingabe."\r\n");
fclose ($fd);
}

/* Funktion zum Lesen vorhandener Einträge*/
function read_file ($bookfile){
$fd = fopen($bookfile,"r");
while (!feof($fd)) {
$zeile = fgets($fd,1000);
echo $zeile . "<br>";
}
fclose ($fd);
}
?>
Den HTML-Code habe ich nur in den PHP-Bereich gepackt, weil ich dachte, es gäbe vielleicht Probleme bei der Übergabe der Variablen vom Formular.
Der Fehler liess sich so weit eingrenzen, dass es wohl wirklich an der Übergabe der Variablen liegt. Die Testausgabe von $eingabe und $new_name ergibt jedesmal nichts. Wenn ich die Datei in der die Einträge gespeichert werden von hand mit Inhalt fülle, werden diese auch ausgelesen...
Also, Fachmänner/frauen/kinder/ausserirdische/oderwasauchimmerihrseid!!! WORAN LIEGTS? Ich komm echt nicht dahinter!
Vielen Vielen Dank im Vorraus!
Bellerophon

offe
08-07-2003, 15:54
Hallo,

suche doch mal im Forum nach register_globals

Offe

Bellerophon
08-07-2003, 16:13
OkOk... Ich wusste halt nur nicht wonach ich suchen sollte... Wie Gesagt... NEWBIE!
Aber Danke für den Tip! Jetzt läuft alles wie am Schnürchen. Gibt es eigentlich einen PHP Befehl, mit dem man automatisch ne neue Seite aufrufen kann. So, dass z.B. direkt nach dem Schreiben des Gästebucheintrags eine neue Internetseite aufgerufen wird?
Wäre toll, wenn mir da auch noch jemand helfen könnte!
Bellerophon

Gaert
08-07-2003, 16:53
Hallo!

Ich hoffe du hast register_globals nicht aktiviert, sondern verwendest $_GET, $_POST...

In PHP kann man mit der Funktion header() den header eines HTML Dokuments manipulieren.
Mit header("Location: http:/deinesete.net/wasauchimmer.php") leitest du das Skript direkt auf diese Seite weiter.
header() funktioniert nur, wenn noch keine Ausgabe (egal ob über echo, fFehlermeldungen oder auch Zeilenumbrüche oder Leerzeichen, etc.) erfolgt ist, da die Header logischerweise am Anfang einer HTML Seite stehen und diese nicht mehr verändert werden können, wenn das erste Zeichen zum Browser gesendet wurde.
Mehr Infos zu header() findest du hier: http://de3.php.net/header

offe
09-07-2003, 07:14
Hallo,

> OkOk... Ich wusste halt nur nicht wonach ich suchen sollte... Wie Gesagt... NEWBIE!

sollte keine Kritik sein.

Offe

Bellerophon
09-07-2003, 09:52
Hallo zusammen!

@offe: War auch nicht als Kritik gemeint. Ich weiss halt nur aus Erfahrung, dass es nervt, wenn 1000x die selbe Frage in nem Forum gestellt wird. Diesmal wusste ich aber echt keinen Rat und deshalb auch keinen Suchbegriff... Wollte mich nur erklären, dass war alles!

@Gaert: Hmmm... Das ist glaub ich nicht das, was ich brauche. Ich will das Gästebuch trennen. undzwar in eine Seite zum Eingeben der Komentare und in eine zum Anzeigen des Gästebuchs. Jetzt such ich nach einer Möglichkeit, dass der User nach dem Speichern seines Eintrags direkt zur Ansicht des Gästebuchs kommt, dass also direkt nach dem Speichern eine neue Seite geladen wird, ohne das der User auf einen Link klicken muss. Geht das irgendwie?

Bellerophon
09-07-2003, 10:14
Ok, habs selber rausgefunden... Hab einfach einen Javascript-Redirect-Befehl per echo in der Write-Funktion eingebaut...

function write_input($new_name,$eingabe,$bookfile){
$fd = fopen($bookfile,"a");
fwrite ($fd, "<br><b>".$new_name.":</b><br>".$eingabe."\r\n");
fclose ($fd);
echo "<SCRIPT language='JavaScript'>";
echo "{";
echo "location.replace('guestread.php');";
echo "}";
echo "</script>";
}

Gibt es denn noch eine elegantere, vieleicht PHP basierte Möglichkeit?
Danke nochmal für die umfangreiche Hilfe!

Gaert
09-07-2003, 10:47
Doch, das was ich gesagt habe ist genau das was du suchst!


function write_input($new_name,$eingabe,$bookfile){
$fd = fopen($bookfile,"a");
fwrite ($fd, "<br><b>".$new_name.":</b><br>".$eingabe."\r\n");
fclose ($fd);
header("Location: guestread.php");
}