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

PHP
php面向对象全攻略 (十五) 多态的应用
php面向对象全攻略 (十六) 对象的串行化
php面向对象全攻略 (十七) 自动加载类
PHP parse_url 一个好用的函数
PHP 字符串分割和比较
全世界最小的php网页木马一枚 附PHP木马的防范方法
PHP 日期加减的类,很不错
PHP 日期时间函数的高级应用技巧
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Ha0k 0.3 PHP 网页木马修改版
PHP iconv 函数转gb2312的bug解决方法
关于页面优化和伪静态
使用zend studio for eclipse不能激活代码提示功能的解决办法
PHP 身份验证方面的函数
基于OpenCV的PHP图像人脸识别技术
用mysql触发器自动更新memcache的实现代码
php 数学运算验证码实现代码
PHP网站开发方案实例
PHP教程:挖掘细节提升网站性能
搜索引擎技术核心揭密(PHP)

PHP实例:PHP验证码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 148 ::
收藏到网摘: 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>';
}
*/
?>

编辑整理