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 Ajax实现页面无刷新发表评论
Jan 02 PHP
php UTF8 文件的签名问题
Oct 30 PHP
PHP安全防范技巧分享
Nov 03 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
php ci框架中加载css和js文件失败的原因及解决方法
Jul 29 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 PHP
PHP实现原生态图片上传封装类方法
Nov 08 PHP
PHP错误和异常处理功能模块示例
Nov 12 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 20 PHP
Laravel框架模板继承操作示例
Jun 11 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 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
基于文本的留言簿
2006/10/09 PHP
php调用C代码的实现方法
2014/03/11 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
基于JavaScript实现无缝滚动效果
2017/07/21 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
35个Python编程小技巧
2014/04/01 Python
python抓取网页图片并放到指定文件夹
2014/04/24 Python
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
python实现多张图片拼接成大图
2019/01/15 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
Python流程控制语句的深入讲解
2020/06/15 Python
python交互模式基础知识点学习
2020/06/18 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
酒店公关部经理岗位职责
2013/11/24 职场文书
专项法律服务方案
2014/06/11 职场文书
大学学生会竞选稿
2015/11/19 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书