Captacha w Zend Framework

Rozwiązanie to jest proste, wygodne i możliwe do zastosowanie w każdym formularzu.


Formularz
[sourcecode lang=”html”]
< ? $c = new TI_Captcha(); ?>
getUrlImage()?>”>

[/sourcecode]

Sprawdzenie
[sourcecode lang=”php”]
if(TI_Captcha::isValid($_POST[„id”],$_POST[„inputWord”])) {
//wszystko się zgadza
} else {
//nie zgadza się
}
[/sourcecode]

Klasa która obsługuje całość
[sourcecode lang=”php”]
< ?php class TI_Captcha { private $captcha = null; public function __construct($wordLen = 6, $width = 200, $height = 80, $noiseLevel = 300, $timeOut = 500, $pathToFont = "/application/models/TI/Font/FreeSansBold.ttf", $pathToImage = "/images/captcha") { $pathToFont = $_SERVER["DOCUMENT_ROOT"].$pathToFont; $pathToImage = $_SERVER["DOCUMENT_ROOT"].$pathToImage; if(!file_exists($pathToFont)) { throw new Zend_Exception($pathToFont." plik nie istnieje."); } if(!file_exists($pathToImage)) { throw new Zend_Exception($pathToImage." plik nie istnieje."); } Zend_Loader::loadClass("Zend_Captcha_Image"); $this->captcha = new Zend_Captcha_Image();

$this->captcha->setTimeout($timeOut)
->setWordLen($wordLen)
->setHeight($height)
->setWidth($width)
->setDotNoiseLevel($noiseLevel)
->setFont($pathToFont)
->setImgDir($pathToImage);

$this->captcha->generate();
}

public function getId() {
return $this->captcha->getId();
}

public function getUrlImage() {
return $this->captcha->getImgUrl().$this->captcha->getId().”.png”;
}

public static function isValid($id, $inputWord) {
Zend_Loader::loadClass(„Zend_Session_Namespace”);
$captchaSession = new Zend_Session_Namespace(„Zend_Form_Captcha_” . $id);
$captchaIterator = $captchaSession->getIterator();
$captchaWord = $captchaIterator[„word”];

if($captchaWord == $inputWord) {
return true;
} else {
return false;
}
}

public static function getWord($id) {
Zend_Loader::loadClass(„Zend_Session_Namespace”);
$captchaSession = new Zend_Session_Namespace(„Zend_Form_Captcha_” . $id);
$captchaIterator = $captchaSession->getIterator();
return $captchaIterator[„word”];
}
}
?>
[/sourcecode]

1 thought on “Captacha w Zend Framework

Comments are closed.