Mfrank: Guestbook - submit funzt nicht !?

Hallo

Ich habe ein guestbook, das die Einträge in ein Textfile schreibt.
Das Anzeigen des Gästebuches funktioniert auch einwandfrei - nur wenn ich einen neuen Eintrag erstelle, wird dieser nicht geschrieben und das script springt zurück auf meine index-datei der HP.
Zur Veranschaulichung folgt der Quelltext... wäre nett wenn mir da jemand weiterhelfen könnte !!
Danke
Frank

*********************************
<?

$txt=fopen("guestbook/guestbook.gb","r");  // Pfad zur Datei

$gbfile="";
while($line=fgets($txt,3000))
$gbfile.=$line;

//name
if(isset($name))
if($name==""){
$errorfarbe_1 = "red";
$error = "fehler";
}
else{
$errorfarbe_1 = "black";
}

//comment
if(isset($comment))
if($comment==""){
$errorfarbe_2 = "red";
$error = "fehler";
}
else{
$errorfarbe_2 = "black";
}

if(!$aktion){
$aktion = "eingabe";
}

if($error=="fehler"||$aktion=="eingabe"){
?>
            <form method="post" action="<? echo $PHP_SELF;?>">
              <table border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td height="37"> <div class="text"><? echo $errorfarbe_1; ?>Name*  
                    <input type="text" name="name" size="30" <? if(isset($name)) echo "value='$name'";?></div>
                  </td>
                </tr>
    <tr>
                  <td height="37"> <div class="text">mail       
                    <input type="text" name="mail" size="30"></div>
                  </td>
                </tr>
    <tr>
                  <td height="37"> <div class="text">site       
        <input type="text" name="site" size="30" value="http://"></div>
                  </td>
                </tr>
                <tr valign="top">
                  <td valign="top"> <div class="text"><? echo $errorfarbe_2; ?>Kommentar*  
                    <textarea name="comment" cols="30" rows="5"><? if(isset($comment)) echo "$comment";?></textarea></div>
                  </td>
                </tr>
                <tr align="right">
                  <td>
                    <input type="submit" name="Button" value="eintragen">
     <input type="Hidden" name="aktion" value="senden">
                  </td>
                </tr>
              </table>
              <br>
            </form>
              <div class="text">
     <? echo "  $gbfile  "?>
<?

}else{

if(isset($name)&&isset($comment)&&isset($mail)&&isset($site))
{
 $name=stripslashes(strip_tags($name));
 $comment=stripslashes(strip_tags($comment));
 $mail=stripslashes(strip_tags($mail));
 $site=stripslashes(strip_tags($site));
 //mail("webmaster@kstv-ravensberg.de","Gästebucheintrag - KStV Ravensberg","name: $name\nText:$comment");   //Bestätigungsemail

$gbfile=" <font color='black'><b>$name</b> - ".date("m/d/Y")."<br>\n<a href='mailto:$mail'>$mail</a>\n"."<br>\n<a href='$site' target='blank'>$site</a>\n"."<br>\n$comment<br><br>\n</font>".$gbfile;
 fclose($txt);
 $txt=fopen("guestbook/guestbook.gb","w");     // Pfad zur Datei
 fputs($txt,$gbfile);
}
echo "
<div class='text'><a href='guestbook/guestbook.php' target='_self'>Neuer eintrag</a><br><br> " . $gbfile . "</div>";
fclose($txt);
}
?>
************************************+

  1. Hallo

    Ich habe ein guestbook, das die Einträge in ein Textfile schreibt.
    Das Anzeigen des Gästebuches funktioniert auch einwandfrei - nur wenn ich einen neuen Eintrag erstelle, wird dieser nicht geschrieben und das script springt zurück auf meine index-datei der HP.
    Zur Veranschaulichung folgt der Quelltext... wäre nett wenn mir da jemand weiterhelfen könnte !!
    Danke
    Frank

    *********************************
    <?

    $txt=fopen("guestbook/guestbook.gb","r");  // Pfad zur Datei

    Lese noch mal genau hier nach (http://www.php4-forum.de/befehle/fopen.htm), was "r" beim Öffnen einer Datei bewirkt. Dann löst sich das Problem.

    Ulrich

    1. Hallo

      $txt=fopen("guestbook/guestbook.gb","r");  // Pfad zur Datei

      Lese noch mal genau hier nach (http://www.php4-forum.de/befehle/fopen.htm), was "r" beim Öffnen einer Datei bewirkt. Dann löst sich das Problem.

      Nein, daran liegt es nicht !!!
      Es bleibt das selbe Problem :(((

      Frank

      1. Hallo

        $txt=fopen("guestbook/guestbook.gb","r");  // Pfad zur Datei

        Lese noch mal genau hier nach (http://www.php4-forum.de/befehle/fopen.htm), was "r" beim Öffnen einer Datei bewirkt. Dann löst sich das Problem.

        Nein, daran liegt es nicht !!!
        Es bleibt das selbe Problem :(((

        Ausserdem steht weiter unten nochmal:
        $txt=fopen("guestbook.gb","w");
        ;-)
        Frank

  2. Hallo,

    ein paar Tipps. Vielleicht helfen sie ja:

    Hauptprogramm aus Funktionen aufbauen

    • prüfen
    • schreiben
    • lesen
      (- Satz holen und aufbereiten)   // braucht man nur, wenn man Seitenweise anzeigen will.
    • anzeigen/eingeben

    In der Funktion prüfen() solltest Du den Datensatz so aufbeeiten, dass er mit append an die Textdatei angehängt werden kann. Dazu muss Du die NewLines ersetzen. str_replace() ist Dein Freund. Ich würde sie auch nicht rausschmeißen, sondern nur ersetzen z.B. gegen ein chr(127). Dann kann man es später wieder zurückersetzen.

    Jeder Datensatz in Deiner Datei ist nämlich durch \n abgeschlossen.

    Es gibt da noch ein Gästebuch auf http://www.bitworks.de/programme/guestbook.php.txt das Du Dir mal anschauen kannst. Es funktioniert. Ich habe aber auch noch nicht alle Fehler rausgebaut. Das kann man noch sauberer schreiben.

    Grüße

    Tom