当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP实例:PHP验证码

PHP
PHP新手总结的PHP基础知识
php实现gb2312和unicode间编码转换
用php语言实现数据库连接详细代码介绍
详细解析 PHP 向 MySQL 发送数据过程
利用PHP V5开发多任务应用程序
详细讲解PHP中缓存技术的应用
php escapeshellcmd多字节编码漏洞
《PHP设计模式介绍》导言
《PHP设计模式介绍》第一章 编程惯用法
《PHP设计模式介绍》第二章 值对象模式
《PHP设计模式介绍》第三章 工厂模式
《PHP设计模式介绍》第四章 单件模式
《PHP设计模式介绍》第五章 注册模式
《PHP设计模式介绍》第六章 伪对象模式
《PHP设计模式介绍》第七章 策略模式
《PHP设计模式介绍》第八章 迭代器模式
《PHP设计模式介绍》第九章 观测模式
《PHP设计模式介绍》第十章 规范模式
《PHP设计模式介绍》第十一章 代理模式
《PHP设计模式介绍》第十二章 装饰器模式

PHP实例:PHP验证码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 198 ::
收藏到网摘: n/a

确认码生成文件checkNum_session.php

以下为引用的内容:

<?
Header("Content-type:image/png");
//定义header,声明图片文件,最好是png,无版权之扰;
//生成新的四位整数验证码
session_start();//开启session;
authnum_session = '';
str = 'abcdefghijkmnpqrstuvwxyz1234567890';
//定义用来显示在图片上的数字和字母;
l = strlen(str); //得到字串的长度;
//循环随机抽取四位前面定义的字母和数字;
for(i=1;i<=4;i++)
{
num=rand(0,l-1);
//每次随机抽取一位数字;从第一个字到该字串最大长度,
//减1是因为截取字符是从0开始起算;这样34字符任意都有可能排在其中;
authnum_session.= str[num];
//将通过数字得来的字符连起来一共是四位;
}
session_register("authnum_session");
//用session来做验证也不错;注册session,名称为authnum_session,
//其它页面只要包含了该图片
//即可以通过_SESSION["authnum_session"]来调用

//生成验证码图片,
srand((double)microtime()*1000000);
im = imagecreate(50,20);//图片宽与高;
//主要用到黑白灰三种色;
black = ImageColorAllocate(im, 0,0,0);
white = ImageColorAllocate(im, 255,255,255);
gray = ImageColorAllocate(im, 200,200,200);
//将四位整数验证码绘入图片
imagefill(im,68,30,gray);
//如不用干扰线,注释就行了;
li = ImageColorAllocate(im, 220,220,220);
for(i=0;i<3;i++)
{//加入3条干扰线;也可以不要;视情况而定,因为可能影响用户输入;
imageline(im,rand(0,30),rand(0,21),rand(20,40),rand(0,21),li);
}
//字符在图片的位置;
imagestring(im, 5, 8, 2, authnum_session, white);
for(i=0;i<90;i++)
{//加入干扰象素
imagesetpixel(im, rand()%70 , rand()%30 , gray);
}
ImagePNG(im);
ImageDestroy(im);
?>

确认码调用文件sessionValidate.php

以下为引用的内容:

<?php
session_start();
//在页首先要开启session,
//error_reporting(2047);
session_destroy();
//将session去掉,以每次都能取新的session值;
//用seesion 效果不错,也很方便
?>
<html>
<head>
<title>session 图片验证实例</title>
</head>
<body>
此例为session验证实例
<form action="" method="post">
验证码:<input type="text" name="validate" value="" size=10> <img src="checkNum_session.php"><br>
<input type="submit">
</form>
<?php
//打印上一个session;
echo "上一个session:<b>"._SESSION["authnum_session"]."</b><br>";
validate="";
if(isset(_POST["validate"])){
validate=_POST["validate"];
echo "您刚才输入的是:"._POST["validate"]."<br>状态:";
if(validate!=_SESSION["authnum_session"]){
//判断session值与用户输入的验证码是否一致;
echo "<font color=red>输入有误</font>";
}else{
echo "<font color=green>通过验证</font>";
}
}
/*
//打印全部session;
PrintArr(_SESSION);
function PrintArr(aArray){
echo '<xmp>';
print_r(aArray);
echo '</xmp>';
}
*/
?>

编辑整理