background image

php 电子商务系统:带验证码的用户登录

带验证码的用户登录

为了防止使用恶意程序不断猜测用户的密码,本购物系统采用了带验证码的用户登录技
术,如图 1 所示。
验证码的主要思想是在用户登录页面随机产生一个数字,用户登录同时需要输入这个数
字,用户提交输入的内容后,系统将把用户输入的验证码与系统记录的验证码进行对照 ,
如果相同则进行其他信息的检测,否则将返回错误信息。使用验证码技术的难度在于如何
将 1165 转换成一个内容为 1165 的图片显示出来,它的具体实现代码如下:
<!--
**********************************left.php*************************************--
>
<?php
$num=intval(mt_rand(1000,9999));         //产生一个 4 位的随机数
for($i=0;$i<4;$i++)
{
echo "<img src=images/code/".substr(strval($num),$i,1).".gif>";
}                                       //通过循环将这个随机数以图片的形式显示出来
?>
函数 intval()的作用是将该函数中的参数转变成整型。函数 strval()的作用是将该函数中的参
数转变成字符型。下面我们重点介绍 substr()的用法。
string substr(string str,int start, int [length])
此函数返回字符串 str 中从位置 start 开始,长度为 length 的子串,其中 start 和 length 既可以
取正数,也可以取负数。
函数 mt_rand(参数 1,参数 2)的作用是产生参数 1 与参数 2 之间的随机整数。与该函数功能
类似的函数还有 rand()。
用户提交信息后,所有的信息将在 chkuser.php 进行验证,详细代码如下:
<!--
**********************************chkuser.php***********************************
**-->
<?php
$username=$_POST[username];           //提取用户提交的昵称
$userpwd=md5($_POST[userpwd]);        //提取用户提交的密码
$yz=$_POST[yz];                      //提取用户输入的验证码的值
$num=$_POST[num];                   //提取系统保存在隐藏区域中的内容
if(strval($yz)!=strval($num))
{
echo "<script>alert('验证码输入错误!');history.go(-1);</script>";
exit;
}                                   //判断用户输入的验证码与系统记录的验证码是否相同
class chkinput                            //定义密码验证类
{
var $name;