php验证码的调用,分享一个php 验证码类及调用示例

本文分享一个不错的php 验证码类,后面附有完整的调用示例,有需要的朋友,参考下吧。

1,php验证码类

检查验证码:

检查输入的验证码与 $_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;$posres_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;$posimage_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;$posimage_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,php验证码类的调用示例:

INPUT TEXT :

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值