Home  >  Article  >  Backend Development  >  PHP click to refresh verification code

PHP click to refresh verification code

墨辰丷
墨辰丷Original
2018-06-06 10:48:502773browse

This article mainly introduces the verification code that can be refreshed by clicking PHP. Friends who are interested can refer to it. I hope it will be helpful to everyone.

Verification code class file CreateImg.class.php

<?php 
 
class ValidationCode 
{ 
private $width,$height,$codenum; 
public $checkcode;   //产生的验证码 
private $checkimage;  //验证码图片 
private $disturbColor = &#39;&#39;; //干扰像素 
 
function __construct($width=&#39;80&#39;,$height=&#39;20&#39;,$codenum=&#39;4&#39;) 
{ 
  $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); 
} 
} 
?>

Contains file imgcode.php

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

Front-end file demo.php

?php 
session_start(); 
$test = $_POST[&#39;test&#39;]; 
$test = strtoupper(trim($test)); 
$submit = $_POST[&#39;submit&#39;]; 
if(isset($submit)){ 
if($test==$_SESSION[&#39;validationcode&#39;]){ 
  echo &#39;true&#39;; 
} else { 
  echo &#39;false&#39;; 
} 
} 
?> 
 
<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+ &#39;?nowtime=&#39; + 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>

Summary: The above is the entire content of this article, I hope it will be helpful to everyone's study.

Related recommendations:

How to export word using PHP

PHP jpgraph installation and basic usage

Principle of php custom paging class

The above is the detailed content of PHP click to refresh verification code. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn