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缓存技术介绍
Nov 25 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
第五章 php数组操作
Dec 30 PHP
PHP 读取大文件的X行到Y行内容的实现代码
Jun 24 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
ThinkPHP的模版中调用session数据的方法
Jul 01 PHP
浅谈php中include文件变量作用域
Jun 18 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
Oct 18 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操作xml并将其插入数据库的实现方法
2016/09/08 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
php语法检查的方法总结
2019/01/21 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
vue实现未登录跳转到登录页面的方法
2018/07/17 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
python检测是文件还是目录的方法
2015/07/03 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
详解css3 flex弹性盒自动铺满写法
2020/09/17 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
JSP&Servlet技术面试题
2015/05/21 面试题
学校消防演习方案
2014/02/19 职场文书
经销商年会策划方案
2014/05/29 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
2014年防汛工作总结
2014/12/08 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL