php实现点击可刷新验证码
本文实例为大家分享了php点击可刷新验证码的具体代码,供大家参考,具体内容如下
验证码类文件CreateImg.class.php
<?php
classValidationCode
{
private$width,$height,$codenum;
public$checkcode;//产生的验证码
private$checkimage;//验证码图片
private$disturbColor='';//干扰像素
function__construct($width='80',$height='20',$codenum='4')
{
$this->width=$width;
$this->height=$height;
$this->codenum=$codenum;
}
functionoutImg()
{
//输出头
$this->outFileHeader();
//产生验证码
$this->createCode();
//产生图片
$this->createImage();
//设置干扰像素
$this->setDisturbColor();
//往图片上写验证码
$this->writeCheckCodeToImage();
imagepng($this->checkimage);
imagedestroy($this->checkimage);
}
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,$y,$this->checkcode[$i],$bg_color);
}
}
function__destruct()
{
unset($this->width,$this->height,$this->codenum);
}
}
?>
包含文件imgcode.php
<?php
session_start();
require_once('CreateImg.class.php');
$image=newValidationCode('80','20','4');//图片长度、宽度、字符个数
$image->outImg();
$_SESSION['validationcode']=$image->checkcode;//存贮验证码到$_SESSION中
?>
前台文件demo.php
?php
session_start();
$test=$_POST['test'];
$test=strtoupper(trim($test));
$submit=$_POST['submit'];
if(isset($submit)){
if($test==$_SESSION['validationcode']){
echo'true';
}else{
echo'false';
}
}
?>
<html>
<head>
<title>Image</title>
<metahttp-equiv="content-type"content="text/html;charset=utf-8">
<scriptlanguage="javascript">
functionnewgdcode(obj,url){
obj.src=url+'?nowtime='+newDate().getTime();
//后面传递一个随机参数,否则在IE7和火狐下,不刷新图片
}
</script>
<body>
<imgsrc="imgcode.php"alt="看不清楚,换一张"align="absmiddle"style="cursor:pointer;"onclick="javascript:newgdcode(this,this.src);"/>
<formmethod="POST"name="form1"action="image.php">
<inputtype="text"name="test">
<br/>
<inputtype="submit"name="submit"value="提交">
</form>
</body>
</head>
</html>
以上就是为大家介绍的php点击验证码即可刷新的全部代码,希望对大家的学习有所帮助。