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
Die danke.php sieht dann folgendermassen aus:
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?
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?
Kommentar