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 相关文章推荐
基于数据库的在线人数,日访问量等统计
Oct 09 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
PHP中模拟处理HTTP PUT请求的例子
Jul 22 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
php简单smarty入门程序实例
Jun 11 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 PHP
WordPress中调试缩略图的相关PHP函数使用解析
Jan 07 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
Mar 03 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 多进程 解决难题
2009/06/22 PHP
php摘要生成函数(无乱码)
2012/02/04 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
setTimeout学习小结
2017/02/08 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
改进Django中的表单的简单方法
2015/07/17 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
2016/06/18 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
Python 修改列表中的元素方法
2018/06/26 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
python开启debug模式的方法
2019/06/27 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
你常见到的runtime exception
2016/09/05 面试题
父亲追悼会答谢词
2014/01/17 职场文书
高三政治教学反思
2014/02/06 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
开学第一周值周总结
2015/07/16 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
高中班主任心得体会
2016/01/07 职场文书