[TYPO3-german] captcha und php-scripts
mabuse -
markus.bucher at bedv.de
Tue Oct 24 01:24:27 CEST 2006
Hi Ralf,
vielen Dank für deine Hilfe. Jetzt funktioniert es sehr gut.
Anbei nochmal mein verbesserter Code.
Skript 1:
// captcha-Bild wird eingebunden
$myphpoutput .= '<img src="typo3conf/ext/captcha/captcha/captcha.php"
alt="" /> ';
echo $myphpoutput;
// Session startet
session_start();
$captchaStr = $_SESSION['tx_captcha_string'];
?>
<form id="form1" name="form1" method="post" action="index.php?id=512">
<input type="text" name="captchaResponse" size="15" id="captcharesponse"
value="" />
<input type="submit" name="Submit" value="ok" />
</form>
Skript 2(id=512):
session_start();
$captchaStr = $_SESSION['tx_captcha_string'];
// captcha-Überprüfung
if (
$captchaStr && $_POST['captchaResponse']===$captchaStr
) {
// captcha okay
} else {
// captcha nicht okay
}
Viele Grüße!
Markus Bucher
Ralf Hettinger schrieb:
> Das runde muss in das Eckige... oder so ;)
>
> Ich ging eigentlich davon aus, dass das gleiche Skript Form- (und damit
> Captcha-)Erzeugung übernimmt und es daher keine Probleme mit dem Session-Caching
> gibt. Es mag in Deinem Fall sein, dass Du die Session-ID manuell transferieren
> musst; ich hab das zu lange nicht mehr zu Fuß gemacht und bin ziemlich aus der
> Thematik draußen bzw. erzähl nur noch Halbwissen.
>
> Aber hier gibt's alles zum Nachlesen ;)
> http://www.php.net/manual/de/ref.session.php#session.idpassing
>
>
> Naja; vielleicht geht's ja auch ohne (s.u.)
>
>
> Markus Bucher schrieb:
>> Hi. Bin schon ein gutes Stück weiter.
>>
>> Hier mein Code auf der Formular-Seite:
>>
>>
>> // <!-- captcha-Bild wird eingebunden -->
>> $myphpoutput .= '<img src="typo3conf/ext/captcha/captcha/captcha.php"
>> alt="" /> ';
>> echo $myphpoutput;
>>
>
>
>> // Session startet
>> session_start();
>> $captchaStr = $_SESSION['tx_captcha_string'];
>> $_SESSION['tx_captcha_string'] = '';
> ^^^^
> Das kann so nicht klappen. Hier werden im ersten Skript Deine Sessiondaten
> gelöscht, bevor sie im zweiten ausgelesen werden könn(t)en. Muss wenn schon ins
> zweite Skript. Probier's mal. Deswegen schrieb ich auch "Session Abfrage" ;)
>
>
>> ?>
>>
>> <form id="form1" name="form1" method="post" action="index.php?id=512">
>> <input type="text" name="captchaResponse" size="15" id="captcharesponse"
>> value="" />
>> <input type="submit" name="Submit" value="ok" />
>> </form>
>>
>> ... habe von GET auf POST umgestellt.
>> Auf der nächsten Seite (id=512) dann:
>>
>> $captchaStr = $_SESSION['tx_captcha_string'];
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> ist hier garantiert leer...
>
>
>> //debug echo $_POST['captchaResponse'];
>> //debug echo '<br />';
>> //debug echo '<!-- captcha-Wert -->'.$captchaStr;
>> // captcha-Überprüfung
>> if ($captchaStr===-1 || (
> ^^^^^^^^^^^^^^^^^^^
> die Bedingung ist überflüssig; sorry. War ein Copy&Paste-Fehler aus tipafriend
>
>
>> $captchaStr && $_POST['captchaResponse']===$captchaStr
>> )) {
>> // captcha okay
>>
>> ... ab hier kommt mein Code für Erfolgreiche Validierung.
>>
>> } else {
>> // captcha falsch
>> echo 'Leider wurde unser Anti-Spam-Test mit Captcha nicht validiert.<br
>> />';
>> echo '<a href="javascript:history.back();">Bitte kehren Sie zurück
>> und wiederholen die Eingabe</a><br />';
>> }
>>
>>
>> Leider zeigt mir das Skript zwar das captcha-Bild an, jedoch kann ich
>> aus dem zweiten Skript keine $captchaStr Variable auslesen. Es scheint,
>> sie wird nicht erstellt.
>>
>> Was ist falsch?
>>
>> Gruß und Merci vielmals,
>> Markus
More information about the TYPO3-german
mailing list