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