Typo3 - Captcha: Unterschied zwischen den Versionen
| Zeile 26: | Zeile 26: | ||
$substituteArray = array('firstname', 'surname', 'email', 'homepage', 'place', 'entry', 'entrycomment', 'submit','captcharesponse','captcha'); | $substituteArray = array('firstname', 'surname', 'email', 'homepage', 'place', 'entry', 'entrycomment', 'submit','captcharesponse','captcha'); | ||
| + | |||
| + | In der Funktion '''displayForm()''' | ||
<pre> | <pre> | ||
| − | ### | + | |
| + | ### Captcha Beginn ### | ||
# In Funktion displayForm() Marker befüllen | # In Funktion displayForm() Marker befüllen | ||
if (t3lib_extMgm::isLoaded('captcha')) { | if (t3lib_extMgm::isLoaded('captcha')) { | ||
Version vom 6. April 2006, 09:41 Uhr
Captcha soll Formulare gegen automatisierte Spam-Angriffe schützen. Der Benutzer muß einen Zahlen oder Buchstabencode, der als verzerrtes oder verfremdetes Bild vorliegt eingeben. Bei falscher Eingabe wird das Formular nicht akzeptiert.
Es gibt im Moment (5.4.2006) zwei Extensions für Typo3. 1. Captcha Libary von Kasper 2. free captcha von Rolland Stanislas
Captcha Libary von Kasper
Die Captcha Libary wird als Extension geladen und steht dann als php-Erweiterung für die Frontendplugins zur Verfügung. Es muß also Code in die Betroffenen Extensions eingebracht werden. Dabei wird der Code in einer Session Variablen gespeichert und später mit der Eingabe des Users verglichen.
So geht's:
Captcha Bild erzeugen
Beispiel 1 allgemein
if (t3lib_extMgm::isLoaded('captcha')){
$captchaHTMLoutput = '<img src="'.t3lib_extMgm::siteRelPath('captcha').'captcha/captcha.php" alt="" />';
} else {
$captchaHTMLoutput = '';
}
Beispiel 2 ve_guestbook
in den beiden Arrays $substituteArray müssen neue Marker angelegt werden:
$substituteArray = array('firstname', 'surname', 'email', 'homepage', 'place', 'entry', 'entrycomment', 'submit','captcharesponse','captcha');
In der Funktion displayForm()
### Captcha Beginn ###
# In Funktion displayForm() Marker befüllen
if (t3lib_extMgm::isLoaded('captcha')) {
#creating any random string to workarround browser caching of old captcha image
$anything = date("d.m.Y-H:i:s",time());
$captchaHTMLoutput = '<img src="'.t3lib_extMgm::siteRelPath('captcha').'captcha/captcha.php?'.$anything.'" alt="No Spam!" />';
} else {
$captchaHTMLoutput = '';
}
$markerArray['###CAPTCHA_INSERT###'] = $captchaHTMLoutput;
### Ende ###
2. Formularfeld einfügen
Beispiel 1
<input type="text" size=30 name="TIPFORM[captcharesponse]" value="">
Beispiel 2 - ve_guestbook Im Template werden die neuen Marker und das Input angelegt:
Keine Ahnung wofür der ###FORM_CAPTCHARESPONSE### Marker ist. Braucht man wahrscheinlich nur für Felder bei denen man die Werte bei Falscheingabe wieder reinschreibt (also hier wohl gar nicht).
<table>
<!--...-->
<tr>
<td valign="top" class="content" colspan="2">Bitte geben sie folgenden Code ein:</td>
<tr>
<td valign="top" class="content">###CAPTCHA_INSERT###
<span class="content">###FORM_CAPTCHARESPONSE###</span> </td>
<td valign="top" class="content">
<input class="content" type="text" name="tx_veguestbook_pi1[captcharesponse]" value=""></td>
</table>
3. Abfrage realisieren
Beispiel 1
if (t3lib_extMgm::isLoaded('captcha')){
session_start();
$captchaStr = $_SESSION['tx_captcha_string'];//String auslesen
$_SESSION['tx_captcha_string'] = '';
} else {
$captchaStr = -1;//String zurücksetzen damit er nicht mehrmals benutzt werden kann
}
Bsp.2 (für Gästebuch Alt-Brettheim)
# Getting the Captcha String
if (t3lib_extMgm::isLoaded('captcha')) {
session_start();
$captchaStr = $_SESSION['tx_captcha_string'];
$_SESSION['tx_captcha_string'] = '';
} else {
$captchaStr = -1;
}
4. Eingabe überprüfen
Beispiel 1
if (... ($captchaStr===-1 || ($captchaStr && $tipData['captchaResponse']===$captchaStr)) ...) {
...
}
Bsp2 (Alt-Brettheim)
# Evaluating the captcha string
#if ($this->postvars['captcharesponse'] != $captchaStr) {
if (strcasecmp($this->postvars['captcharesponse'], $captchaStr) != 0) {
$error .= '<li>Antispamcode war leider falsch, bitte nochmal probieren!</li>';
}
Captcha Libary anpassen
Captcha Library (captcha) captcha/captcha.php