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设计模式 DAO(数据访问对象模式)
Jun 26 PHP
php更新mysql后获取影响的行数发生异常解决方法
Mar 28 PHP
php抽奖小程序的实现代码
Jun 18 PHP
提高PHP编程效率的方法
Nov 07 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 PHP
Yii框架调试心得--在页面输出执行sql语句
Dec 25 PHP
php简单分页类实现方法
Feb 26 PHP
PHP语法小结之基础和变量
Nov 22 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
PHP简单读取PDF页数的实现方法
Jul 21 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
laravel使用数据库测试注意事项
Apr 10 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函数(简单整理)
2010/04/30 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
用Python创建声明性迷你语言的教程
2015/04/13 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Python 可视化神器Plotly详解
2020/12/26 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
如何定义一个可复用的服务
2014/09/30 面试题
高三霸气励志标语
2014/06/24 职场文书
房屋租房协议书范本
2014/12/04 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
股权投资协议书
2016/03/23 职场文书
vue中 this.$set的使用详解
2021/11/17 Vue.js