知识大全 PHP简单验证码类:字母+数字 字体随机扭曲
Posted 背景
篇首语:知识,只有知识,才能使人成为自由的人和伟大的人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PHP简单验证码类:字母+数字 字体随机扭曲相关的知识,希望对你有一定的参考价值。
PHP简单验证码类:字母+数字 字体随机扭曲 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
看了一些比较大的体验比较好的网站验证码都较为简单 没有复杂的背景 没有干扰码 没有背景
有什么地方写的不好的欢迎大家批评 指点
[php]
if (!defined( IS_INITPHP )) exit( Access Denied! );
/*********************************************************************************
* InitPHP 国产PHP开发框架 扩展类库 验证码
*
*
* $Author:liuxinming
* $Dtime:
***********************************************************************************/
class seccodeInit
private $width;
private $height;
private $type= ;// 字母+数字验证码
private $time= ;//验证码过期时间(s)
private $color=null;//验证码字体颜色
private $im;
private $length= ;//验证码长度
private $warping;//随机扭曲
/**
* 获取随机数值
* @return string
*/
private function get_random_val()
$i= ;
while($i<$this >length)
mt_srand((double)microtime()* );
$randnum=mt_rand( );
if(!in_array($randnum array( )))
$authnum=$authnum chr($randnum);
$i++;
session_start();
$time=time();
$checkcode=md (md ($authnum initphpYzmsy $time));
$key=$time $checkcode authnum;
$_SESSION[ initphp_code ] = $key;
return $authnum;
/**
* 获取验证码图片
* @param $width 宽
* @param $height 高
* @param $warping 字体随机扭曲开关 =关 =开
* @return string
*/
public function getcode($width= $height= $warping= )
$this >width=$width;
$this >height=$height;
$this >warping=$warping;
if($this >type< && function_exists( imagecreate ) && function_exists( imagecolorset ) && function_exists( imagecopyresized ) && function_exists( imagecolorallocate ) && function_exists( imagechar ) && function_exists( imagecolorsforindex ) &&
function_exists( imageline ) && function_exists( imagecreatefromstring ) && (function_exists( imagegif ) || function_exists( imagepng ) || function_exists( imagejpeg )))
$this >image();
/**
* 生成图片验证码
* @return string
*/
public function image()
$this >im=imagecreate($this >width $this >height);//设置图片背景大小
imagecolorallocate($this >im );// 设置背景
$this >color=imagecolorallocate($this >im mt_rand( ) mt_rand( ) mt_rand( ));// 验证码字体随机颜色
$ttfPath = dirname(__FILE__) /font/ ;//字体目录
$dirs = opendir($ttfPath);
$seccodettf = array();
while($entry = readdir($dirs))
if($entry != && $entry != && in_array(strtolower(addslashes(strtolower(substr(strrchr($entry ) )))) array( ttf ttc )))
$seccodettf[] = $ttfPath $entry;
$ttf = $seccodettf[array_rand($seccodettf)];//随机一种字体
$size = $this >type ? $this >width / : $this >width / ;//字体大小
imagettftext($this >im $size $size* $this >color $ttf $this >get_random_val());//设置验证码字符
if($this >warping)//随机扭曲
$this >setWarping();
if(function_exists( imagepng ))
header ( Content type: image/png );
$code=imagepng($this >im);
elseif (function_exists( imagejpeg ))
header ( Content type: image/jpeg );
$code=imagejpeg($this >im);
elseif (function_exists( imagegif ))
header( Content type: image/gif );
$code=imagegif($this >im);
imagedestroy($this >im);
return $code;
/**
* 检查验证码
* @param $code
* @return bool
*/
public function checkCode($code)
session_start();
$secode=explode( $_SESSION[ initphp_code ]);
$time=time();
//检查时间是否过期
if($secode[ ]>$time||$time $secode[ ]>$this >time)
return false;
//验证码密钥 双md 后是否一致
if($secode[ ]<>md (md ($code initphpYzmsy $secode[ ])))
return false;
//检查验证码字符串是否一致
if($code||$code<>$secode[ ])
return false;
return true;
/*随机扭曲*/
public function setWarping()
$rgb=array();
$direct=rand( );
$width = imagesx($this >im);
$height = imagesy($this >im);
$level=$width / ;
for($j = ;$j < $height;$j++)
for($i = ;$i < $width;$i++)
$rgb[$i] = imagecolorat($this >im $i $j);
for($i = ;$i < $width;$i++)
$r = sin($j / $height * * M_PI M_PI * ) * ($direct ? $level : $level);
imagesetpixel($this >im $i + $r $j $rgb[$i]);
?>
效果
> cha138/Article/program/PHP/201311/20786相关参考
知识大全 网页里嵌入JavaScript验证空,汉字,字母,数字长度输入
网页里嵌入JavaScript验证空,汉字,字母,数字长度输入 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
php批量获取首字母(汉字数字英文) $mysql_server_name=;//改成自己的mysql数据库服务器 $mysql_username=用户;//改成自己的mysql数据库用户名
PHP正则匹配中文字母数字正则表达式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 方法一 代
最近公司项目做了代金卷的业余需要生成随机的位数字字母组合的条码现贴出种程序源码供大家学习和参考 方法 privatestaticchar[]constant=abcdefghijklmnopq
PHP5.5创建和验证哈希最简单的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!PHP于昨天发
ASP实现数字字符混合验证码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 先产生一个位数的随机
JSP验证码代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 生成有个随机数字和杂乱背景的图片
php:修改NetBeans默认字体 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Netbe
php修改NetBeans默认字体的大小 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishix
一题目如下 Write