Spamblocker fehler beim Variablen übertragen!
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aussehen
bild
button
code
dank
fehler
feld
form
frage
funktionieren
limit
ordern
problem
programmieren
rand
session
team
tun
type
variable code
-
Hallo,
ich möchte für meine HP einen Spamblocker programmieren. ich habe auch schon angefangen:<?php include ("sql.php");?> <?php $sql = 'SELECT * FROM Spamblocker ORDER BY rand() LIMIT 0,1'; $result = mysql_query ($sql); while ($data = mysql_fetch_array ($result)) { $bild = $data['Bild']; $code = $data['code']; $Frage = $data['Frage']; echo " <b>$Frage</b><br><br> <ul>"; }?> <a href="<?php echo $_SERVER['PHP_SELF']; ?> ">Kann ich nicht lesen</a> <img src='<?echo"$bild";?>' width='200px' height='70px' border='0'><br> </ul> <br> <?php if(!isset($_POST['submit'])) { ?> <form action="<?php $PHP_SELF ?>" method="post" name="form"> <input name="code2" type="text" style="background:#ECFFD0; border: 1px solid #99CCFF; width:300px;"></td> <tr> <td><input name="submit" value="Senden" class="button" type="submit" style="background:#ECFFD0;"></td> </tr> <? $code2 = $_POST['code2']; }elseif($code == $code2){ echo 'richtig.<br></p>'; }else{ echo 'falsch.'; } ?> </form>
Der User soll den Code der im Bild steht in dasInput feld eintippen mein problem ist wenn ich auf den button klicke um die eingabe ($code2) mit der Variable ($code) zu vergleichen lädt er die variable Code neu ! wie kann ich das verhindern? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi,
So kann es nicht funktionieren. :-)
Bei einem Reload würden alle Variablen sowieso wieder verworfen. Eine Lösung, die mir jetzt spontan eingefallen ist und sich einfach in dein Script einbauen lässt, wäre ein Mitschicken des Codes in einer Session und ein "Von-oben-herunter"-Programmieren.
Das könnte in etwa so aussehen:
<?php session_start(); include ("sql.php"); if($_POST["submit"]) if($_POST["input_code"] == $_SESSION["code"]) { print("Richtig!"); unset($_SESSION["code"]); } else { $result = mysql_query("SELECT Bild,Frage,code FROM Spamblocker ORDER BY RAND() LIMIT 1;"); $data = mysql_fetch_object($result); $_SESSION["code"] = $data->code; echo $data->Frage."<br>"; echo "<img src='$data->Bild' width='200px' height='70px' border='0'><br>" echo "<a href=''>Kann ich nicht lesen</a>"; ?> <form action="" method="post"> <table> <tr> <td> <input name="input_code" type="text" style="background:#ECFFD0; border: 1px solid #99CCFF; width:300px;"> </td> <tr> <td> <input name="submit" value="Senden" class="button" type="submit" style="background:#ECFFD0;"> </td> </tr> </table> </form> <?php } ?>
Hab es jetzt nicht geprüft, weiß also nicht, ob es gleich tun wird. Falls es immernoch Probleme geben sollte, helf ich dir gerne weiter. :-)
styVe (qap2-Team)
Beitrag zuletzt geändert: 13.10.2009 19:20:19 von qap2 -
Es muss natürlich noch die Funktion session_start(); ganz oben hingeschrieben werden, damit die Session überhaupt gespeichert wird, und nach dem neuen Seitenaufruf verfügbar ist. Cookies, Get oder ein Hidden-Feld im Formular währe auch noch Lösungen.
-
Natürlich muss die Session erst noch gestartet werden. Bin davon ausgegangen, dass das schon früher im Seitenscript geschieht. :-)
Cookies würde ich jetzt vielleicht nicht benutzen, weil sie eben auch deaktiviert werden können. Aber sonst würden alle anderen Lösungen natürlich auch funktionieren. :P
Werde dem Script das session_start(); zur Sicherheit trotzdem noch anhängen. Danke für den Hinweis.
styVe (qap2-Team)
Beitrag zuletzt geändert: 13.10.2009 14:32:49 von qap2 -
qap2 schrieb: Hi, So kann es nicht funktionieren. :-) Bei einem Reload würden alle Variablen sowieso wieder verworfen. Eine Lösung, die mir jetzt spontan eingefallen ist und sich einfach in dein Script einbauen lässt, wäre ein Mitschicken des Codes in einer Session und ein "Von-oben-herunter"-Programmieren. Das könnte in etwa so aussehen:
Hab es jetzt nicht geprüft, weiß also nicht, ob es gleich tun wird. Falls es immernoch Probleme geben sollte, helf ich dir gerne weiter. :-) styVe (qap2-Team)<?php session_start(); include ("sql.php"); if($_POST["submit"]) if($_POST["input_code"] == $_SESSION["code"]) { print("Richtig!"); unset($_SESSION["code"]); } else { $result = mysql_query("SELECT Bild,Frage,code FROM Spamblocker ORDER BY RAND() LIMIT 1;"); $data = mysql_fetch_object($result) $_SESSION["code"] = $data->code; echo $data->Frage."<br>"; echo "<img src='$data->Bild' width='200px' height='70px' border='0'><br>" echo "<a href=''>Kann ich nicht lesen</a>"; ?> <form action="" method="post"> <table> <tr> <td> <input name="input_code" type="text" style="background:#ECFFD0; border: 1px solid #99CCFF; width:300px;"> </td> <tr> <td> <input name="submit" value="Senden" class="button" type="submit" style="background:#ECFFD0;"> </td> </tr> </table> </form> <?php } ?>
Ok Danke für die Hilfe.
Ganz klapt das aber nochnicht
Hier ist noch ein Fehler:
$_SESSION["code"] = $data->code; (Zeile 13)
Nochmal Hilfe^^
LG -
Wie lautet der Fehler denn?
Poste den Fehler vielleicht noch und guck auch noch, ob du zu Beginn session_start(); benutzt hast.
Ansonsten: versicher dich auch noch, dass Groß- und Kleinschreibung stimmen. Das "code" könnte vielleicht groß geschrieben sein. :-)
styVe (qap2-Team)
*Edit* Fehler gefunden. Bei "$data = mysql_fetch_object($result)" Fehlt das Semikolon... mein Fehler, sorry.^^
Beitrag zuletzt geändert: 13.10.2009 19:15:21 von qap2 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage