• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP验证码代码

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

<?php
//// 验证码代码

$code = new Code();
$code->outImage();

class Code {
///验证码个数
protected $number;
///验证码类型
protected $codeType;
///图形宽度
protected $width;
///图形高度
protected $height;
///图形资源
protected $image;
///验证码字符串
protected $code;

public function __construct( $number=4, $codeType=2, $width=100, $height=50 ) {
///初始化自己的成员属性
$this->number = $number;
$this->codeType = $codeType;
$this->width = $width;
$this->height = $height;

////生成验证码函数
$this->code = $this->createCode();

}


public function __destruct(){
imagedestroy($this->image);
}


public function __get( $name ) {
if ( $name == 'code' ) {
return $this->code;
}
return false;
}

protected function createCode() {
///通过验证码类型生成不同的验证码
switch ( $this->codeType ) {
case 0: ///纯数字
$code = $this->getNumberCode();
break;
case 1: ///纯字母
$code = $this->getCharCode();
break;
case 2: ///数字和字母混合
$code = $this->getNumCharCode();
break;
default:
die( "不支持这种验证码类型" );
}
return $code;
}

protected function getNumberCode() {
$str = join( '', range( 0, 9 ) );
return substr( str_shuffle( $str ), 0, $this->number );
}
protected function getCharCode() {
$str = join( '', range( 'a', 'z' ) );
$str = $str . strtoupper( $str );
return substr( str_shuffle( $str ), 0, $this->number );
}

protected function getNumCharCode() {
$numStr = join( '', range( 0, 9 ) );
$str = join( '', range( 'a', 'z' ) );
$str = $numStr . $str . strtoupper( $str );
return substr( str_shuffle( $str ), 0, $this->number );
}


protected function createImage(){
$this->image=imagecreatetruecolor($this->width,$this->height);
}

protected function fillBack(){
imagefill($this->image,0,0,$this->lightColor());
}

protected function lightColor(){
return imagecolorallocate($this->image,mt_rand(130,255),mt_rand(130,255),mt_rand(130,255));
}
protected function darkColor(){
return imagecolorallocate($this->image,mt_rand(0,120),mt_rand(0,120),mt_rand(0,120));
}
protected function drawChar(){
$width=ceil($this->width/$this->number);
for($i=0;$i<$this->number;$i++){
$x=mt_rand($i*$width+5,($i+1)*$width-10);
$y=mt_rand(0,$this->height-15);

imagechar($this->image,5,$x,$y,$this->code[$i],$this->darkColor());
}
}

protected function drawDisturb(){
for($i=0;$i<150;$i++){
$x=mt_rand(0,$this->width);
$y=mt_rand(0,$this->height);
imagesetpixel($this->image,$x,$y,$this->lightColor());
}
}

protected function show(){
header('Content-Type:image/png');
imagepng($this->image);
}


public function outImage(){
///创建画布
$this->createImage();
///填充背景色
$this->fillBack();
///将验证码字符串画到画布中
$this->drawChar();
///添加干扰元素
$this->drawDisturb();
///输出并且显示
$this->show();

}

}

?>

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP通过伪造和模拟客户端COOKIE登陆来采集抓取远程网址发布时间:2022-07-10
下一篇:
PHP-redis命令之列表(lists)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap