Alle CAPTCHA Adapter implementieren
Zend_Captcha_Adapter
, welches wie folgt aussieht:
interface Zend_Captcha_Adapter extends Zend_Validate_Interface { public function generate(); public function render(Zend_View $view, $element = null); public function setName($name); public function getName(); public function getDecorator(); // Zusätzlich um das Zend_Validate_Interface zu befriedigen: public function isValid($value); public function getMessages(); public function getErrors(); }
Die benannten Getter- und Settermethoden werden verwenden um den CAPTCHA
Identifikator zu spezifizieren und zu empfangen. getDecorator()
kann verwendet werden um einen Zend_Form
Dekorator entweder durch
seinen Namen zu Spezifizieren oder indem ein aktuelles Dekoratorobjekt zurückgegeben wird.
Der interessantesten Methoden sind aber generate()
und
render()
. generate()
wird verwendet um
das CAPTCHA Token zu erstellen. Dieser Prozess speichert das Token
typischerweise in der Session damit es in nachfolgenden Anfragen verglichen werden kann.
render()
wird verwendet um die Informationen die das
CAPTCHA repräsentieren darzustellen - ob es ein Bild ist, ein Figlet,
ein logisches Problem, oder andere CAPTCHA.
Ein typischer Verwendungsfall könnte wie folgt aussehen:
// Eine Instanz von Zend_View erstellen $view = new Zend_View(); // Originale Anfrage: $captcha = new Zend_Captcha_Figlet(array( 'name' => 'foo', 'wordLen' => 6, 'timeout' => 300, )); $id = $captcha->generate(); echo "<form method=\"post\" action=\"\">"; echo $captcha->render($view); echo "</form>"; // Eine nachfolgende Anfrage: // Angenommen das Captcha wurde wie vorher eingestellt, dann wäre der Wert von // $_POST['foo'] ein Schlüssel/Wert Array: // id => captcha ID, input => captcha value if ($captcha->isValid($_POST['foo'], $_POST)) { // Validated! }