当前位置:首页 > PHP教程 > php应用 > 列表

php实现点击可刷新验证码

发布:smiling 来源: PHP粉丝网  添加日期:2021-06-25 14:06:45 浏览: 评论:0 

这篇文章主要介绍了php如何实现点击即可刷新验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

本文实例为大家分享了php点击可刷新验证码的具体代码,供大家参考,具体内容如下

验证码类文件 CreateImg.class.php

  1. <?php  
  2.    
  3. class ValidationCode  
  4. {  
  5. private $width,$height,$codenum;  
  6. public $checkcode;  //产生的验证码  
  7. private $checkimage//验证码图片  
  8. private $disturbColor = ''//干扰像素  
  9.    
  10. function __construct($width='80',$height='20',$codenum='4')  
  11. {  
  12.  $this->width=$width;  
  13.  $this->height=$height;  
  14.  $this->codenum=$codenum;  
  15. }  
  16. function outImg()  
  17. {  
  18.  //输出头  
  19.  $this->outFileHeader();  
  20.  //产生验证码  
  21.  $this->createCode();  
  22.    
  23.  //产生图片  
  24.  $this->createImage();  
  25.  //设置干扰像素  
  26.  $this->setDisturbColor();  
  27.  //往图片上写验证码  
  28.  $this->writeCheckCodeToImage();  
  29.  imagepng($this->checkimage);  
  30.  imagedestroy($this->checkimage);  
  31. }  
  32.    
  33. private function outFileHeader()  
  34. {  
  35.  header ("Content-type: image/png");  
  36. }  
  37.    
  38. private function createCode()  
  39. {  
  40.  $this->checkcode = strtoupper(substr(md5(rand()),0,$this->codenum));  
  41. }  
  42.    
  43. private function createImage()  
  44. {  
  45.  $this->checkimage = @imagecreate($this->width,$this->height);  
  46.  $back = imagecolorallocate($this->checkimage,255,255,255);  
  47.  $border = imagecolorallocate($this->checkimage,0,0,0);  
  48.  imagefilledrectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$back); // 白色底  
  49.  imagerectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$border); // 黑色边框  
  50. }  
  51.    
  52. private function setDisturbColor()  
  53. {  
  54.  for ($i=0;$i<=200;$i++)  
  55.  {  
  56.  $this->disturbColor = imagecolorallocate($this->checkimage, rand(0,255), rand(0,255), rand(0,255));  
  57.  imagesetpixel($this->checkimage,rand(2,128),rand(2,38),$this->disturbColor);  
  58.  }  
  59. }  
  60.    
  61. private function writeCheckCodeToImage()  
  62. {  
  63.  for ($i=0;$i<=$this->codenum;$i++)  
  64.  {  
  65.  $bg_color = imagecolorallocate ($this->checkimage, rand(0,255), rand(0,128), rand(0,255));  
  66.  $x = floor($this->width/$this->codenum)*$i;  
  67.  $y = rand(0,$this->height-15);  
  68.  imagechar ($this->checkimage, rand(5,8), $x$y$this->checkcode[$i], $bg_color);  
  69.  }  
  70. }  
  71. function __destruct()  
  72. {  
  73.  unset($this->width,$this->height,$this->codenum);  
  74. }  
  75. }  
  76. ?> 

包含文件imgcode.php

  1. <?php  
  2. session_start();  
  3. require_once('CreateImg.class.php');  
  4. $image = new ValidationCode('80','20','4'); //图片长度、宽度、字符个数  
  5. $image->outImg();  
  6. $_SESSION['validationcode'] = $image->checkcode; //存贮验证码到 $_SESSION 中  
  7. ?> 

前台文件 demo.php

  1. <?php  
  2. session_start();  
  3. $test = $_POST['test'];  
  4. $test = strtoupper(trim($test));  
  5. $submit = $_POST['submit'];  
  6. if(isset($submit)){  
  7. if($test==$_SESSION['validationcode']){  
  8.  echo 'true';  
  9. else {  
  10.  echo 'false';  
  11. }  
  12. }  
  13. ?>  
  14.    
  15. <html>  
  16. <head>  
  17. <title>Image</title>  
  18. <meta http-equiv="content-type" content="text/html;charset=utf-8">  
  19. <script language="javascript">  
  20. function newgdcode(obj,url) {  
  21. obj.src = url+ '?nowtime=' + new Date().getTime();  
  22. //后面传递一个随机参数,否则在IE7和火狐下,不刷新图片  
  23. }  
  24. </script>  
  25. <body>  
  26. <img src="imgcode.php" alt="看不清楚,换一张" align="absmiddle" style="cursor: pointer;" onclick="javascript:newgdcode(this,this.src);" />  
  27. <form method="POST" name="form1" action="image.php">  
  28. <input type="text" name="test">  
  29. <br />  
  30. <input type="submit" name="submit" value="提交">  
  31. </form>  
  32. </body>  
  33. </head>  
  34. </html> 

以上就是为大家介绍的php点击验证码即可刷新的全部代码,希望对大家的学习有所帮助。

Tags: php可刷新验证码

分享到: