unlord
Erfahrenes Mitglied
mahlzeit...
hab mal wieder ein nettes Problem für euch, auf dessen Lösung ich einfach nicht komme...
bin jetzt schon zig-mal über den code gegangen aber ich find den Fehler einfach nicht... also es geht um ein Gästebuch, bei dem ein User nur alle 5 Minuten posten darf... um das zu verwirklichen hab ich es mal mit cookies versucht und da man die cookie-funktionen ja nicht irgendwo in den code reinschreiben kann, steht das hier am anfang der index.php, in die alle seiten eingebunden werden:
...dieses Script überprüft
1. ob die benötigten felder ausgefüllt sind
2. ob jemand spamen will und wörter, die länger als 30 zeichen sind, benutzt
3. ob derjenige schon vor mehr als 5 mins gepostet hat
die Anweisung um Cookies zu setzen kann ich ja nur im Header geben, da es sonst zu der bekannten Fehlermeldung (header already set...) kommt... nun werden je nach wert der $postStatus-Variable in dem GB-File Anweisungen ausgeführt:
wenn ich mich nun im debugging versuche und über die letzte { echo $postStatus; setze, wird (fals ich nich gerade schonmal gepostet habe) "success" ausgegeben... trotzdem wird kein eintrag in die MySQL-Tabelle gemacht... nur der Cookie wird gesetzt und der Satz wird ausgegeben... warum
zweites Problem...
obwohl der Cookie gesetzt wird und unten folgendes steht:
kommt direkt nach dem eintragen nicht die Meldung "Sie dürfen nur alle 5...", sondern erst nach dem aktualisieren der site
naja wenn ihr es bis hierhin geschafft habt hoffe ich ihr könnt mir helfen ^^
mfg
unlord
hab mal wieder ein nettes Problem für euch, auf dessen Lösung ich einfach nicht komme...
bin jetzt schon zig-mal über den code gegangen aber ich find den Fehler einfach nicht... also es geht um ein Gästebuch, bei dem ein User nur alle 5 Minuten posten darf... um das zu verwirklichen hab ich es mal mit cookies versucht und da man die cookie-funktionen ja nicht irgendwo in den code reinschreiben kann, steht das hier am anfang der index.php, in die alle seiten eingebunden werden:
PHP:
if(isset($_GET["page"]) AND ($_GET["page"] == "gaestebuch")) {
if(isset($_POST["gbname"])) {
if(trim($_POST["gbname"] != "") AND (trim($_POST["gbcontent"] != ""))) {
$contentPieces = explode(" ", $_POST["gbcontent"]);
$numbOfElements = count($contentPieces);
$i = 0;
$lenError = 0;
while($i < $numbOfElements) {
$strLength = strlen($contentPieces["$i"]);
if($strLength > 30) {
$lenError++;
}
$i++;
}
if($lenError != 0) {
$postStatus = "lenError";
} else {
if(isset($_COOKIE["Gaestebuch"]) AND ($_COOKIE["Gaestebuch"] == 1)) {
$postStatus = "timeError";
} else {
setcookie("Gaestebuch", "1", time() + 300);
$postStatus = "success";
}
}
} else {
$postStatus = "emptyError";
}
}
}
...dieses Script überprüft
1. ob die benötigten felder ausgefüllt sind
2. ob jemand spamen will und wörter, die länger als 30 zeichen sind, benutzt
3. ob derjenige schon vor mehr als 5 mins gepostet hat
die Anweisung um Cookies zu setzen kann ich ja nur im Header geben, da es sonst zu der bekannten Fehlermeldung (header already set...) kommt... nun werden je nach wert der $postStatus-Variable in dem GB-File Anweisungen ausgeführt:
PHP:
if(isset($postStatus)) {
if($postStatus == "lenError") {
echo '<font color="red">Bitte benutzen Sie keine Wörter, die länger als 30 Zeichen sind.</font><br><br>';
} elseif($postStatus == "timeError") {
echo '<font color="red">bSie dürfen nur alle 5 Minuten einen Eintrag hinzufügen.</font><br><br>';
} elseif($postStatus == "success") {
$query = "INSERT INTO gaestebuch (Name, Mail, Content, Datum, Zeit, Homepage) VALUES (".$_POST["gbname"].", ".$_POST["gbmail"].", ".$_POST["gbcontent"].", $currentDate, $currentTime, ".$_POST["gbhomepage"].")";
mysql_query($query);
echo "Der Gästebuch-Eintrag wurde erfolgreich hinzugefügt.<br><br>";
} elseif($postStatus == "emptyError") {
echo '<font color="red">Die Felder "Name" und "Eintrag" müssen ausgefüllt werden.</font><br><br>';
}
}
wenn ich mich nun im debugging versuche und über die letzte { echo $postStatus; setze, wird (fals ich nich gerade schonmal gepostet habe) "success" ausgegeben... trotzdem wird kein eintrag in die MySQL-Tabelle gemacht... nur der Cookie wird gesetzt und der Satz wird ausgegeben... warum
zweites Problem...
obwohl der Cookie gesetzt wird und unten folgendes steht:
PHP:
<?php
if(isset($_COOKIE["Gaestebuch"]) AND ($_COOKIE["Gaestebuch"] == 1)) {
echo 'Sie dürfen nur alle 5 Minuten einen Eintrag hinzufügen.</font><br><br>';
} else {
?>
Code:
neuen Gästebucheintrag erstellen<br><br><br>
<form name="gaestebuch" action="index.php?page=gaestebuch" method="POST">
Name*<br><input type="text" name="gbname" size="25" class=inputs><br>
E-Mail<br><input type="text" name="gbmail" size="25" class=inputs><br>
Homepage<br><input type="text" name="gbhomepage" size="25" class=inputs><br>
Eintrag*<br><textarea class=inputs name="gbcontent" cols="55" rows="9"></textarea><br><br>
<a href="pages/addSmilies.php?formName=gaestebuch" target="Smilies" OnClick="window.open('','Smilies','top=50,screenX=50,left=100,screenY=100,height=260,width=250')">Smilie-Liste</a><br>
(Felder mit * müssen ausgefüllt werden)<br><br>
<input type="submit" value="Eintragen" class=inputs> <input type="reset" value="Angaben löschen" class=inputs></form>
kommt direkt nach dem eintragen nicht die Meldung "Sie dürfen nur alle 5...", sondern erst nach dem aktualisieren der site
naja wenn ihr es bis hierhin geschafft habt hoffe ich ihr könnt mir helfen ^^
mfg
unlord