PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

PHP简略验证码类:字母+数字 字体随机扭曲

原创
2016-06-13 10:51:49 577浏览

PHP简单验证码类:字母+数字 字体随机扭曲

现在各式各样的验证码,个人认为验证码是让用户看的,所以简单就好。什么干扰码,倾斜,复杂的背景 都是对用户的一种折磨。

看了一些比较大的体验比较好的网站验证码都较为简单,没有复杂的背景,没有干扰码,没有背景。

有什么地方写的不好的欢迎大家批评,指点。

length)		{			mt_srand((double)microtime()*1000000);			$randnum=mt_rand(50,90);			if(!in_array($randnum,array(58,59,60,61,62,63,64,73,79)))			{				$authnum=$authnum.chr($randnum);				$i++;			}		}		session_start();		$time=time();		$checkcode=md5(md5($authnum.'initphpYzmsy'.$time));		$key=$time.','.$checkcode.','.authnum;		$_SESSION['initphp_code'] = $key;		return $authnum;	}		/**	 * 获取验证码图片	 * @param $width 宽	 * @param $height 高	 * @param $warping 字体随机扭曲开关 0=关,1=开	 * @return string	 */	public function getcode($width=140,$height=40,$warping=0){		$this->width=$width;		$this->height=$height;		$this->warping=$warping;		if($this->typeimage();		}	}	/**	 * 生成图片验证码	 * @return string	 */	public function image(){		$this->im=imagecreate($this->width, $this->height);//设置图片背景大小		imagecolorallocate($this->im, 243, 251, 254);// 设置背景  		$this->color=imagecolorallocate($this->im, mt_rand(1,120), mt_rand(1,120), mt_rand(1,120));// 验证码字体随机颜色		$ttfPath = dirname(__FILE__) . '/font/';//字体目录		$dirs = opendir($ttfPath);		$seccodettf = array();		while($entry = readdir($dirs)) {			if($entry != '.' && $entry != '..' && in_array(strtolower(addslashes(strtolower(substr(strrchr($entry, '.'), 1, 10)))), array('ttf', 'ttc'))) {								$seccodettf[] = $ttfPath.$entry;			}		}		$ttf = $seccodettf[array_rand($seccodettf)];//随机一种字体		$size = $this->type ? $this->width / 7 : $this->width / 6;//字体大小		imagettftext($this->im,$size, 0, 10, $size*1.2, $this->color, $ttf, $this->get_random_val());//设置验证码字符		if($this->warping){//随机扭曲			$this->setWarping();		}		if(function_exists("imagepng"))		{			header ("Content-type: image/png");			$code=imagepng($this->im);		}elseif (function_exists("imagejpeg"))		{			header ("Content-type: image/jpeg");			$code=imagejpeg($this->im);		}elseif (function_exists("imagegif")) 		{			header("Content-type: image/gif");			$code=imagegif($this->im);		}		imagedestroy($this->im);		return $code;	}		/**	 * 检查验证码	 * @param $code	 * @return bool	 */	public function checkCode($code) {		session_start();		$secode=explode(',', $_SESSION['initphp_code']);		$time=time();		//检查时间是否过期		if($secode[0]>$time||$time-$secode[0]>$this->time)		{			return false;		}		//验证码密钥 双md5 后是否一致		if($secode[1]md5(md5($code.'initphpYzmsy'.$secode[0]))){			return false;		}		//检查验证码字符串是否一致		if($code||$code$secode[2])		{			return false;		}		return true;	}		/*随机扭曲*/	public function setWarping(){		$rgb=array();		$direct=rand(0,1);		$width = imagesx($this->im);		$height = imagesy($this->im);		$level=$width /20;		for($j = 0;$j im, $i , $j);				}			for($i = 0;$i im, $i + $r , $j , $rgb[$i]);				}		}	}}?>

效果:


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。