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 win下Socket方式发邮件类
Aug 21 PHP
php导入导出excel实例
Oct 25 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
Jan 04 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
php验证码的制作思路和实现方法
Nov 12 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
Sep 11 PHP
PHP微信公众号开发之微信红包实现方法分析
Jul 14 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
Nov 20 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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
在JavaScript中调用php程序
2009/03/09 PHP
PHP实现多条件查询实例代码
2010/07/17 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
vuex实现简易计数器
2016/10/27 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
python实现矩阵乘法的方法
2015/06/28 Python
Python实现字典的key和values的交换
2015/08/04 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
Hammitt官网:设计师手袋
2020/05/23 全球购物
请介绍一下Ant
2016/07/22 面试题
关于责任的演讲稿
2014/05/20 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
关于mysql中string和number的转换问题
2022/06/14 MySQL