验证码PHP类 支持数字,字母,汉字,混合
2018-07-20 来源:open-open
<?php // +------------------------------------------------------------------------ // 验证码类,该类的对象能动态获取验证码图片,验证码字符保存在SESSION['code']中 // +------------------------------------------------------------------------ // 支持4种格式 数字 字母 汉字 混合 // +------------------------------------------------------------------------ // @Author: HelloChina(sanzi0930@163.com) // +------------------------------------------------------------------------ // @Date: 2012年6月7日11:03:00 // +------------------------------------------------------------------------ // @version 1.0 // +------------------------------------------------------------------------ class Vcode{ protected $width; //验证码宽度 protected $height; //验证码长度 protected $codeNum; //验证码字符个数 protected $codeType; //验证码类型 protected $fontSize; //字符大小 protected $fontType; //字体类型 protected $codeStr; //中文内容 protected $strNum; //中文个数 protected $imageType; //输出图片类型 protected $image; //图片资源 protected $checkCode; //验证码内容 /** +-------------------------------------------------------------------------------- * 取得验证码信息 +-------------------------------------------------------------------------------- * @param integer $width 验证码宽度 * @param integer $height 验证码高度 * @param integer $codeNum 验证码字符个数 * @param integer $codeType 验证码字符类型 1为数字 2为字母 3为汉字 4为混编 * @param integer $fontSize 验证码字体的大小 * @param string $fontType 验证码字体类型 * @param string $imageType 验证码输出图片类型 * @param string $codestr 中文验证码内容 +-------------------------------------------------------------------------------- */ public function __construct($width=100, $height=50, $codeNum=4, $codeType=4, $fontSize=12, $fontType='heiti.ttf' ,$imageType='jpeg', $codeStr='去我饿人他一哦平啊是的飞个好就看了在想才吧你吗'){ $this->width = $width; $this->height = $height; $this->codeNum = $codeNum; $this->codeType = $codeType; $this->fontSize = $fontSize; $this->fontType = $fontType; $this->codeStr = $codeStr; $this->strNum = strlen($this->codeStr)/3-1; $this->imageType = $imageType; $this->checkCode = $this->getCheckCode(); } //+-------------------------------------------------------------------------------- //* 生成验证码字符 //+-------------------------------------------------------------------------------- //* @return string //+-------------------------------------------------------------------------------- public function __toString(){ $string = implode('', $this->getCheckCode()); $_SESSION["code"]=$string; //加到session中 $this->getImage(); //输出验证码 return ''; } protected function getCheckCode(){ $string = array(); switch($this->codeType){ case 1: //数字字符串 $string = array_rand(range(0,9), $this->codeNum); break; case 2: //大字母字符串 $string = array_rand(array_flip(range('A', 'Z')), $this->codeNum); break; case 3: //汉字字符串 for($i=0; $i<($this->codeNum); $i++){ $start = mt_rand(0, $this->strNum); $string[$i]= self::msubstr($this->codeStr,$start); } break; case 4: //混合字符串 for($i=0; $i<($this->codeNum); $i++){ $rand=mt_rand(0,2); switch($rand){ case 0: $ascii = mt_rand(48,57); $string[$i] = sprintf('%c',$ascii); break;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇:常用的C#类
下一篇:WebGIS中一些功能算法实例
最新资讯
热门推荐