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 相关文章推荐
如何将数据从文本导入到mysql
Oct 09 PHP
php zlib压缩和解压缩swf文件的代码
Dec 30 PHP
php抓取https的内容的代码
Apr 06 PHP
简单实现限定phpmyadmin访问ip的方法
Mar 05 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
PHP常用设计模式之委托设计模式
Feb 13 PHP
linux下为php添加iconv模块的方法
Feb 28 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
PHP基于面向对象实现的留言本功能实例
Apr 04 PHP
PHP实现的获取文件mimes类型工具类示例
Apr 08 PHP
thinkPHP5.0框架事务处理操作简单示例
Sep 07 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/04 星际争霸
php 多个submit提交表单 处理方法
2009/07/07 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
php use和include区别总结
2019/10/13 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
vue中轮训器的使用
2019/01/27 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
浅析python参数的知识点
2018/12/10 Python
python构建指数平滑预测模型示例
2019/11/21 Python
Django的CVB实例详解
2020/02/10 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
UNIX特点都有哪些
2016/04/05 面试题
最新大学生创业计划书写作攻略
2014/04/02 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
党员公开承诺书内容
2014/05/20 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
大学生工作自荐书
2014/06/16 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
Python Matplotlib库实现画局部图
2021/11/17 Python