前端页面index.php

<?phpheader('content-type:text/html;charset=utf-8');if(isset($_POST['dosubmit'])){session_start();if(strtoupper($_SESSION['code'])==strtoupper($_POST['code'])){echo'输入成功!<br/>';}else{echo'输入不对<br/>';}}?><formaction="index.php"method="post">用户名:<inputtype="text"name="username"value=""/><br/>标题:<inputtype="text"name="title"value=""/><br/>内容:<textareaname="content"cols="40"rows="4"></textarea><br/>验证码:<inputtype="text"size="4"name="code"><imgsrc="test.php"onclick="this.src='test.php?'+Math.random()"/><br/><inputtype="submit"name="dosubmit"value="留言"/></form>

生成验证码图片test.php

<?php//开启sessionsession_start();require'print.php';//导入验证码类文件$vcode=newVcode(80,30,4);//实例化验证码类//将验证码放到服务器自己的空间保存一份$_SESSION['code']=$vcode->getCode();//将验证码的图片输出$vcode->outimg();//调用方法

验证码类 print.php

<?phpclassVcode{private$width;//宽private$heigth;//高private$num;//数量private$code;//验证码private$img;//图像资源//构造方法function__construct($width=80,$height=25,$num=4){$this->width=$width;$this->heigth=$height;$this->num=$num;$this->code=$this->createCode();}//获取字符的验证码functiongetCode(){return$this->code;}//输出验证码图形functionoutimg(){//创建背景颜色大小边框$this->createBack();//画字大小字体颜色$this->outString();//干扰元素点线条$this->setDisturb();//输出图像$this->printImg();}//创建背景privatefunctioncreateBack(){//创建资源$this->img=p_w_picpathcreatetruecolor($this->width,$this->heigth);//设置随机背景颜色$bgcolor=p_w_picpathcolorallocate($this->img,rand(225,255),rand(225,255),rand(225,255));//填充背景色p_w_picpathfill($this->img,0,0,$bgcolor);//画矩形$bordercolor=p_w_picpathcolorallocate($this->img,0,0,0);p_w_picpathrectangle($this->img,0,0,$this->width-1,$this->heigth-1,$bordercolor);}//画字privatefunctionoutString(){for($i=0;$i<$this->num;$i++){$color=p_w_picpathcolorallocate($this->img,rand(0,128),rand(0,128),rand(0,128));$font=rand(3,5);$x=3+($this->width/$this->num)*$i;$y=rand(1,5);p_w_picpathstring($this->img,$font,$x,$y,$this->code{$i},$color);}}//设置干扰元素privatefunctionsetDisturb(){//加上点数for($i=0;$i<100;$i++){$color=p_w_picpathcolorallocate($this->img,rand(0,255),rand(0,255),rand(0,255));p_w_picpathsetpixel($this->img,rand(1,$this->width-2),rand(1,$this->heigth-2),$color);}//加上线条for($i=0;$i<10;$i++){$color=p_w_picpathcolorallocate($this->img,rand(0,255),rand(0,128),rand(0,255));p_w_picpatharc($this->img,rand(-10,$this->width+10),rand(-10,$this->heigth+10),rand(30,300),rand(30,300),55,44,$color);}}//输出图像privatefunctionprintImg(){//header("Content-Type:p_w_picpath/jpeg");//p_w_picpathjpeg($this->img);if(p_w_picpathtypes()&IMG_GIF){header("Content-Type:p_w_picpath/gif");p_w_picpathjpeg($this->img);}elseif(p_w_picpathtypes()&IMG_JPEG){header("Content-Type:p_w_picpath/jpeg");p_w_picpathjpeg($this->img);}elseif(p_w_picpathtypes()&IMG_JPG){header("Content-Type:p_w_picpath/jpg");p_w_picpathjpeg($this->img);}elseif(p_w_picpathtypes()&IMG_PNG){header("Content-Type:p_w_picpath/png");p_w_picpathjpeg($this->img);}}//生成验证码privatefunctioncreateCode(){$codes="23456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";$code="";for($i=0;$i<$this->num;$i++){$code.=$codes{rand(0,strlen($codes)-1)};}return$code;}//释放图像资源function__destruct(){p_w_picpathdestroy($this->img);}}