PHP(9) 用户登陆(版本1)

PHP(9) 用户登陆(版本1)
 
 
今天,咱们来看一个用户登陆的案例!这个案例咱们来采用几个不一样的版原本实现!数据库,咱们就采用上一篇博文中的数据表和数据表吧!

首先,咱们来设计一个用户登陆界面,也就是所谓的GUI!界面的效果以下图
 
 
具体的样式,我在附件中已经提供了,你们能够下载看看!下面咱们就开始写程序了!

一、 产生随机的验证码

二、 在客户端验证表单的合法性

三、 提交表单后,验证用户的合法性

四、 根据用户是否合法,返回信息到客户端

第一步:产生随机的验证码

在PHP中产生随机验证码的方式主要有两种:字符和图像(须要GD库支持);而字符型的验证码又具体的分为数字型和字型符(也就是数字和字母的组合体),在版本1中咱们先来看一下数字的随机验证码!

字符串处理函数中的rand、mt_rand能够产生在指定范围内的随机数,这个正好符合咱们的要求!
因此
$validCode = rand(1000,9999);//也就是说从1000至9999之间产生一个随机数,固然也可使用mt_rand。

如今产生随机验证码后,应该将其显示在GUI中,用户以其为参照,因此,在“验证码”文本框后,将其输出就能够了!代码以下:

<?=$validCode?>

当第一步完成后,效果以下图
 

 
第二步:在客户端验证表单的合法性

所谓的在客户端验证表单的合法性,其实就是指使用JS来查看表单中必选项是否填写、必选项是否选择、表单中某些元素的数据是否合法(如用户名中禁止包含特殊符号)等。如今,咱们先简单的验证一下,用户和密码是否填写!
function validateLogin()

{

    if($(“username”).value == “”)
 
    {

        window.alert(“用户名必须填写”);

        return false;

    }

    if($(“password”).value == “”)

    {

        window.alert(“密码必须填写”);

        return false;

    }

    return true;

}

function $(id)
 
{

    return document.getElementById(id);
 
}

程序运行的结果以下:
 

 
如今的问题就是如何验证”验证码”的合法性,而验证码自己又是随机数!!!???

咱们可不能够这样说:上图中红圈括起来的部分,必定是正确的验证码?答案是确定的,那么也就是说,咱们只须要判断用户所输入的验证码是否与红圈部分一致,从而就能够获取用户所输入的验证码是否正确了!

如今的问题又出来了,那么怎么获取红色部分的文本呢?咱们还记得在JS中存在innerHTML和innerText属性吗?若是咱们将红色区域放置在某一个标记内,而且为该标记添加ID属性,那么,咱们就能够经过document.getElementById(“xxx”).innerText或document.getElementById(“xxx”).innerHTML来获取其中的文本了(固然这二者之间是存在区别的!),好了,就这么干!因此代码部分应改成

<span id=”showValidCode”><?=$validCode?></span>

那么JS部分的代码就变成了:

function validateLogin()
{
    if($(“username”).value == “”)

    {
        window.alert(“用户名必须填写”);

        return false;

    }

    if($(“password”).value == “”)

    {

    window.alert(“密码必须填写”);

    return false;
 
    }

    if($(“validCode”).value != $(“showValidCode”).innerText)

    {
 
        window.alert(“验证码错误”);

        return false;

    }

    return true;

}

好了,运行一下,其结果以下:
 

 
第三步:提交表单后,验证用户的合法性

其实,所谓用户登陆过程,就是将用户名和密码提交至服务器后,在数据库中查找是否存在此用户,若是存在,则证实用户登陆成功,不然,登陆失败,因此:

1. 咱们须要在服务器上获取用户输入的用户名和密码

$username = $_POST[‘username’];

$password = md5($_POST[“password”])

由于,在数据库里用户的密码使用MD5加密了,因此,当获取出密码后,也必须进行加密!

2. 以用户输入的用户名和密码为条件,在数据库进行查询!

既然在数据库中查询,链接数据库服务器就成为必然了!

$conn = mysql_connect(“localhost”,”root”,””);

mysql_select_db(“test”);

$sql = “select * from users where username=’{$username} and password=’{$password}’”;

$result = mysql_query($sql);

如今的问题就是如何判断用户是否登陆成功?若是SQL命令成功执行的话(也就是不存在语法错误),其返回的数据类型为资源,也就是其存放告终果的结果集,若是咱们能够知道结果集中包含的行数(记录数),由于其结果集中的行数只能是零或非零的数字,若是为零的话,则证实用户登陆失败,不然成功(即便成功,结果集中的行数也只能为1,缘由…)!因此:

$rowsNum = mysql_num_rows($result);

3. 如今,咱们能够根据用户登陆的状态返回给客户端信息了,也就是第四步

if($rowsNum)

echo(“用户登陆成功”);

else

echo(“用户登陆失败,单击这里<a href=\”login.php\”>从新登陆</a>”);

其运行的结果以下:

 

 
相关文章
相关标签/搜索