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

PHP
用PHP脚本在Linux系统上读取输入和对文
PHP中register_globals引发的问题
PHP基础:安全基础IIS 6的PHP最佳配置
Web开发基础知识分享:Php基础知识了解
实例解析:PHP程序开发中的中文编码问题
PHP5程序中新增加日期(date)函数的常量
新手学堂:PHP服务器变量设置的方法介绍
如何正确理解PHP程序错误信息的表示含义
PHP程序百行代码快速构建简易聊天室方法
如何使用PHP程序开发高效的WEB网络系统
加速PHP动态网站 关于MySQL索引分析优化
教你如何在SQL Server数据库中加密数据
用PHP程序直接调用文本文件内容实例
使用php的zlib压缩和解压缩swf文件
升级PHP5的理由:PHP4和PHP5性能对比
解决php存取mysql 4.1乱码问题
FC 5 php 不可以连接远程mysql数据库
一个特别好的学习PHP引用返回的例子
热门看点:PHP 6新版发布前新特性大展望
开源新版NetBeans让PHP开发变得更加轻松

PHP实例:PHP验证码


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

编辑整理