| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | 
							- <?php
 
- class LtCaptcha
 
- {
 
- 	public $configHandle;
 
- 	public $storeHandle;
 
- 	public $imageEngine;
 
- 	public function __construct()
 
- 	{
 
- 		if (! $this->configHandle instanceof LtConfig)
 
- 		{
 
- 			if (class_exists("LtObjectUtil", false))
 
- 			{
 
- 				$this->configHandle = LtObjectUtil::singleton("LtConfig");
 
- 			}
 
- 			else
 
- 			{
 
- 				$this->configHandle = new LtConfig;
 
- 			}
 
- 		}
 
- 	}
 
- 	public function init()
 
- 	{
 
- 		if (!is_object($this->storeHandle))
 
- 		{
 
- 			$this->storeHandle = new LtStoreFile;
 
- 			$this->storeHandle->prefix = 'LtCaptcha-seed-';
 
- 			$this->storeHandle->init();
 
- 		}
 
- 	}
 
- 	public function getImageResource($seed)
 
- 	{
 
- 		if (empty($seed))
 
- 		{
 
- 			trigger_error("empty seed");
 
- 			return false;
 
- 		}
 
- 		if (!is_object($this->imageEngine))
 
- 		{
 
- 			if ($imageEngine = $this->configHandle->get("captcha.image_engine"))
 
- 			{
 
- 				if (class_exists($imageEngine))
 
- 				{
 
- 					$this->imageEngine = new $imageEngine;
 
- 					$this->imageEngine->conf = $this->configHandle->get("captcha.image_engine_conf");
 
- 				}
 
- 				else
 
- 				{
 
- 					trigger_error("captcha.image_engine : $imageEngine not exists");
 
- 				}
 
- 			}
 
- 			else
 
- 			{
 
- 				trigger_error("empty captcha.image_engine");
 
- 				return false;
 
- 			}
 
- 		}
 
- 		$word = $this->generateRandCaptchaWord($seed);
 
- 		$this->storeHandle->add($seed, $word);
 
- 		return $this->imageEngine->drawImage($word);
 
- 	}
 
- 	public function verify($seed, $userInput)
 
- 	{
 
- 		if ($word = $this->storeHandle->get($seed))
 
- 		{
 
- 			$this->storeHandle->del($seed);
 
- 			return $userInput === $word;
 
- 		}
 
- 		else
 
- 		{
 
- 			return false;
 
- 		}
 
- 	}
 
- 	protected function generateRandCaptchaWord()
 
- 	{
 
- 		$allowChars = $this->configHandle->get("captcha.allow_chars");
 
- 		$length = $this->configHandle->get("captcha.length");
 
- 		$allowedSymbolsLength = strlen($allowChars) - 1;
 
- 		$captchaWord = "";
 
- 		for ($i = 0; $i < $length; $i ++)
 
- 		{
 
- 			$captchaWord .= $allowChars[mt_rand(0, $allowedSymbolsLength)];
 
- 		}
 
- 		return $captchaWord;
 
- 	}
 
- }
 
 
  |