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 mssql 时间格式问题
Jan 13 PHP
一个很不错的PHP翻页类
Jun 01 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
Nov 07 PHP
php获取淘宝分类id示例
Jan 16 PHP
destoon复制新模块的方法
Jun 21 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
Aug 17 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 22 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 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 中dirname(_file_)讲解
2007/03/18 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
JavaScript单元测试ABC
2012/04/12 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
JAVA面试题 static关键字详解
2019/07/16 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
Python生成器以及应用实例解析
2018/02/08 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
房地产销售经理岗位职责
2014/01/01 职场文书
统计专业自荐书
2014/07/06 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
投标单位介绍信
2015/05/05 职场文书
退休欢送会主持词
2015/07/01 职场文书
运动会班级前导词
2015/07/20 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
pytorch中的 .view()函数的用法介绍
2022/03/17 Python