⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 captcha.class.php

📁 一个用PHP编写的
💻 PHP
字号:
<?php		/**	 * default expiration time for old images, 1h	 */	define( "CAPTCHA_DEFAULT_EXPIRATION_TIME", 3600 );		/**	 * background folder and background default image	 */	define( "CAPTCHA_BACKGROUND_FOLDER", PLOG_CLASS_PATH."imgs/authimage/" );	define( "CAPTCHA_BACKGROUND_FILE", "sky.gif" );	/**	 * change this to your default key, used for the "encryption"	 */		define( "CAPTCHA_DEFAULT_KEY", "default-key" );	/**	 * where you would like to store the images	 */	define( "CAPTCHA_CACHE_FOLDER", "./tmp" );	/** 	 * default length of the code	 */	define( "CAPTCHA_DEFAULT_CODE_LENGTH", 6 );		/**	 * \ingroup Data	 *		 * Class to generate CAPTCHA images, based on Mark Wu's AuthImage plugin. Requires support	 * for GD built-in.	 *	 * Usage:	 * <pre>	 *  $auth = new Captcha();	 *  $auth->generate();	 *  ...	 *  if( $auth->validate( $_POST["authImage"] )) {	 *     // validation ok!	 *  }	 *  else {	 *    // error in validation!	 *  }	 * </pre>	 */	class Captcha	{		/**		 * Constructor. It takes no parameter but there are several public attributes that		 * can be set after the constructor has been called:		 *		 * - key		 * - cacheFolder		 * - expiredTime		 * - length		 */		function Captcha()		{			lt_include( PLOG_CLASS_PATH."class/config/config.class.php" );						$config =& Config::getConfig();			$this->cacheFolder = $config->getValue( "temp_folder", CAPTCHA_CACHE_FOLDER );						$this->key = CAPTCHA_DEFAULT_KEY;			$this->expiredTime = CAPTCHA_DEFAULT_EXPIRATION_TIME;			$this->length = CAPTCHA_DEFAULT_CODE_LENGTH;		}		        /**         * @private         */        function encrypt($string, $key) {            $plainText = $string.$key;            $encodeText = md5($plainText);            return $encodeText;        }                /**         * @private         */        function generateCode() {            $code = "";            for($i=0; $i < $this->length; $i++) $code .= rand(0,9);            return $code;        }						/**		 * generates a new image and returns the url		 *		 * @return a url to the captcha image		 */		function generate()		{            // Delete those cached authimage files that never used            $this->purgeOld($this->expiredTime);                        $code = $this->generateCode();            $encrypt = $this->encrypt($code, $this->key);            $background = CAPTCHA_BACKGROUND_FOLDER.CAPTCHA_BACKGROUND_FILE;            $tempFile = $this->cacheFolder."/".$encrypt.".gif";            if(function_exists ( 'imagecreatefromgif' )){                $image = @imagecreatefromgif($background) or die("Cannot Initialize new GD image stream");			}			else if(function_exists ( 'imagecreatefrompng' )){                $image = @imagecreatefrompng($background) or die("Cannot Initialize new GD image stream");             }             else {			  die("Server doesn't support GIF or PNG creation. Sorry.");            }                                   $textColor = imageColorAllocate($image, 0x00, 0x00, 0x00);            ImageString($image, 5, 7, 2, $code, $textColor);            if ( !function_exists ( 'ImageGIF' ) ) {                ImagePNG($image, $tempFile);            } else {                            ImageGIF($image, $tempFile);            }                        // Now chmod it so it can be deleted later by the user            chmod($tempFile, 0666);                   			return( $tempFile );		}				/**		 * checks whether the given code validates with any of the authimages		 * previously generated		 *		 * @param code The code		 * @return True if the code is valid or false otherwise		 */		function validate( $code )		{			lt_include( PLOG_CLASS_PATH."class/file/file.class.php" );            $encrypt = $this->encrypt($code, $this->key);            $tempFile = $this->cacheFolder."/".$encrypt.".gif";           	$result = File::exists( $tempFile );			return( $result );		}				/**		 * Removes the old captcha images that are not needed anymre		 *蔃private		 */		function purgeOld( $expireTime = CAPTCHA_DEFAULT_EXPIRATION_TIME )		{			lt_include( PLOG_CLASS_PATH."class/misc/glob.class.php" );			$files = Glob::myGlob( $this->cacheFolder, "*.gif" );			if( $files ) {				foreach( $files as $file ) {					$diff = time() - filectime( $file );					if ($diff > $expireTime) 						unlink( $file );				}			}		}	}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -