Mastershrimp: Shoutbox/Gästebuch: Einträge doppelt erstellt

Hallo!

Ich habe folgendes Problem:
Ich wollte zum Festigen meiner (noch rel. geringen) PHP-Kenntnisse eine Art Shoutbox oder Gästebuch machen. Bis jetzt hat auch alles gut geklappt, doch wenn ich jetzt einen Eintrag abschicke, wird er 2x erstellt. Einmal mit Inhalt und einmal ohne....

Ich habe den Code aus einem Buch übernommen und etwas abgespeckt, da ich nicht alle Funktionen brauchte. Meiner Ansicht nach sind aber alle relevanten Elemente übernommen - es müsste also funktionieren.

Hier könnt ihr das Phänomen mal begutachten:
http://mitglied.lycos.de/mastershrimp/shoutbox.html

Das dazugehörige PHP-Script befindet sich in der Datei "shoutbox.php":

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Shoutbox-PHP-Script</TITLE>
</HEAD>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?">

<?php

$benutzer=$HTTP_POST_VARS['Name'];
 $kommentar=$HTTP_POST_VARS['Kommentar'];
 $titel=$HTTP_POST_VARS['Titel'];

$punkt=".";
 $dpunkt=":";

$datum=date(d);
 $datum.=$punkt;
 $datum.=date(m);
 $datum.=$punkt;
 $datum.=date(Y);

$zeit=date(G);
 $zeit.=$dpunkt;
 $zeit.=date(i);
 $zeit.=$dpunkt;
 $zeit.=date(s);

$eintrag="<!-- Beginn -->";
 $eintrag.="\n<br><div class='eintrag'>";
 $eintrag.=$benutzer;
 $eintrag.=" schrieb am ";
 $eintrag.=$datum;
 $eintrag.=" um ";
 $eintrag.=$zeit;
 $eintrag.=" folgendes Kommentar: ";
 $eintrag.="\n<br>";
 $eintrag.=$kommentar;
 $eintrag.="\n<br></div>";

$bol=file_exists('shoutbox.html');
 if($bol)
  {
   $datei=fopen("shoutbox.html","r");
   if($datei)
    {
     $dateigroesse=filesize("shoutbox.html");
     $inhalt=fread($datei,$dateigroesse);
     fclose($datei);
    }
   $ersetzen=str_replace("<!-- Beginn -->",$eintrag,$inhalt);
  }
 $bol=file_exists("shoutbox.html");
 if($bol)
  {
   $datei=fopen("shoutbox.html","w");
   if($datei)
    {
     $output=fwrite($datei,$ersetzen);
     fclose($datei);
     $ergebnis="Danke für deinen Eintrag!";
     $ergebnis.="\n<br>";
     $ergebnis.="<a href='shoutbox.html'>Zurück zur Hauptseite!</a>";
     print($ergebnis);
    }
  }

?>

</BODY>
</HTML>

Der Rest ist in der Datei "shoutbox.html":

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Shoutbox v.1.0a</TITLE>

<style type="text/css">
<!--
 body
     {
      background-color:#4A4A4A; margin: 0.5cm;
      text-align:center; color:FFFFFF; font-size:10pt; font-family:Arial,Verdana;
     }

td { color:FFFFFF; font-size:10pt; font-family:Arial,Verdana; }

input.eingabe{ background-color:#4A4A4A; color:#FFFFFF; font-family:Courier; border-style:solid; border-width:1px; border-color:#FFFFFF; }

textarea.eingabe{ background-color:#4A4A4A; color:#FFFFFF; font-family:Courier; border-style:solid; border-width:1px; border-color:#FFFFFF; }

input.button{ color:#FFFFFF; background-color:#4A4A4A; font-size:8pt; font-family:Arial; border-style:solid; border-width:1px;}

*.eintrag{ width:400px; border-style:solid; border-color:#FFFFFF; border-width:1px; background-color:#4A4A4A; color:#FFFFFF; padding:10px; }
-->
</style>

</HEAD>

<BODY>

<h3>Shoutbox</h3>
<form action="shoutbox.php" method="post">

<TABLE ALIGN="center" BORDER=0 CELLSPACING=10 CELLPADDING=0 WIDTH="280">
<TR ALIGN="left" VALIGN="middle">
 <TD>Dein Name:</TD>
 <TD><input class="eingabe" type="text" name="Name" size="20" maxlength="20"></TD>
</TR>
<TR ALIGN="left" VALIGN="middle">
 <TD>Titel:</TD>
 <TD><input class="eingabe" type="text" name="Titel" size="20" maxlength="20"></TD>
</TR>
<TR ALIGN="left" VALIGN="top">
 <TD>Dein Kommentar:</TD>
 <TD><textarea class="eingabe" name="Kommentar" rows="7" cols="18"></textarea></TD>
</TR>
<TR ALIGN="center" VALIGN="middle">
 <TD colspan="2"><input class="button" type="submit" value="Senden">   <input class="button" type="reset" value="Reset"></TD>
</TR>
</TABLE>
</form>
<hr width="50%">
<br>
Bisherige Einträge:
<br>
<br>
<!-- Beginn -->

</BODY>
</HTML>

Weiß jemand, wie ich das Doppelposting-Phänomen beheben kann?

Danke im Vorraus!

Gruß

Mastershrimp

  1. Moin!

    Hier könnt ihr das Phänomen mal begutachten:
    http://mitglied.lycos.de/mastershrimp/shoutbox.html

    Da ist kein Phänomen, das den beschriebenen Fehler zeigen würde. Funktioniert alles.

    - Sven Rautenberg

    --
    "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
    (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
    1. Wenn du etwas postest, wird dann nur 1 Eintrag eingefügt?

      Bei mir steht immer ein Eintrag vom "Gästebuchterminator" und darüber ein leerer Eintrag...

      Ungefähr so:

      Bisherige Einträge:

      --------------------------------------------

      schrieb am 07.12.2003 um 17:02:48 folgendes Kommentar:

      --------------------------------------------

      Gästebuchterminator schrieb am 07.12.2003 um 17:02:47 folgendes Kommentar:

      Der

      --------------------------------------------

      schrieb am 07.12.2003 um 17:01:57 folgendes Kommentar:

      --------------------------------------------

      Gästebuchterminator schrieb am 07.12.2003 um 17:01:56 folgendes Kommentar:

      Der

      --------------------------------------------

      fgfgf schrieb am 07.12.2003 um 16:59:41 folgendes Kommentar:

      fgfgfgfgfg
      ffg

      --------------------------------------------

      schrieb am 07.12.2003 um 16:59:13 folgendes Kommentar:

      kpooipoi

      --------------------------------------------

      schrieb am 07.12.2003 um 16:54:47 folgendes Kommentar:

      --------------------------------------------

      Max schrieb am 07.12.2003 um 16:54:47 folgendes Kommentar:

      Test der Shoutbox!
      blablablablabla

      --------------------------------------------

      Du siehst, es steht über dem eigentlichen Eintrag noch ein Eintrag, wo das Kommentar, der Titel und der Name fehlen.

      Oder ist das nur bei mir so? Würde mich bei PHP wundern...

      Weißt du noch was?

      Gruß

      Mastershrimp

      1. Moin!

        Wenn du etwas postest, wird dann nur 1 Eintrag eingefügt?

        Exakt.

        Das sind die zwei Einträge von mir:


        fgfgf schrieb am 07.12.2003 um 16:59:41 folgendes Kommentar:

        fgfgfgfgfg
        ffg


        schrieb am 07.12.2003 um 16:59:13 folgendes Kommentar:

        kpooipoi


        Du siehst, es steht über dem eigentlichen Eintrag noch ein Eintrag, wo das Kommentar, der Titel und der Name fehlen.

        Oder ist das nur bei mir so? Würde mich bei PHP wundern...

        Ich bin nach dem Schreiben nicht wirklich zurück auf die Ergebnisseite gekommen. Da mußte ich manuell nachhelfen. Aber schätzungsweise ist Lycos mit der Scheißwerbung dran Schuld.

        - Sven Rautenberg

        --
        "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
        (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
        1. Ich bin nach dem Schreiben nicht wirklich zurück auf die Ergebnisseite gekommen. Da mußte ich manuell nachhelfen. Aber schätzungsweise ist Lycos mit der Scheißwerbung dran Schuld.

          Hmm. Ich glaub nicht.
          Der Verlag des Buches bietet nämlich auf seiner Homepage alle PHP-Dateien zum Download an. Wenn ich die Original-Datei hochlade, funktioniert alles. Also _muss_ der Fehler an meinem Script liegen.

          Der Link zur Original-Datei: http://mitglied.lycos.de/mastershrimp/start.html

          Die dazugehörige PHP-Datei:

          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <title>Gästebuch</title>
          </head>
          <body>
          <?php
            $nachname=$HTTP_POST_VARS['nachname'];
            $kommentar=$HTTP_POST_VARS['kommentar'];
            $mail=$HTTP_POST_VARS['mail'];

          $punkt=".";
            $dpunkt=":";

          //Zuerst Datum und Uhrzeit generieren:
            $datum = date("d");
            $datum .=$punkt;
            $datum .=date("m");
            $datum .=$punkt;
            $datum .=date("Y");
            $zeit = date("G");
            $zeit .=$dpunkt;
            $zeit .=date("i");
            $zeit .=$dpunkt;
            $zeit .=date("s");

          //Jetzt neuen Gästebuch-Eintrag erzeugen:

          $eintrag = "<!--Beginn-->\n";
            $eintrag.="<p><div style='font-family:arial; font-size:10pt'><b>Name: </b>";
            $eintrag.=$nachname;
            $eintrag.="<br>\n<b>Email: </b><a href = 'mailto:";
            $eintrag.=$mail;
            $eintrag.="'>";
            $eintrag.=$mail;
            $eintrag.="</a><br>\n<b>Datum: </b>";
            $eintrag.=$datum;
            $eintrag.=" um ";
            $eintrag.=$zeit;
            $eintrag.="<br>\n<b>Kommentar: </b>";
            $eintrag.=$kommentar;
            $eintrag.= "</div></p><br><br>\n";

          //Jetzt Gästebuch-Datei laden...

          $bol=file_exists("start.html");
            if ($bol) {
              $datei = fopen("start.html","r");
              if ($datei) {
                $dateigroesse=filesize("start.html");
                $inhalt = fread($datei, $dateigroesse);
                fclose($datei);
               }

          // Jetzt den neuen Eintrag einfügen

          $ersetzen = str_replace ("<!--Beginn-->", $eintrag , $inhalt);

          }

          // Jetzt aktualisiertes Gästebuch schreiben:

          $bol=file_exists("start.html");
            if ($bol) {
              $datei= fopen("start.html","w");
              if ($datei) {
                $output = fwrite($datei,$ersetzen);
                fclose($datei);
                print("<h2>Vielen Dank für Ihren Gästebuch-Eintrag!</h2>");
               }
            }
          ?>
          </body>
          </html>

          Gruß

          Mastershrimp

          1. Hmm. Ich glaub nicht.

            Glaub es:

            2003-12-07 18:08:14 | POST | /shoutbox.php  | 200 | /shoutbox.html
              2003-12-07 18:08:15 | GET  | /shoutbox.php? | 200 | /shoutbox.php

            Und Mozilla ist da noch recht friedlich, mein IE ruft shoutbox.php sogar dreimal auf.

            Herzlichen Glückwunsch, Du hast ein echtes Phänomen entdeckt. Da muß ich erstmal eine Nacht drüber schlafen, denn dieses Verhalten erscheint mir vollkommen sinnlos.

            Der Verlag des Buches bietet nämlich auf seiner Homepage alle PHP-Dateien zum Download an.

            Ich sollte auch mal so'n Buch zusammenschmieren :>

            Gruß,
              soenk.e

            1. »»Da muß ich erstmal eine Nacht drüber schlafen, denn dieses Verhalten erscheint mir vollkommen sinnlos.
              »»

              Also liegts nicht an meinem Script, sondern an Lycos?

              Ist aber schon irgendwie komisch, dass das Original-Gästebuch problemlos klappt, und die kleine Abwandlung auf einmal nicht mehr...

              Ich versuch nochmal was....

              Bis demnächst und vielen Dank schonmal! Vielleicht fällt euch morgen noch der entscheidende Hinweis ein.

              Gruß

              Mastershrimp

              1. Ich versuch nochmal was....

                Ok. Ich habe jetzt mal die Orignal-Datei aus dem Buch 1:1 übernommen und dann so abgeändert, wie ich es wollte. Jetzt klappts irgendwie.

                Das Ganze gibts jetzt unter http://mitglied.lycos.de/mastershrimp/start.html.

                Ich wüsste allerdings schon mal ganz gerne, warum das jetzt geht, und vorher nicht.

                Der PHP-Code des funktionierenden Gebildes ist:

                <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                <html>
                <head>
                <title>Gästebuch</title>
                </head>
                <body>
                <?php
                  $nachname=$HTTP_POST_VARS['Name'];
                  $kommentar=$HTTP_POST_VARS['Kommentar'];
                  $titel=$HTTP_POST_VARS['Titel'];

                $punkt=".";
                  $dpunkt=":";

                //Zuerst Datum und Uhrzeit generieren:
                  $datum = date("d");
                  $datum .=$punkt;
                  $datum .=date("m");
                  $datum .=$punkt;
                  $datum .=date("Y");
                  $zeit = date("G");
                  $zeit .=$dpunkt;
                  $zeit .=date("i");
                  $zeit .=$dpunkt;
                  $zeit .=date("s");

                //Jetzt neuen Gästebuch-Eintrag erzeugen:

                $eintrag="<!-- Beginn -->";
                 $eintrag.="\n<br><div class='eintrag'>";
                 $eintrag.=$nachname;
                 $eintrag.=" schrieb am ";
                 $eintrag.=$datum;
                 $eintrag.=" um ";
                 $eintrag.=$zeit;
                 $eintrag.=" folgendes Kommentar: ";
                 $eintrag.="\n<br><br>";
                 $eintrag.=$titel;
                 $eintrag.="\n<br>";
                 $eintrag.=$kommentar;
                 $eintrag.="\n<br></div>";

                //Jetzt Gästebuch-Datei laden...

                $bol=file_exists("start.html");
                  if ($bol) {
                    $datei = fopen("start.html","r");
                    if ($datei) {
                      $dateigroesse=filesize("start.html");
                      $inhalt = fread($datei, $dateigroesse);
                      fclose($datei);
                     }

                // Jetzt den neuen Eintrag einfügen

                $ersetzen = str_replace ("<!-- Beginn -->", $eintrag , $inhalt);

                }

                // Jetzt aktualisiertes Gästebuch schreiben:

                $bol=file_exists("start.html");
                  if ($bol) {
                    $datei= fopen("start.html","w");
                    if ($datei) {
                      $output = fwrite($datei,$ersetzen);
                      fclose($datei);
                      print("<h2>Vielen Dank für Ihren Gästebuch-Eintrag!</h2>");
                      print("<br><a href='start.html'>zurueck!</a>");
                     }
                  }
                ?>
                </body>
                </html>

                Falls jemand weiß, worans lag, weshalb das eben nicht ging, wäre ich ihm sehr dankbar, wenn er das hier reinschreiben könnte.

                Gruß

                Mastershrimp

                1. Also liegts nicht an meinem Script, sondern an Lycos?

                  Nein, weder noch. Ich hatte das Ganze auch auf meinem Server ausprobiert und wie geschrieben folgendes im Protokoll gefunden:

                  2003-12-07 18:08:14 | POST | /shoutbox.php  | 200 | /shoutbox.html
                    2003-12-07 18:08:15 | GET  | /shoutbox.php? | 200 | /shoutbox.php

                  Soll heißen: Nach dem Abschicken (POST) kam noch eine mysteriöse zweite Anfrage (GET), mit an die URL angehängtem Fragezeichen. Ich hatte erst den Verdacht, daß das Formular einmal per POST und dann nochmal per GET (dabei werden die Formulardaten mit Fragezeichen an die URL angehängt) abgeschickt wird - das ist aber aus mehreren Gründen vollkommen unmöglich, schon alleine weil man ein Formular nicht einfach mehrmals absenden kann.

                  Langer Rede, kurzer Sinn: Nach einigem Hin und Her bin ich dann auf folgendes gestoßen:

                  <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?">

                  So.

                  Und nun schau doch mal, was Du da am Ende als letztes Attribut angegeben hast und wofür dieses Attribut genutzt wird.

                  Fällt Dir da irgendwas auf?

                  Nein?

                  Dann schau nochmal genau hin.

                  Lösung gibt's übermorgen, wenn dann noch Bedarf besteht :)

                  Gruß,
                    soenk.e

                  PS: Ein typisch selten dämlicher Fehler - aber wie immer auch eine schöne Kopfnuss :)

                  1. Langer Rede, kurzer Sinn: Nach einigem Hin und Her bin ich dann auf folgendes gestoßen:

                    <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?">

                    Fällt Dir da irgendwas auf?

                    Mhh. Ne Vermutung hab ich langsam ;)

                    Lösung gibt's übermorgen, wenn dann noch Bedarf besteht :)

                    Ich schätze mal, dass das '="?">' als PHP-Tag gewertet wird und deshalb irgendetwas schief läuft...Aber eigentlich heißt es doch '?>' und nicht '"?">' oder?

                    Lösung/Bestätigung/Korrektur ist nach wie vor erwünscht!

                    Danke schonmal!

                    1. Ok. Daran lags.

                      Wie kommt PHP darauf, ="?"> als ?> zu interpretieren?

                      Mein allergrößter Respekt! Wäre ich nie drauf gekommen.

                      Vielen Dank!

                      1. Wie kommt PHP darauf, ="?"> als ?> zu interpretieren?

                        Gar nicht, es hat mit PHP überhaupt nichts zu tun, es ist viel einfacher. Das Attribut background verpasst dem <body>-Element ein Hintergrundbild, spezifiziert durch die URL, die mit background angegeben wurde (hier: '?').

                        Des Rätsels Lösung ist also schlicht und ergreifend, daß der Browser versucht, ein Hintergrundbild mit der URL '?' zu laden. Das ist gar nicht so abwegig, wie es vielleicht auf den ersten Blick aussehen mag; '?' ist eine legale, _relative_ URL, relativ zur URL des aktuellen Dokuments.
                        Schau mal oben in die Adressleiste Deines Browsers, dort wirst Du auch eine URL in dieser Form finden: '?t=12&m=34', absolut
                        'http://forum.de.selfhtml.org/?t=12&m=34'. Der Unterschied ist nur, daß bei Deiner '?' keine Parameter folgen.

                        Daher kamen dann auch die zwei Anfragen: Erst der (erwünschte) Formularversand mittels POST an 'shoutbox.php'. In shoutbox.php dann das "Hintergrundbild" '?', das schließlich den zweiten Aufruf des Skriptes, diesmal mittels GET an 'shoutbox.php?' verursacht hat. Das ist natürlich schon für sich Unsinn, aber da Dein Skript auch noch den Fehler hat, nicht zu meckern, wenn es nichts zu speichern gibt, ist der URL-Fehler bis in die Shoutboxdaten durchgeschlagen (und damit auch erst sichtbar geworden).

                        Mein allergrößter Respekt! Wäre ich nie drauf gekommen.

                        Und ich war nach eineinhalb Stunden kurz davor, in die Tischkante zu beißen - wie gesagt: selten dämlich ;) Aber so ist das immer, die Tücke steckt im Detail.

                        Ein Tipp für die Zukunft: Bei derartigen, völlig unerklärlichen Problemen hilft es immer, die Dateien so lange abzuspecken, bis der Fehler verschwindet. Das ist mühselig, aber es hilft.
                        Ich habe in diesem Fall schlußendlich auch ganz von vorne angefangen, das Formular und das Skript in den Grundzügen (ein <input>, nur Ausgabe) selbst geschrieben und dann -weil's wie erwartet einwandfrei funktionierte- begonnen, Code von Dir stückchenweise zu übernehmen. Es dauerte fünf Minuten, dann war ich bei der bewussten <body>-Zeile.

                        Gruß,
                          soenk.e

                        1. Und ich war nach eineinhalb Stunden kurz davor, in die Tischkante zu beißen - wie gesagt: selten dämlich ;) Aber so ist das immer, die Tücke steckt im Detail.

                          Ich bin immer wieder vom "Service" hier fasziniert! Vielen Dank nochmal für all deine Mühen/Nerven!

                          Ein Tipp für die Zukunft: Bei derartigen, völlig unerklärlichen Problemen hilft es immer, die Dateien so lange abzuspecken, bis der Fehler verschwindet. Das ist mühselig, aber es hilft.

                          Ok. Werde ich mal demnächst versuchen. Erstmal lösche ich in meinem Texteditor in der Funktion, wo man ganz schnell die gängigsten Tags einbauen kann, das 'Background="?"' - mittlerweile mache ich eh alles mit CSS. Ist viel praktischer.

                          Bis dann!

                          Gruß

                          Mastershrimp

  2. Bis jetzt hat auch alles gut geklappt, doch wenn ich jetzt einen Eintrag abschicke, wird er 2x erstellt. Einmal mit Inhalt und einmal ohne....

    $benutzer=$HTTP_POST_VARS['Name'];
    $kommentar=$HTTP_POST_VARS['Kommentar'];
    $titel=$HTTP_POST_VARS['Titel'];

    Alle diese Daten werden von Deiner PHP-Version mit Rückstrichen versehen, sobald da ein Anführungszeichen auftaucht. Das sieht nicht so sonderlich hübsch aus, also schalte entweder diese PHP-Option ab (magic_quotes, siehe Anleitung) oder benutze

    $benutzer=stripslashes($HTTP_POST_VARS['Name']);

    $datum=date(d);
    $datum.=$punkt;
    $datum.=date(m);
    $datum.=$punkt;
    $datum.=date(Y);

    Das ist a) unnötig kompliziert (zuviele date()-Aufrufe) und b) falsch (Texte gehören in Anführungszeichen).

    $datum=date("d.m.Y");

    $zeit=date(G);
    $zeit.=$dpunkt;
    $zeit.=date(i);
    $zeit.=$dpunkt;
    $zeit.=date(s);

    Siehe oben.

    $eintrag="<!-- Beginn -->";
    $eintrag.="\n<br><div class='eintrag'>";
    $eintrag.=$benutzer;

    Man kann Dir jeglichen HTML-, CSS- und Javascript-Code unterjubeln. Ich weiß zwar noch nicht, warum mein <style>-Block teilweise umgangen wird, aber benutze trotzdem besser htmlentities().

    $eintrag.=" folgendes Kommentar: ";

    Folgende_n_ Kommentar.

    $eintrag.=$kommentar;

    Man kann Dir jeglichen HTML-, CSS- und Javascript-Code unterjubeln. Benutze htmlentities().

    $bol=file_exists('shoutbox.html');
    if($bol)

    Geht auch einfacher:

    if (file_exists("shoutbox.html"))

    {
       $datei=fopen("shoutbox.html","r");
       if($datei)

    Kann man auch einfacher machen:

    if ($datei = fopen("shoutbox.html","r")

    [lesen], dann..

    $datei=fopen("shoutbox.html","w");

    $output=fwrite($datei,$ersetzen);

    Warum machst Du die Datei nochmal auf? Benutze fseek() und einen entsprechenden Modus bei fopen().

    Zum zweiten ist es nicht unbedingt glücklich, den Quelltext einer HTML-Seite an einer markierten Stelle per Skript zu ändern. Benutze vielleicht besser doch nur ein einziges PHP-Skript, das die Einträge aus einer gesonderten, absturzsicher aufgebauten Datei liest und darstellt.

    Weiß jemand, wie ich das Doppelposting-Phänomen beheben kann?

    Am Code scheint es nicht zu liegen. Die Verzögerung zwischen beiden Einträgen könnte darauf hindeuten, daß das Formular aus irgendeinem Grund zweimal beim Server eintrudelt, eventuell wegen der Werbung, die einen eigenen Rahmen aufmacht.

    Gruß,
      soenk.e

    1. Ok. Vielen Dank erst mal für deine Hinweise.

      Da das jedoch nur ein Test ist, habe ich diese ganzen Sonderfunktionen wie htmlentities() weggelassen, weil ich erstmal nur die Basis haben wollte.

      Ansonsten steht alles so wie's im Buch stand - obs umständlich ist, weiß ich nicht. Ist auch egal. Ich lerne ja noch und das Script wird _nie_ richtig eingesetzt.

      Wegen JS & Co.: Ich hoffe mal, dass ihr Helfer hier so nett seid und diese Späße lasst. Wie gesagt, es ist ein Test, der nicht für die Öffentlichkeit gedacht ist.

      MfG

      Mastershrimp

      1. Moin!

        Wegen JS & Co.: Ich hoffe mal, dass ihr Helfer hier so nett seid und diese Späße lasst. Wie gesagt, es ist ein Test, der nicht für die Öffentlichkeit gedacht ist.

        Wir hatten hier im Forum schon mehrere "nur so zum testen"-Postings, die allesamt immer mißbraucht wurden.

        Ob nun umständlich oder nicht: Gerade _weil_ du lernst, solltest du gleich von Anfang an vernünftigen Code schreiben. Weil sowas nämlich gerne vergessen wird, es später einzufügen. Und schon ist deine Sicherheitslücke da.

        Faustregel: Egal welchen Zweck ein Programm hat, sobald es öffentlich erreichbar ist, ist es potentiell gefährdet, mißbraucht zu werden und hat deshalb allen Anforderungen für sichere Software zu genügen.

        Gerade weil du durch dein Posting die Aufmerksamkeit von mehreren hundert Menschen auf dein Skript gelenkt hast, ist es jetzt besonderen Angriffen ausgesetzt, die ein Fehlen jeglicher Sicherheitsmechanismen nur als grob fahrlässig bezeichnen lassen.

        - Sven Rautenberg

        --
        "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
        (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)