PHP验证码生成类完整代码
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-28 09:02:51 浏览: 评论:0
本文章提供这款php验证码生成类灵活好用,用户可以定义各个成员 有宽、高、画布、字数、类型、画类型同时我们只要修改 $Type就可以定义生成的是纯数字,纯小写字母,大小写数字混合,有需要的朋友可参考.
PHP验证码生成类完整代码如下:
- <?php
- class Code{
- // 1. 定义各个成员 有宽、高、画布、字数、类型、画类型
- private $width; //宽度
- private $height; //高度
- private $num; //验证码字数
- private $imgType; //生成图片类型
- private $Type; //字串类型 1,2,3 三个选项 1 纯数字 2 纯小写字母 3 大小写数字混合
- private $hb; //画布
- public $codestr; // 验证码字串
- public function __construct($height=20,$num=4,$imgType="jpeg",$Type=1){
- $this->width = $num*20;
- $this->height = $height;
- $this->num = $num;
- $this->imgType = $imgType;
- $this->Type = $Type;
- $this->codestr = $this->codestr();
- $this->zuhe();
- }
- // 2. 定义随机获取字符串函数
- private function codestr(){
- switch($this->Type){
- case 1: // 类型为1 获取1-9随机数
- $str = implode("",array_rand(range(0,9),$this->num));
- break;
- case 2: // 类型为2 获取a-z随机小写字母
- $str = implode("",array_rand(array_flip(range(a,z)),$this->num));
- break;
- case 3: // 类型为3 获取数字,小写字母,大写字母 混合
- for($i=0;$i<$this->num;$i++){
- $m = rand(0,2);
- switch($m){
- case 0:
- $o = rand(48,57);
- break;
- case 1:
- $o = rand(65,90);
- break;
- case 2:
- $o = rand(97,122);
- break;
- }
- $str .= sprintf("%c",$o);
- }
- break;
- }
- return $str;
- }
- // 3. 初始化画布图像资源
- private function Hb(){
- $this->hb = imagecreatetruecolor($this->width,$this->height);
- }
- // 4. 生成背景颜色
- private function Bg(){
- return imagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250));
- }
- // 5. 生成字体颜色
- private function Font(){
- return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100));
- }
- // 6. 填充背景颜色
- private function BgColor(){
- imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg());
- }
- // 7. 干扰点
- private function ganrao(){
- $sum=floor(($this->width)*($this->height)/3);
- for($i=0;$i<$sum;$i++){
- imagesetpixel($this->hb,rand(0,$this->width),rand(0,$this->height),$this->Bg());
- }
- }
- // 8. 随机直线 弧线
- private function huxian(){
- for($i=0;$i<$this->num;$i++){
- imageArc($this->hb,rand(0,$this->width),rand(0,$this->height),rand(0,$this->width),rand(0,$this->height),rand(0,360),rand(0,360),$this->Bg());
- }
- }
- // 9. 写字
- private function xiezi(){
- for($i=0;$i<$this->num;$i++){
- $x=ceil($this->width/$this->num)*$i;
- $y=rand(1,$this->height-15);
- imagechar($this->hb,5,$x+4,$y,$this->codestr[$i],$this->Font());
- }
- }
- // 10. 输出
- private function OutImg(){
- $shuchu="image".$this->imgType;
- $header="Content-type:image/".$this->imgType;
- if(function_exists($shuchu)){
- header($header);
- $shuchu($this->hb);
- }else{
- exit("GD库没有此类图像");
- }
- }
- // 11. 拼装
- private function zuhe(){
- $this->Hb();
- $this->BgColor();
- $this->ganrao();
- $this->huxian();
- $this->xiezi();
- $this->OutImg();
- }//开源代码phpfensi.com
- public function getCodeStr(){
- return $this->codestr;
- }
- }
- ?>
Tags: PHP验证码 PHP生成验证码
相关文章
- ·php两款生成图形验证码的代码(2014-08-19)
- ·php生成验证码类代码(2014-08-19)
- ·php生成验证码实现代码(2014-08-19)
- ·php生成验证码详细教程(2014-08-19)
- ·php中文汉字验证码生成程序(2014-08-19)
- ·php 中文汉字验证码生成程序(2014-08-19)
- ·php图片验证码代码(2014-08-19)
- ·php生成图片与验证码图片生成原理(2014-08-19)
- ·php生成图形验证码(2014-08-19)
- ·php 验证码生成程序,可自动判断php gd库(2014-08-19)
- ·php 验证码图片程序(2014-08-20)
- ·php 生成验证码程序(2014-08-20)
- ·php 简单的验证码生成实例(2014-08-22)
- ·php验证码生成程序代码(2014-08-22)
- ·推荐一款php验证码程序(2014-08-23)
- ·php验证码生成与应用实例(2014-08-23)

推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)