首页 > 开发 > PHP > 正文

php实现点击可刷新验证码

2024-05-04 23:40:12
字体:
来源:转载
供稿:网友

这篇文章主要介绍了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点击验证码即可刷新的全部代码,希望对大家的学习有所帮助。


注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表