• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Ganz simpler Spamschutz geht ned....

Status
Für weitere Antworten geschlossen.
M

matibaski

Guest
Moin Leude...
Bin in mein Gbook aus Langeweile einen Spamschutz am einbauen,der will jedoch nicht..

Also so sieht der aus:
PHP:
<?php
$rnd = rand(1,99999);
$_SESSION['captcha'] = $rnd;
echo 'Spamschutz:<br />'.$rnd;
?>
Also es wird ein Random in eine Variable gesetzt und diese Variable wird einer Session als Wert gesetzt...

Nun wird auch der Randomwert ausgegeben, dass der User die Zahl in das Feld eintippt...

Und somit prüf ich die Zahl:
PHP:
if($_POST['check'] !== $_SESSION['captcha'])
{
 die("Code ist falsch");
}
"check" ist das Feld in der der User die Zahl eingeben muss und die Session, ja ist halt die Randomsession.

Nun hab ichs mal so ausprobiert, dass das Echo nun auch die Session ausgibt, funzt auch nicht...

Also so:
PHP:
$rnd = rand(1,99999);
$_SESSION['captcha'] = $rnd;
echo 'Spamschutz:<br />'.$_SESSION['captcha'];
Nun, das geht dann auch nicht.. Wieso das?



MfG, matibaski
 
1. An session_start() gedacht?
2. Cookies akzeptiert?

Was anderes würd mir jetzt nicht einfallen.
 
Hallo,

!== ist hier der falsche Vergleichsoperator, denn $_POST['check'] ist ein String und $_SESSION['captcha'] ein Integer.

!== vergleicht auch den Typ der Variable und das schlägt hier fehl, also != verwenden, dann wird der Typ ignoriert, bzw. ein Type-Cast durchgeführt.


N43
 
1. hast du wie er oben schon gesagt hab an session_start() gedacht?
2. hast du daran gedacht dass man vor $_SESSION nichts ausgeben darf?
check das mal
 
2. hast du daran gedacht dass man vor $_SESSION nichts ausgeben darf?

natürlich darf man das.... nur vor session_start() nicht. $_SESSION kannst du überall benutzen, solange session_start() oder session.autostart existiert.
 
@ N43

Thx, war wirklich wegen dem.. chch

Hatt ich nicht gewusst, jetzt weiss ichs


MfG, matibaski
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben