[TYPO3-german] captcha und php-scripts
Ralf Hettinger
ng at ralfhettinger.de
Tue Oct 24 08:55:04 CEST 2006
Hallo Markus,
schön dass es klappt.
Viele Grüße schonmal
Ralf
Folgende Anmerkungen noch:
mabuse - schrieb:
> 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'];
Diese Zeilen sind nicht notwendig. Die Session wird in captcha.php erzeugt.
> ?>
>
> <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'];
Du solltest das Captcha schon invalidieren, wenn es abgefragt wurde, denn danach
soll es ja nicht mehr gültig sein:
$_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