php 中文汉字验证码生成程序 这款关于php 中文汉字验证码生成程序其实很简单的,生成中文汉字验证码需要字体来支持了,下面我们用的arial.ttf来支持生成,否则生成中文图片验证码会出乱码的。
php教程 中文汉字验证码生成程序
这款关于php 中文汉字验证码生成程序其实很简单的,生成中文汉字验证码需要字体来支持了,下面我们用的arial.ttf来支持生成,否则生成中文图片验证码会出乱码的。
*/
class securecode { private static $instance=null; private $code = ''; private $fontfile; private $validate; private $image; private $specialadd = 'special string for securecode'; private $codeexpire=86400; private $codecookiename='secure_code'; /** * 构造方法 */ private function securecode() { $this->fontfile = dirname( __file__ ) . '/arial.ttf'; } private function __construct() { $this->securecode(); } public static function getinstance() { if (self::$instance==null) self::$instance=new self(); return self::$instance; } /** * 指定字体文件所在路径,默认为当前文件夹下arial.ttf文件 * @param $fontfile 文件路径 * @return void */ function loadfont($fontfile) { $this->fontfile = $fontfile; } /** * 图片输出方法,在执行本方法前程序不应该有任何形式的输出 * @return void; */ function stroke() { $this->savecode(); self::sendheader(); imagegif( $this->validate ); imagedestroy( $this->validate ); imagedestroy( $this->image ); } /** * 图片保存方法 * @param $filename 保存路径 * @return void */ function save($filename) { $this->savecode(); imagegif( $this->validate , $filename ); imagedestroy( $this->validate ); imagedestroy( $this->image ); } /** * 验证码验证方法 * @param $input 要验证的字符串,即用户的输入内容 * @return boolean 验证结果 */ function verify($input) { $input=strtolower($input); $targetcode=$this->authcode($input); $code=$this->getcookie(); if (empty($code)||$code!=$targetcode) $result= false; else $result=true; $_cookie[$this->codecookiename]=''; setcookie ( $this->codecookiename, '', - 1 ); return $result; } /** * 图片创建方法 * @return void; */ function createimage() { $this->randcode(); $size = 30; $width = 90; $height = 35; $degrees = array ( rand( 0 , 30 ), rand( 0 , 30 ), rand( 0 , 30 ), rand( 0 , 30 ) ); for ($i = 0; $i image = imagecreatetruecolor( $size , $size ); $this->validate = imagecreatetruecolor( $width , $height ); $back = imagecolorallocate( $this->image , 255 , 255 , 255 ); $border = imagecolorallocate( $this->image , 0 , 0 , 0 ); imagefilledrectangle( $this->validate , 0 , 0 , $width , $height , $back ); for ($i = 0; $i 60) $temp[2] = 60; $temp = self::hsvtorgb( $temp[0] , $temp[1] , $temp[2] ); $textcolor[$i] = imagecolorallocate( $this->image , $temp[0] , $temp[1] , $temp[2] ); } for ($i = 0; $i validate , rand( 0 , 255 ) , rand( 0 , 255 ) , rand( 0 , 255 ) ); imagesetpixel( $this->validate , rand( 1 , 87 ) , rand( 1 , 35 ) , $randpixelcolor ); } $temp = self::rgbtohsv( rand( 220 , 255 ) , rand( 220 , 255 ) , rand( 220 , 255 ) ); if ($temp[2] image , $temp[0] , $temp[1] , $temp[2] ); self::imagelinethick( $this->validate , $textcolor[rand( 0 , 3 )] ); imagefilledrectangle( $this->image , 0 , 0 , $size , $size , $back ); putenv( 'gdfontpath=' . realpath( '.' ) ); // name the font to be used (note the lack of the .ttf extension imagettftext( $this->image , 15 , 0 , 8 , 20 , $textcolor[0] , $this->fontfile , $this->code[0] ); $this->image = imagerotate( $this->image , $degrees[0] , $back ); imagecolortransparent( $this->image , $back ); imagecopymerge( $this->validate , $this->image , 1 , 4 , 4 , 5 , imagesx( $this->image ) - 10 , imagesy( $this->image ) - 10 , 100 ); $this->image = imagecreatetruecolor( $size , $size ); imagefilledrectangle( $this->image , 0 , 0 , $size , $size , $back ); imagettftext( $this->image , 15 , 0 , 8 , 20 , $textcolor[1] , $this->fontfile , $this->code[1] ); $this->image = imagerotate( $this->image , $degrees[1] , $back ); imagecolortransparent( $this->image , $back ); imagecopymerge( $this->validate , $this->image , 21 , 4 , 4 , 5 , imagesx( $this->image ) - 10 , imagesy( $this->image ) - 10 , 100 ); $this->image = imagecreatetruecolor( $size , $size ); imagefilledrectangle( $this->image , 0 , 0 , $size - 1 , $size - 1 , $back ); imagettftext( $this->image , 15 , 0 , 8 , 20 , $textcolor[2] , $this->fontfile , $this->code[2] ); $this->image = imagerotate( $this->image , $degrees[2] , $back ); imagecolortransparent( $this->image , $back ); imagecopymerge( $this->validate , $this->image , 41 , 4 , 4 , 5 , imagesx( $this->image ) - 10 , imagesy( $this->image ) - 10 , 100 ); $this->image = imagecreatetruecolor( $size , $size ); imagefilledrectangle( $this->image , 0 , 0 , $size - 1 , $size - 1 , $back ); imagettftext( $this->image , 15 , 0 , 8 , 20 , $textcolor[3] , $this->fontfile , $this->code[3] ); $this->image = imagerotate( $this->image , $degrees[3] , $back ); imagecolortransparent( $this->image , $back ); imagecopymerge( $this->validate , $this->image , 61 , 4 , 4 , 5 , imagesx( $this->image ) - 10 , imagesy( $this->image ) - 10 , 100 ); imagerectangle( $this->validate , 0 , 0 , $width - 1 , $height - 1 , $border ); }
1 2 3
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号