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 相关文章推荐
生成缩略图
Oct 09 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
深入理解PHP中的global
Aug 19 PHP
PHP获取远程图片并保存到本地的方法
May 12 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
Yii实现的多级联动下拉菜单
Jul 13 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
php实现简单的权限管理的示例代码
Aug 25 PHP
php微信支付之公众号支付功能
May 30 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 设计模式之 工厂模式
2008/12/19 PHP
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
使用python将时间转换为指定的格式方法
2018/11/12 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
医院护士求职自荐信格式
2013/09/21 职场文书
环境工程大学生自荐信
2013/10/21 职场文书
职业教育毕业生求职信
2013/11/09 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
学校春季防火方案
2014/06/08 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
优秀团员事迹材料
2014/12/25 职场文书
如何撰写创业策划书
2019/06/27 职场文书