知识大全 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批量获取首字母(汉字、数字、英文)

  php批量获取首字母(汉字数字英文)  $mysql_server_name=;//改成自己的mysql数据库服务器  $mysql_username=用户;//改成自己的mysql数据库用户名 

知识大全 PHP正则匹配中文字母数字正则表达式

PHP正则匹配中文字母数字正则表达式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  方法一  代

知识大全 c#生成无重复的验证码

  最近公司项目做了代金卷的业余需要生成随机的位数字字母组合的条码现贴出种程序源码供大家学习和参考  方法  privatestaticchar[]constant=abcdefghijklmnopq

知识大全 PHP 5.5 创建和验证哈希最简单的方法

PHP5.5创建和验证哈希最简单的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!PHP于昨天发

知识大全 ASP实现数字字符混合验证码

ASP实现数字字符混合验证码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  先产生一个位数的随机

知识大全 JSP验证码代码

JSP验证码代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  生成有个随机数字和杂乱背景的图片

知识大全 php:修改NetBeans默认字体

php:修改NetBeans默认字体  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Netbe

知识大全 php修改NetBeans默认字体的大小

php修改NetBeans默认字体的大小  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishix

知识大全 生成随机数与字母

   一题目如下            Write