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 相关文章推荐
一个好用的分页函数
Nov 16 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
php中call_user_func函数使用注意事项
Nov 21 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
php类的定义与继承用法实例
Jul 07 PHP
php递归函数怎么用才有效
Feb 24 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
May 11 PHP
php unlink()函数使用教程
Jul 12 PHP
php实现小程序支付完整版
Oct 09 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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后退一页表单内容保存实现方法
2012/06/17 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
python利用datetime模块计算时间差
2015/08/04 Python
Python过滤列表用法实例分析
2016/04/29 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
Python实现的弹球小游戏示例
2017/08/01 Python
Python绘制七段数码管实例代码
2017/12/20 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
python获取服务器响应cookie的实例
2018/12/28 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
助理政工师申报材料
2014/06/03 职场文书
节约用水标语
2014/06/11 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
股东协议书范本2016
2016/03/21 职场文书