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 相关文章推荐
拼音码表的生成
Oct 09 PHP
php UTF-8、Unicode和BOM问题
May 18 PHP
php xml 入门学习资料
Jan 01 PHP
基于php使用memcache存储session的详解
Jun 25 PHP
浅析php变量作用域的一些问题
Aug 08 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
May 04 PHP
浅析ThinkPHP的模板输出功能
Jul 01 PHP
ecshop后台编辑器替换成ueditor编辑器
Mar 03 PHP
codeigniter实现get分页的方法
Jul 10 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
Oct 08 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的FTP学习(二)[转自奥索]
2006/10/09 PHP
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
2016/04/06 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
python分析nignx访问日志脚本分享
2015/02/26 Python
浅谈Python中数据解析
2015/05/05 Python
Django卸载之后重新安装的方法
2017/03/15 Python
Python中join函数简单代码示例
2018/01/09 Python
Python实现的寻找前5个默尼森数算法示例
2018/03/25 Python
Python 删除整个文本中的空格,并实现按行显示
2018/07/24 Python
Python中GIL的使用详解
2018/10/03 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
诉前财产保全担保书
2014/05/20 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
停车场管理协议书范本
2014/10/08 职场文书
杭州西湖英语导游词
2015/02/03 职场文书