PHP实现适用于自定义的验证码类


Posted in PHP onJune 15, 2016

本文实例为大家分享了PHP验证码类,利用对象来实现的验证码类,供大家参考,具体内容如下

<?php
 
/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
Class Image{
  
 private $img;
 public $width = 85;
 public $height = 25;
 public $code;
 public $code_len = 4;
 public $code_str = "329832983DSDSKDSLKQWEWQ2lkfDSFSDjfdsfdsjwlkfj93290KFDSKJFDSOIDSLK";
 public $bg_color = '#DCDCDC';
 public $font_size = 16;
 public $font = 'font.ttf';
 public $font_color = '#000000';
  
 //创建验证码饿字符创
 public function create_code(){
  $code = '';
  for( $i=0;$i<$this->code_len;$i++ ){
   $code .= $this->code_str[mt_rand(0, strlen($this->code_str)-1)];
 }
  return $this->code = $code;
 }
  
 //输出图像
 public function getImage(){
  $w = $this->width;
  $h = $this->height;
  $bg_color = $this->bg_color;
  $img = imagecreatetruecolor($w, $h);
  $bg_color = imagecolorallocate($img, 
 hexdec(substr($bg_color, 1,2)), hexdec(substr($bg_color, 3,2)), hexdec(substr($bg_color, 5,2)));
 imagefill($img, 0, 0, $bg_color);
  $this->img = $img;
  $this->create_font();
  $this->create_pix();
 $this->show_code();
 }
 
 
 //写入验证码
 public function create_font(){
  $this->create_code();
  $color = $this->font_color;
  $font_color = imagecolorallocate($this->img, hexdec(substr($color,1,2)), hexdec(substr($color, 3,2)), hexdec(substr($color,5,2)));
  $x = $this->width/$this->code_len;
  for( $i=0;$i<$this->code_len;$i++ ){
   $txt_color = imagecolorallocate($this->img, mt_rand(0,100), mt_rand(0, 150), mt_rand(0, 200));
   imagettftext($this->img, $this->font_size, mt_rand(-30, 30), $x*$i+mt_rand(3, 6), mt_rand($this->height/1.2, $this->height), $txt_color, $this->font , $this->code[$i]); 
   //imagestring($this->img, $this->font_size, $x*$i+mt_rand(3, 6),mt_rand(0, $this->height/4) , $this->code[$i], $font_color);
  }
  $this->font_color = $font_color;
 }
  
 //画干扰线
 public function create_pix(){
  $pix_color= $this->font_color;
  for($i=0;$i<100;$i++){
   imagesetpixel($this->img, mt_rand(0, $this->width),mt_rand(0, $this->height), $pix_color);
  }
  for($j=0;$j<4;$j++){
   imagesetthickness($this->img, mt_rand(1, 2));
   imageline($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $pix_color);
  }
 }
  
 //得到验证码
 public function getCode(){
  return strtoupper($this->code);
 }
 
 
 //输出验证码
 private function show_code(){
  header("Content-type:image/png");
  imagepng($this->img);
  imagedestroy($this->img);
 }
}

效果图:

PHP实现适用于自定义的验证码类

精彩专题分享:ASP.NET验证码大全 PHP验证码大全 java验证码大全

以上就是使用对象编写的验证码类的全部内容,希望对大家学习PHP程序设计有所帮助。

PHP 相关文章推荐
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
May 24 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
浅谈json_encode用法
Mar 05 PHP
PHP实现将textarea的值根据回车换行拆分至数组
Jun 10 PHP
对比分析php中Cookie与Session的异同
Feb 19 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
浅谈PHP中的
Apr 23 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
PHP错误处理函数register_shutdown_function使用示例
Jul 03 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 #PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 #PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 #PHP
PHP处理二进制数据的实现方法
Jun 13 #PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
Jun 13 #PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
Jun 13 #PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
Jun 13 #PHP
You might like
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
js监听表单value的修改同步问题,跨浏览器支持
2009/12/31 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
python和php学习哪个更有发展
2020/06/17 Python
路政管理专业推荐信
2013/11/11 职场文书
班主任班级寄语大全
2014/04/04 职场文书
协议书范本
2014/04/23 职场文书
建筑结构施工求职信
2014/07/11 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript