Zend_Service_ReCaptchaEinführungZend_Service_ReCaptcha bietet einen Client für das reCAPTCHA Web Service. Laut der reCAPTCHA Seite
ist "reCAPTCHA ein freies CAPTCHA Service das hilft Bücher zu digitalisieren." Jedes
reCAPTCHA verlangt das der Benutzer zwei Wörter eingibt, das erste ist das aktuelle
CAPTCHA, und das zweite ist ein Wort von einem eingescannten Text bei dem Software für
optische Zeichenerkennung (OCR) keine Identifizierung durchführen kann. Die Annahme ist
das, wenn der Benutzer das erste Wort richtig angegeben hat, dass dann das zweite auch
korrekt angegeben wird, und das dieses dann verwendet werden kann um OCR Software für
die Digitalisierung von Büchern zu verbessern.
Um den reCAPTCHA Service zu verwenden muß man
einen Account unterzeichnen
und eine oder mehrere Domains beim Service registrieren um öffentliche und private
Schlüssel zu erzeugen.
Einfachste Verwendung
Ein Zend_Service_ReCaptcha Objekt instanzieren, und ihm den
öffentlichen und privaten Schlüssel übergeben:
Erstellung einer Instanz des reCAPTCHA Services
Um das reCAPTCHA darzustellen, muß einfach die getHTML()
Methode aufgerufen werden:
Das reCAPTCHA darstellengetHTML();
]]>
Wenn das Formular übertragen wurde, sollte man zwei Felder empfangen haben,
'recaptcha_challenge_field' und 'recaptcha_response_field'. Diese sind an die
verify() Methode des reCAPTCHA Objekts zu übergeben:
Das Formular Feld verifizierenverify(
$_POST['recaptcha_challenge_field'],
$_POST['recaptcha_response_field']
);
]]>
Sobald man das Ergebnis hat, kann es getestet werden um zu sehen ob es gültig ist. Das
Ergebnis ist ein Zend_Service_ReCaptcha_Response Objekt, welche
eine isValid() Methode anbietet.
Das reCAPTCHA prüfenisValid()) {
// Fehlerhafte Prüfung
}
]]>
Noch einfacher zu verwenden ist
der ReCaptcha
Zend_Captcha Adapter, oder man verwendet diesen Adapter als
Backend für das CAPTCHA Formularelement.
In jedem Fall werden die Details der Darstellung und Prüfung des reCAPTCHA
automatisch durchgeführt.
Email Adressen versteckenZend_Service_ReCaptcha_MailHide kann verwendet werden um Email
Adressen zu verstecken. Es ersetzt den Teil der Email Adresse mit einem Link der ein
Popup Fenster mit einer reCAPTCHA Challenge öffnet. Das Lösen der Challenge gibt die
komplette Email Adresse zurück.
Um diese Komponente zu verwenden benötigt man
einen Account um
öffentliche und private Schlüssel für die Mailhide API erstellen.
Verwenden der Mail Hide KomponentesetPublicKey($pubKey);
$mailHide->setPrivateKey($privKey);
$mailHide->setEmail($mail);
// Es darstellen
print($mailHide);
]]>
Das obige Beispiel zeigt "m...@example.com" wobei "..." einen Link enthält der sich
mit einem Popup Fenster und einer reCAPTCHA Challenge öffnet.
Der öffentliche Schlüssel, der private Schlüssel, und die Email Adresse können auch im
Konstruktor der Klasse spezifiziert werden. Es existiert ein viertes Argument das es
erlaubt einige Optionen für die Komponente zu setzen. Die vorhandenen Optionen sind in
der folgenden Tabelle aufgelistet:
Zend_Service_ReCaptcha_MailHide optionsOptionBeschreibungErwartete WerteStandard WertelinkTitleDas Titel Attribut des Linksstring'Reveal this e-mail address'linkHiddenTextDer Text welche den Popup Link enthältstring'...'popupWidthDie Breite des Popup Fenstersint500popupHeightDie Höhe des Popup Fenstersint300
Die Konfigurations Optionen können gesetzt werden indem Sie als viertes Argument an den
Konstruktor gesendet werden oder indem die setOptions($options)
aufgerufen wird, welche ein assoziatives Array oder eine Instanz von
Zend_Config entgegen nimmt.
Viele versteckte Email Adressen erzeugensetPublicKey($pubKey);
$mailHide->setPrivateKey($privKey);
$mailHide->setOptions(array(
'linkTitle' => 'Click me',
'linkHiddenText' => '+++++',
));
// Die Mail Adressen die wir verstecken wollen
$mailAddresses = array(
'mail@example.com',
'johndoe@example.com',
'janedoe@example.com',
);
foreach ($mailAddresses as $mail) {
$mailHide->setEmail($mail);
print($mailHide);
}
]]>