PHP高自定义性安全验证码代码


Posted in PHP onNovember 27, 2011
<?php 
public function captcha(){ 
$font_dir = $_SERVER ["DOCUMENT_ROOT"] . "your_ttf_file.ttf"; // 字体库 
$img_w = 58; // 设置图片宽 
$img_h = 20; // 设置图片高 
$font_size = 11; // 字体大小 
$angle_l = -10; // 左偏角 
$angle_r = 10; // 右偏角 
$code_str = "ABCDEFGHJKLMNPQRSTUVWXYZ36"; 
$word_len = 4; // 验证码位数 
$padding = 5; // 每两个文字之间间隔 
$margin = 2; // 左侧边距 
$base_line = 15; // 文字基线位置 
$base_line_offset = 2; // 基准线偏移量 
$pixel_num = 3; // 杂点数目基数 
$pixel_color= 8; // 杂点只有 $pixel_color 种颜色 总的杂点数为$pixel_num*$pixel_color 
$noise_font_size = 1; // 杂点字体大小 
$session_key= "my.xoyo_captcha"; //自定义session键名 header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Pragma: no-cache"); 
header("Cache-control: private"); 
header('Content-Type: image/png'); 
session_start(); 
$word = ""; 
$code_str_len = strlen($code_str) - 1; 
for ($i = 0; $i < $word_len; $i++) { 
$word.= $code_str[rand(0, $code_str_len)]; 
} 
$_SESSION [$session_key] = strtolower($word); 
$image = imagecreatetruecolor($img_w, $img_h); 
imagefilledrectangle($image, 0, 0, $img_w - 1, $img_h - 1, imagecolorallocate($image, mt_rand(235, 255), mt_rand(235, 255), mt_rand(235, 255))); 
//绘制杂点 
for($i = 0; $i < $pixel_color; $i++){ 
$noise_color = imagecolorallocate( $image, mt_rand(150,225), mt_rand(150,225), mt_rand(150,225) ); 
for($j = 0; $j < $pixel_num; $j++) { 
imagestring( $image, $noise_font_size, mt_rand(-10, $img_w), mt_rand(-10, $img_h), $code_str[mt_rand(0, $code_str_len)], $noise_color ); 
} 
} 
//绘制文字 
for ($i = 0; $i < $word_len; ++$i) { 
$color = imagecolorallocate($image, mt_rand(0, 100), mt_rand(20, 120), mt_rand(50, 150)); 
imagettftext($image, $font_size, mt_rand($angle_l, $angle_r), $margin, mt_rand($base_line-$base_line_offset, $base_line+$base_line_offset), $color, $font, mb_substr($word, $i, 1, 'utf-8')); 
$margin += (imagefontwidth($font_size) + $padding); 
} 
imagepng($image); 
imagedestroy($image); 
exit; 
}
PHP 相关文章推荐
PHP获取表单textarea数据中的换行问题
Sep 10 PHP
PHP下常用正则表达式整理
Oct 26 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
PHP5.3以上版本安装ZendOptimizer扩展
Mar 27 PHP
php返回当前日期或者指定日期是周几
May 21 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
yii用户注册表单验证实例
Dec 26 PHP
php使用timthumb生成缩略图的方法
Jan 22 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
php7下的filesize函数
Sep 30 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
Nov 26 #PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 #PHP
php 团购折扣计算公式
Nov 24 #PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 #PHP
打造超酷的PHP数据饼图效果实现代码
Nov 23 #PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 #PHP
一个PHP的QRcode类与大家分享
Nov 13 #PHP
You might like
如何使用PHP中的字符串函数
2006/11/24 PHP
PHP小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
php实现的短网址算法分享
2014/06/20 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
模仿jQuery each函数的链式调用
2009/07/22 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
js截取字符串功能的实现方法
2017/09/27 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
Python 递归函数详解及实例
2016/12/27 Python
pandas中去除指定字符的实例
2018/05/18 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
库房主管岗位职责
2013/12/31 职场文书
学生党员思想汇报范文
2014/01/09 职场文书
2014年建筑工作总结
2014/11/26 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
Mysql事务索引知识汇总
2022/03/17 MySQL
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android