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 相关文章推荐
ADODB类使用
Nov 25 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
PHP5.3以上版本安装ZendOptimizer扩展
Mar 27 PHP
使用URL传输SESSION信息
Jul 14 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Mar 29 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日期时间函数的高级应用技巧
2009/05/16 PHP
PHP学习笔记之二
2011/01/17 PHP
php 字符串替换的方法
2012/01/10 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
Javascript valueOf 使用方法
2008/12/28 Javascript
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
python编程培训 python培训靠谱吗
2018/01/17 Python
python实现聊天小程序
2018/03/13 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
Python装饰器知识点补充
2018/05/28 Python
python实现dijkstra最短路由算法
2019/01/17 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
销售部主管岗位职责
2013/12/18 职场文书
语文教学感言
2014/02/06 职场文书
环保建议书500字
2014/05/14 职场文书
服务口号大全
2014/06/11 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书