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 相关文章推荐
PHP4实际应用经验篇(1)
Oct 09 PHP
2014过年倒计时示例
Jan 31 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
May 29 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
Dec 14 PHP
PHP加密解密实例分析
Dec 25 PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 PHP
PHP给前端返回一个JSON对象的实例讲解
May 31 PHP
掌握PHP垃圾回收机制详解
Mar 13 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详解ASCII码对照表与字符转换
2011/12/05 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
浅析php单例模式
2014/11/25 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
JavaScript面象对象设计
2008/04/28 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
js日期联动示例
2014/05/02 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
python生成式的send()方法(详解)
2017/05/08 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
捐书寄语赠言
2014/01/18 职场文书
大学军训感言1000字
2014/02/25 职场文书
剪彩仪式主持词
2014/03/19 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
超市周年庆活动方案
2014/08/16 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
自查自纠工作总结
2014/10/15 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫