header (Location...) wieder mal

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • header (Location...) wieder mal

    Folgende Situation:
    Ich habe eine Art Shoutbox programmiert, in die User über ein Formular etwas reinschreiben können.
    Um einen kleinen Spamschutz einzubauen, soll nach Absenden des Formulars ein Cookie gesetzt werden (auf 3 Min),
    damit man erst nach 3 Minuten wieder etwas schreiben kann.

    Jetzt mal der Code, der eintragen.php

    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
        <title>message-box</title>
    </head>

    <body>
    <?
    include ("db_open.inc.php"); //für Datenbankverbindung

    if($HTTP_COOKIE_VARS["msgbox"] != "ja") {

        if(!isset ($msgsend))
            {
                echo "<form action=\"$PHP_SELF\" method=\"post\" name=\"messagebox\">
                        Dein Name: <input type=\"text\" maxlength=\"50\" name=\"neuname\"><br>
                        Deine Email: <input type=\"text\" maxlength=\"100\" name=\"neumail\"><br><br>
                        Nachricht:<br>
                        <textarea name=\"neumsg\" rows=\"10\" cols=\"30\"></textarea> 
                        <br> 
                        <input type=\"submit\" name=\"msgsend\" value=\"Message senden\">
                    </form>";
            }
            
        elseif (empty ($neumsg)) {
            echo "Du hast keine Nachricht hinterlassen!<br><a href=\"javascript:window.self.close();\">Fenster schliessen</a>";  
            }
            
        else {
            if (empty ($neuname)) { 
                $neuname = "Anonym";
                }
            
                if (empty ($neumail)) { 
                $neumail = "anonym@anonym.de";
                }
            
                        $sqlst = "INSERT INTO msgbox (name, msg, mail, date) VALUES ('$neuname', '$neumsg', '$neumail', now())";
                $query = mysql_query($sqlst);
                
                header ("Location: danke.php");
                exit; 
                
                
            
                }
                
    }
    else {

        echo "Du kannst erst wieder in 3 Minuten eine Nachricht schreiben!<br>
    <a href=\"javascript:window.self.close();\">Fenster schliessen</a>";
        
    }

            
    ?>


    </body>
    </html>

    Die danke.php sieht dann folgendermassen aus:

    PHP-Code:
    <?
    setcookie("msgbox", "ja", time()+180);

    echo "Vielen Dank für Deine Nachricht!<br><a href=\"javascript:window.self.close();\">Fenster schliessen</a>"; 

    ?>

    Funktioniert aber nicht so ganz, da ja der HEADER bereits gesendet wurde.
    Mir ist auch klar, dass es so nicht gehen kann.
    Aber wie kann ich es sonst machen?
    Ich könnte ja auch auf die danke.php verzichten und alles in die eintragen.php packen.
    Nur wird dann das Cookie wieder nicht gesetzt,
    da die Funktion setcookie() ja auch VOR jedem Quelltext stehen muss.
    Jemand nen Tipp für mich?
    Zuletzt geändert von zzet; 28.09.2002, 14:39.

  • #2
    Ich habe das jetzt nich getestet, es müsste so aber schon funktionieren, die Datei in der du das cookie setzt, sendet ja vorher keine Ausgabe.
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

    Kommentar


    • #3
      die Datei danke.php ist auch nicht das Problem, sondern die Zeile

      PHP-Code:
       header ("Location: danke.php");
       exit; 
      in der eintragen.php

      Kommentar


      • #4
        Ach so, klar.
        Dann lass die Ausgabe des html kopfes zu beginn weg und gib ihn nur aus, wenn du auch html-code ausgeben willst (vor dem html und fehlermeldungen etc.).
        [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
        [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
        [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

        © Harald Schmidt

        Kommentar


        • #5
          Auf die Möglichkeit bin ich echt noch nicht gekommen. Manchmal sieht man vor lauter Bäumen den Wald nicht :-)

          Danke... gleich mal testen

          Kommentar


          • #6
            klappt...

            Kommentar

            Lädt...
            X