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获取url字符串截取路径的文件名和扩展名的函数
Jan 22 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
Yii核心组件AssetManager原理分析
Dec 02 PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 PHP
PHP实现将textarea的值根据回车换行拆分至数组
Jun 10 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
php 获取xml接口数据的处理方法
May 31 PHP
php给数组赋值的实例方法
Sep 26 PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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采集利器 Snoopy 试用心得
2011/07/03 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
PHP安全上传图片的方法
2015/03/21 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
Python切换pip安装源的方法详解
2016/11/18 Python
python实现可变变量名方法详解
2019/07/01 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
阿波罗盒子:Apollo Box
2017/08/14 全球购物
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
数据库测试通常都包括哪些方面
2015/11/30 面试题
EJB的角色和三个对象
2015/12/31 面试题
使用Vue.js和MJML创建响应式电子邮件
2021/03/23 Vue.js
会计专业导师推荐信
2014/03/08 职场文书
小学生期末评语
2014/04/21 职场文书
爱护公物演讲稿
2014/09/09 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
社区干部培训心得体会
2016/01/06 职场文书
Python基本数据类型之字符串str
2021/07/21 Python
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis