這篇文章主要介紹了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點擊驗證碼即可刷新的全部代碼,希望對大家的學習有所幫助。
新聞熱點
疑難解答