PHP5中GD库生成图形验证码(有汉字)


Posted in PHP onJuly 28, 2013

利用PHP5中GD库生成图形验证码

PHP5中GD库生成图形验证码(有汉字) 

类似于下面这样
1.利用GD库函数生成图片,并在图片上写指定字符
imagecreatetruecolor 新建一个真彩色图像
imagecolorallocate 为一幅图像分配颜色(调色板)
imagestring 绘制字符
imageline 绘制线条
imagesetpixel 打像素点
2.输出图片
imagejpeg($img);
PHP实现过程,代码中注释详细,这里不做过多解释
verify.php

<?php 
//1.qi启用gd库GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 
// 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。 
session_start(); 
// 把GBK编码的字符串转换成UTF-8字符串,第一个参数之所以写GBK,是因为本php文件在主机中存储的编码是GBK编码 
// UTF-8编码浏览器普遍支持,通用性强,这里就转换成UTF-8 
$str = iconv("GBK", "utf-8", "芸芸众生绿水青山名胜古迹敞开心胸便会云蒸霞蔚快乐将永远伴随着你"); 
if(!is_string($str) || !mb_check_encoding($str,"utf-8")) 
{ 
exit("不是字符串或者不是utf-8"); 
} 
$zhongwenku_size; 
// 按UTF-8编码方式获取字符串的长度 
$zhongwenku_size = mb_strlen($str,"UTF-8"); 
// 把上述字符导入数组中 
$zhongwenku = array(); 
for( $i=0; $i<$zhongwenku_size; $i++) 
{ 
$zhongwenku[$i] = mb_substr($str, $i,1,"UTF-8"); 
} 
$result = ""; 
// 图片上要写入的四个字符 
for($i=0; $i<4; $i++) 
{ 
switch (rand(0, 1)) 
{ 
case 0: 
$result.=$zhongwenku[rand(0, $zhongwenku_size-1)]; 
break; 
case 1: 
$result.=dechex(rand(0,15)); 
break; 
} } 
$_SESSION["check"] = $result; 
// 创建一个真彩图片 宽100,高30 
$img = imagecreatetruecolor(100, 30); 
// 分配背景颜色 
$bg = imagecolorallocate($img, 0, 0, 0); 
// 分配文字颜色 
$te = imagecolorallocate($img, 255,255,255); 
// 在图片上写字符串 
//imagestring($img, rand(3,8), rand(1,70), rand(1,10), $result, $te); 
// 在图片上根据载入字体可以写出特殊字体 
imagettftext($img, 13, rand(2, 9), 20 ,20, $te, "MSYH.TTF",$result); 
$_SESSION["check"] = $result; 
for($i=0; $i<3; $i++) 
{ 
// $t = imagecolorallocate($img, rand(0, 255),rand(0, 255),rand(0, 255)); 
// 画线 
imageline($img, 0, rand(0, 20), rand(70,100), rand(0, 20), $te); 
} 
$t = imagecolorallocate($img, rand(0, 255),rand(0, 255),rand(0, 255)); 
// 为图片添加噪点 
for($i=0; $i<200; $i++) 
{ 
imagesetpixel($img, rand(1, 100), rand(1, 30), $t); 
} 
// 发送http头信息 指定本次发送的是image中的jpeg 
header("Content-type: image/jpeg"); 
// 输出jpeg图片至浏览器 
imagejpeg($img); 
?>

submit.php
<?php 
session_start(); 
if(@$_POST['check']) 
{ 
if($_POST["check"] == $_SESSION["check"]) 
{ 
echo" 恭喜你!验证码输入正确!"; 
}else{ 
echo" 不好意思验证码输入错误"; 
} 
} 
?> 
<form action="" method="post"> 
<img src="verify.php"/> </br> 
<input type="text" name="check"></br> 
<input type="submit" value="submit"></br> 
</form>

代码中MRYH.ttf 是你要设置的字体。
PHP 相关文章推荐
用PHP编程开发“虚拟域名”系统
Oct 09 PHP
php在线生成ico文件的代码
Oct 09 PHP
PHP5中新增stdClass 内部保留类
Jun 13 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
php使用PDO方法详解
Dec 27 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
PHP的全局错误处理详解
Apr 25 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
Yii框架连接mongodb数据库的代码
Jul 27 PHP
php简单实现单态设计模式的方法分析
Jul 28 PHP
PHP的mysqli_sqlstate()函数讲解
Jan 23 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 #PHP
Ajax+PHP快速上手及简单应用说明
Jul 24 #PHP
table标签的结构与合并单元格的实现方法
Jul 24 #PHP
ueditor 1.2.6 使用方法说明
Jul 24 #PHP
PHP与javascript实现变量交互的示例代码
Jul 23 #PHP
php curl基本操作详解
Jul 23 #PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 #PHP
You might like
php zip文件解压类代码
2009/12/02 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
用jscript实现列出安装的软件列表
2007/06/18 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python 数据结构之旋转链表
2017/02/25 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
Django缓存系统实现过程解析
2019/08/02 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
Django视图类型总结
2021/02/17 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
弘扬雷锋精神演讲稿
2014/05/10 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
公务员处分决定书
2015/06/25 职场文书
小学中队长竞选稿
2015/11/20 职场文书
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
如何Tomcat中使用ipv6地址
2022/05/06 Servers