使用PHP生成验证码-面向对象方式
使用PHP生成验证码图像大致需要以下几个步骤:
1、创建图片并填充背景
2、生成随机验证码
3、生成干扰线和雪花
4、生成验证码文字
5、输出
创建一个生成验证码文件(class_code.php)
<?php //验证码类 class ValidateCode { //随机因子 private $charset =‘abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789’; private $code; //验证码 private $codelen = 4; //验证码长度 private $width = 130; //宽度 private $height = 50; //高度 private $img; //图像资源句柄 private $font; //字体 private $fontcolor; //字体颜色 private $fontsize = 20; //字体大小 public function __construct(){ $this->font = ROOT_PATH.‘/font/elephant.ttf’; } //生成验证码 private function createCode(){ $_len = strlen($this->charset)–1; for ($i=0;$i<$this->codelen;$i++) { $this->code .= $this->charset[mt_rand(0,$_len)]; } } //生成背景 private function createBg(){ $this->img = imagecreatetruecolor($this->width, $this->height); $color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255),mt_rand(157,255)); imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color); } //生成文字 private function createFont(){ $_x = $this->width / $this->codelen; for ($i=0;$i<$this->codelen;$i++) { $this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); imagettftext($this->img,$this->fontsize,mt_rand(–30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]); } } //生成线条和雪花 private function createLine(){ for ($i=0;$i<6;$i++) { $color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color); } for ($i=0;$i<100;$i++) { $color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)); imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),‘*’,$color); } } //输出 private function outPut(){ header(‘Content-Type:image/png’); imagepng($this->img); imagedestroy($this->img); } //对外生成 public function doimg(){ $this->createBg(); $this->createCode(); $this->createLine(); $this->createFont(); $this->outPut(); } //获取验证码 public function getCode(){ return strtolower($this->code); } } ?>
然后再写一个PHP文件调用这个类的方法 (code.php)
<?php require(“class_code.php”); $_vc = new ValidateCode(); $_vc->doimg(); $_SESSION[‘code’] = $_vc->getCode(); ?>
直接调用
<img src=“code.php” onclick=“javascript:this.src=’../config/code.php?tm=’+Math.random();” />
严正声明:本站只出售html页面效果模板,不提供任何类型的网站内容数据,模板仅供学习交流使用,不得用于任何商业以及触犯国家法律法规的用途,违者需自行承担全部责任,与本站无以及模板设计作者无关,本站以及模板作者不承担任何连带责任!!!!
关爱邦 | 网站源码程序下载_免费商业源码分享! » 使用PHP生成验证码-面向对象方式
关爱邦 | 网站源码程序下载_免费商业源码分享! » 使用PHP生成验证码-面向对象方式