All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
《Effective,C#》之减少装箱和拆箱_.net资料_编程技术
(易懂,不使用存储过程)asp.net(C#)海量数据表高效分页算法_[Asp.Net教程]
简单学习动态网页制作PHP中的Cookies_php资料_编程技术
C#箴言:用静态构造函数初始化静态成员_.net资料_编程技术
在datagrid中求和的代码(c#、vb.net)_[Asp.Net教程]
asp.net2.0中Cache对象的属性和方法
asp.net函数返回多个值方法_[Asp.Net教程]
SQL Server数据转换服务基本概念介绍_[SQL Server教程]
在GridView中实现数据并列显示_[Asp.Net教程]
用ASP+CSS实现网页随机背景_[Html教程]
Reading number is top 10 pictures
西班牙山村小景5
Flow chart of breast implants
陪睡门马睿菈自曝写真 称首拍大尺度照片2
浴室里的美女
Summer is most suitable for young people to travel in China10
Terrorist smile the largest human history an explosion1
英雄联盟超神十连杀截图
Ashlynn Brooke show proud chest measurement3
新版武松打虎
美女就是美女
Download software ranking
jdk1.5
Tram sex maniac 2 (H) rar bag2
Unix video tutorial10
在线棋牌游戏3.05版
Red cliff
The Bermuda triangle2
传奇私服架设教程
星际争霸1.08硬盘免安装版
C++编程教程第三版
WebService在.NET中的实战应用教学视频 → 第1集
归海一刀 published in(发表于) 2014/2/17 7:39:59 Edit(编辑)
PHP设计可旋转字母验证码码_[PHP教程]

PHP设计可旋转字母验证码码_[PHP教程]

PHP设计可旋转字母验证码码_[PHP教程]

















这里我们先看看 QQ 的验证码效果:


对于大公司的验证码是做了不少处理的,比如每个字符是可以任意大小、旋转甚至可扭曲的,同时每个字符的边缘都能粘在一起(这个是重点也是难点)还有一根曲线贯穿其中,这样可以最大限度的防止验证码被破解程序读取,我给出的源码达不到粘合的效果,如果大家有兴趣可以自行研究了。

下面给出我的效果图:


下面我们开始制作,首先要绘制可旋转文字必须用到矢量字体,如果是使用 imagestring 来向图片里绘制文字的话 PHP 使用的是位图文字,是无法进行旋转的,而绘制矢量字体到图片里需要用到 imagettftext 函数,ttf 是矢量字体的后缀名,我们每天在电脑上接触到的字体大多都为这类字体,矢量字体可以不失真的放大缩小和旋转。

1.首先是获得需要使用的矢量字体,可以从网上下载,这里我使用 ariblk.ttf 字体,注意不要使用带中文的,因为验证码一般不包含中文,而中文矢量字体一般都很大,10M 左右,我们这里的 ariblk.ttf 只有 115K。

2.将 ariblk.ttf 拷贝到后面创建的源文件的同一目录下。

3.添加源文件 captcha.php 用于创建验证码的图片,内容如下:




















//声明返回 png 图片文件。
header("content-type:image/png");
//开启 session。
session_start();
//四位的验证码。
$checkWord = ’’;
//验证码的所有可用字符。
$checkChar = ’abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ1234567890’;
//获取 4 位随机数。
for($num=0; $num<4; $num++){
$char=rand(0, strlen($checkChar)-1);
$checkWord.=$checkChar[$char];
}
//将验证字符放入对话中。
$_SESSION["checkWord"]=$checkWord;
//创建图片。
$image = imagecreate(70,24);
//字体路径。
$font = "ariblk.ttf";
//设置要用到的颜色。
$red = imagecolorallocate($image,0xf3,0x61,0x61);
$blue = imagecolorallocate($image,0x53,0x68,0xbd);
$green = imagecolorallocate($image,0x6b,0xc1,0x46);
$colors = array($red, $blue, $green);
$gray = imagecolorallocate($image,0xf5,0xf5,0xf5);
//用灰色填充图片。
imagefill($image,0,0,$gray);
//绘制一条干扰线。
imageline($image,rand(0,5),rand(6,18),rand(65,70),rand(6,18),$colors[rand(0,2)]);
//将验证字符绘入图片。
for($num=0; $num<4; $num++){
imagettftext($image, rand(12,16), (rand(0,60)+330)%360, 5+15*$num+rand(0,4), 18+rand(0,4), $colors[rand(0,2)], $font, $checkWord[$num]);
}
//输出图片。
ImagePNG($image);
ImageDestroy($image);
?>









4.添加 test.php 用于测试验证码的工作,带刷新脚本(支持 IE 和 FF ),内容如下:























验证码测试



if(isset($_POST["validate"])){
$validate=strtolower($_POST["validate"]);
if($validate != strtolower($_SESSION["checkWord"])){
echo "

输入有误

";
}else{
echo "

验证通过

";
}
}
?>

验证码(不区分大小写):



看不清?















5.现在我们可以从 IE 或 FF 浏览器进入这个目录的 test.php 页面来看效果了。




























添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.