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面向对象编程快速入门
Dec 14 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
计算一段日期内的周末天数的php代码(星期六,星期日总和)
Nov 12 PHP
c#中的实现php中的preg_replace
Dec 21 PHP
flash用php连接数据库的代码
Apr 21 PHP
浅谈Eclipse PDT调试PHP程序
Jun 09 PHP
php计算数组相同值出现次数的代码(array_count_values)
Jan 20 PHP
php通过文件流方式复制文件的方法
Mar 13 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
Sep 22 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
Aug 20 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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
php简单统计在线人数的方法
2016/05/10 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
JavaScript知识点整理
2015/12/09 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
python实现ip查询示例
2014/03/26 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python如何输出警告信息
2020/07/30 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
《再别康桥》教学反思
2014/02/12 职场文书
2014年情人节活动方案
2014/02/16 职场文书
村党支部书记承诺书
2014/05/29 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
高三英语复习计划
2015/01/19 职场文书
律师催款函范文
2015/06/24 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
Python的property属性详细讲解
2022/04/11 Python