PHP实现简单实用的验证码类
本文实例讲述了PHP实现简单实用的验证码类。分享给大家供大家参考。具体如下:
<?php /** *@version1.0 *@authorboltedsnail *@date2011-10-15 *@PHP验证码类 *使用方法: *$image=newCaptcha(); *$image->config('宽度','高度','字符个数','验证码session索引'); *$image->create();//这样就会向浏览器输出一张图片 *//所有参数都可以省略, *默认是:宽80高20字符数4验证码session索引captcha_code *第四个参数即把验证码存到$_SESSION['captcha_code'] *最简单使用示例: *$image=newCaptcha(); *$image->create();//这样就会向浏览器输出一张图片 */ classCaptcha { private$width=80,$height=20,$codenum=4; public$checkcode;//产生的验证码 private$checkimage;//验证码图片 private$disturbColor='';//干扰像素 private$session_flag='captcha_code';//存到session中的索引 //尝试开始session function__construct(){ @session_start(); } /* *参数:(宽度,高度,字符个数) */ functionconfig($width='80',$height='20',$codenum='4',$session_flag='captcha_code') { $this->width=$width; $this->height=$height; $this->codenum=$codenum; $this->session_flag=$session_flag; } functioncreate() { //输出头 $this->outFileHeader(); //产生验证码 $this->createCode(); //产生图片 $this->createImage(); //设置干扰像素 $this->setDisturbColor(); //往图片上写验证码 $this->writeCheckCodeToImage(); imagepng($this->checkimage); imagedestroy($this->checkimage); $_SESSION[$this->session_flag]=$this->checkcode; } /* *@brief输出头 */ privatefunctionoutFileHeader() { header("Content-type:image/png"); } /** *产生验证码 */ privatefunctioncreateCode() { $this->checkcode=strtoupper(substr(md5(rand()),0,$this->codenum)); } /** *产生验证码图片 */ privatefunctioncreateImage() { $this->checkimage=@imagecreate($this->width,$this->height); $back=imagecolorallocate($this->checkimage,255,255,255); $border=imagecolorallocate($this->checkimage,0,0,0); imagefilledrectangle($this->checkimage,0,0,$this->width-1,$this->height-1,$back);//白色底 imagerectangle($this->checkimage,0,0,$this->width-1,$this->height-1,$border);//黑色边框 } /** *设置图片的干扰像素 */ privatefunctionsetDisturbColor() { for($i=0;$i<=200;$i++) { $this->disturbColor=imagecolorallocate($this->checkimage,rand(0,255),rand(0,255),rand(0,255)); imagesetpixel($this->checkimage,rand(2,128),rand(2,38),$this->disturbColor); } } /** * *在验证码图片上逐个画上验证码 * */ privatefunctionwriteCheckCodeToImage() { for($i=0;$i<$this->codenum;$i++) { $bg_color=imagecolorallocate($this->checkimage,rand(0,255),rand(0,128),rand(0,255)); $x=floor($this->width/$this->codenum)*$i; $y=rand(0,$this->height-15); imagechar($this->checkimage,rand(5,8),$x+5,$y,$this->checkcode[$i],$bg_color); } } function__destruct() { unset($this->width,$this->height,$this->codenum,$this->session_flag); } } ?>
希望本文所述对大家的php程序设计有所帮助。