Home  >  Article  >  Backend Development  >  Share a php verification code class and calling example

Share a php verification code class and calling example

WBOY
WBOYOriginal
2016-07-25 08:56:39953browse
This article shares a good PHP verification code class, followed by a complete calling example. Friends in need can refer to it.

1, php verification code class

<?php 
// usage: 
/* 
显示验证码:
<img  src="captcha.php?cap=login.png" alt="Share a php verification code class and calling example" >

检查验证码:
检查输入的验证码与 $_SESSION['login'] 中保存的值是否相等。

*/
error_reporting(E_ALL);
session_start();
(!isset($_GET['cap']))?die('Error !'):1;
$captcha_array=array('login.png','contact.png','comment.png');
(!in_array($_GET['cap'],$captcha_array))?die('Error !'):1;
$captcha_cod=new captcha(basename($_GET['cap'],'.png'))   ;

//验证码类
class captcha
{
private $session_name;
private $image_width;
private $image_height;
private $cod_length;
private $cod_mode;
private $font_path;
private $avtage_font_size;
private $sec_cod;
private $res_image;

function __construct($name,$width=200,$height=50,$length=5,$mod=2,$font='arial.ttf',$av_font_size=25)
 {
 $this->   session_name  =  $name  ;
 $this->   image_width  =  $width  ;
 $this->   image_height  =  $height  ;
 $this->   cod_length  =  $length  ;
 $this->   mode    =  $mod  ;
 $this->   font_path  =  $font  ;
 $this->   avrage_font_size   =  $av_font_size   ;
 
 $this->Gen_Cod();
 }
  
function Write_Text($text)
{
  $x_pos=10;
  for($pos=0;$pos<strlen($text);$pos++)  {
    imagettftext($this->res_image,rand($this->avrage_font_size -2,$this->avrage_font_size +2),
    rand(-40,+40),$x_pos,rand(35,$this->image_height - $this->avrage_font_size),
    imagecolorallocate($this->res_image,rand(0,150),rand(0,150),rand(0,150)),
    $this->font_path,$text[$pos]);
    $x_pos+=($this->image_width/$this->cod_length);
 }
}
  
function Draw_Line()
{
  //
  for($pos=0;$pos<$this->image_height;$pos+=8)
  imageline($this->res_image,0,$pos,$this->image_width,$pos,imagecolorallocate($this->res_image,rand(200,230),rand(200,230),rand(200,230)));
  
  //
  for($pos=0;$pos<$this->image_width;$pos+=8)
  imageline($this->res_image,$pos,0,$pos,$this->image_height,imagecolorallocate($this->res_image,rand(200,230),rand(200,230),rand(200,230)));
}  
function Gen_Cod()
{
  //generate rand cod : 
  //mode:1   => 0-9      ,  mode:2   => 0-9 , a-z
  ($this->mode==1) ? $this->sec_cod=substr((string)rand(1000000000,9999999999),0,$this->cod_length) :
  $this->sec_cod=substr(md5(rand(1000000000,9999999999)),0,$this->cod_length);
  //set session :
  $_SESSION[$this->session_name]   =   $this->sec_cod   ;
   
   //creat image :
   $this->res_image=imagecreatetruecolor(   $this->image_width   ,   $this->image_height   );
      
   //fill color:
   imagefilledrectangle($this->res_image,0,0,$this->image_width,$this->image_height,imagecolorallocate($this->res_image,255,255,255));
   
   //write text :
   $this->Write_Text($this->sec_cod);
   
   //draw line :
   $this->Draw_Line();
   
   //output :
   imagejpeg($this->res_image);
   header('content-type:image/jpeg');
   
   //destroy:
   imagedestroy($this->res_image);
 }
}

2, Example of calling the php verification code class:

<?php  
session_start(); 
if(isset($_POST['captchacod'])){ 
if($_SESSION['login']==$_POST['captchacod'])echo'Your Entered Cod Was Correct<br>'; 
else echo'Your Entered Cod Was Incorrect<br>'; 

} 
?> 
<img  src="captcha.php?cap=login.png"  alt="Share a php verification code class and calling example" > 
<form action="<?php echo $_SERVER['PHP_SELF']; //safe it later (xss)?>" method="post"> 
INPUT TEXT :<br> 
<input type="text" name="captchacod"><br> 
<input type="submit" value="check"><br> 
</form>


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