[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&uuml;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