这篇文章主要介绍了php如何实现点击即可刷新验证码,代码很详细,值得大家学习,感兴趣的小伙伴们可以参考一下
验证码类文件 CreateImg.class.php
- <?php
- class ValidationCode
- {
- 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;
- }
- function outImg()
- {
- //输出头
- $this->outFileHeader();
- //产生验证码
- $this->createCode();
- //产生图片
- $this->createImage();
- //设置干扰像素
- $this->setDisturbColor();
- //往图片上写验证码
- $this->writeCheckCodeToImage();
- imagepng($this->checkimage);
- imagedestroy($this->checkimage);
- }
- private function outFileHeader()
- {
- header ("Content-type: image/png");
- }
- private function createCode()
- {
- $this->checkcode = strtoupper(substr(md5(rand()),0,$this->codenum));
- }
- private function createImage()
- {
- $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); // 黑色边框
- }
- private function setDisturbColor()
- {
- 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);
- }
- }
- private function writeCheckCodeToImage()
- {
- 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 = new ValidationCode('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>
- <meta http-equiv="content-type" content="text/html;charset=utf-8">
- <script language="javascript">
- function newgdcode(obj,url) {
- obj.src = url+ '?nowtime=' + new Date().getTime();
- //后面传递一个随机参数,否则在IE7和火狐下,不刷新图片
- }
- </script>
- <body>
- <img src="imgcode.php" alt="看不清楚,换一张" align="absmiddle" style="cursor: pointer;" onclick="javascript:newgdcode(this,this.src);" />
- <form method="POST" name="form1" action="image.php">
- <input type="text" name="test">
- <br />
- <input type="submit" name="submit" value="提交">
- </form>
- </body>
- </head>
- </html>
以上就是为大家介绍的php点击验证码即可刷新的全部代码,希望对大家的学习有所帮助。
新闻热点
疑难解答