• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-24) 41次浏览 已收录 0个评论

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

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

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

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

<?phpif (!defined('IS_INITPHP')) exit('Access Denied!');/********************************************************************************* * InitPHP 2.0 国产PHP开发框架  扩展类库-验证码*-------------------------------------------* 版权所有: CopyRight By initphp.com* 您可以自由使用该源码,但是在使用过程中,请保留作者信息。尊重他人劳动成果就是尊重自己*-------------------------------------------* $Author:liuxinming* $Dtime:2012-10-09***********************************************************************************/class seccodeInit{	private $width;	private $height;	private $type=0;// 0 字母+数字验证码	private $time=3000;//验证码过期时间(s)	private $color=null;//验证码字体颜色	private $im;	private $length=4;//验证码长度	private $warping;//随机扭曲		/**	 * 获取随机数值	 * @return string	 */	private function get_random_val() {		$i=0;		while($ilength)		{			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('6本文来源gao@dai!ma.com搞$代^码!网7
搞gaodaima代码

,', $_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 < $height;$j++) { for($i = 0;$i im, $i , $j); } for($i = 0;$i im, $i + $r , $j , $rgb[$i]); } } }}?>

效果:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP简略验证码类:字母+数字 字体随机扭曲
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址