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 相关文章推荐
在apache下限制每个虚拟主机的并发数!!!!
Oct 09 PHP
Apache2 httpd.conf 中文版
Dec 06 PHP
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
实用函数9
Nov 08 PHP
PHP与javascript实现变量交互的示例代码
Jul 23 PHP
php实例分享之html转为rtf格式
Jun 02 PHP
php实现简单的上传进度条
Nov 17 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
浅析Yii2中GridView常见操作
Apr 22 PHP
Zend Framework框架中实现Ajax的方法示例
Jun 27 PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 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中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
jquery tab插件精简版分享
2011/09/10 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
python常见数制转换实例分析
2015/05/09 Python
django框架如何集成celery进行开发
2017/05/24 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
基于python历史天气采集的分析
2019/02/14 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
医学生自荐信
2013/12/03 职场文书
给女朋友的道歉信
2014/01/10 职场文书
平民服装店创业计划书
2014/01/17 职场文书
经销商培训邀请函
2014/01/21 职场文书
《埃及的金字塔》教学反思
2014/04/07 职场文书
公司节能减排方案
2014/05/16 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
2014年幼师工作总结
2014/11/22 职场文书