Server : nginx/1.18.0
System : Linux iZrj9edhd5u5pfsek09o1jZ 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64
User : www ( 1000)
PHP Version : 5.6.40
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /mnt/web/www.neatabattery.com/vendor/alipay/lotusphp_runtime/Captcha/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /mnt/web/www.neatabattery.com/vendor/alipay/lotusphp_runtime/Captcha/Captcha.php
<?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;
	}
}