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 获取远程文件内容的函数代码
Mar 24 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
一个简洁实用的PHP缓存类完整实例
Jul 26 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
php中try catch捕获异常实例详解
Nov 21 PHP
php微信支付之APP支付方法
Mar 04 PHP
PHP计算加权平均数的方法
Jul 16 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
thinkphp框架类库扩展操作示例
Nov 26 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
Zerg兵种介绍
2020/03/14 星际争霸
Terran剧情介绍
2020/03/14 星际争霸
PHP共享内存用法实例分析
2016/02/12 PHP
PHP基本语法实例总结
2016/09/09 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
2018/05/21 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
Python实现二分查找算法实例
2015/05/26 Python
Python实现合并字典的方法
2015/07/07 Python
Python实现新浪博客备份的方法
2016/04/27 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
Python程序控制语句用法实例分析
2020/01/14 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
元旦晚会邀请函
2014/01/27 职场文书
学雷锋标语
2014/06/25 职场文书
本科应届生求职信
2014/08/05 职场文书
初级党校心得体会
2014/09/11 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫