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 数据库树的遍历方法
Feb 06 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
php实现可用于mysql,mssql,pg数据库操作类
Dec 13 PHP
制作安全性高的PHP网站的几个实用要点
Dec 30 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
php文件读取方法实例分析
Jun 20 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
php封装的mysqli类完整实例
Oct 18 PHP
PHP不使用递归的无限级分类简单实例
Nov 05 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
Feb 08 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 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引用传值实例详解学习
2013/11/06 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
python Django模板的使用方法(图文)
2013/11/04 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
python实现三种随机请求头方式
2021/01/05 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
期末自我鉴定
2014/01/23 职场文书
技能比赛获奖感言
2014/02/14 职场文书
安全承诺书格式
2014/05/21 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
隐形的翅膀观后感
2015/06/10 职场文书