实战突击
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 登录模块设计

1.5.1 登录模块概述

出于对会议内容保密性的考虑,会议记录管理系统不支持匿名用户访问,所以用户如果想要正常使用该系统,首先必须执行用户登录操作,在登录成功后,才可以进行添加、查看、查找等操作。其运行效果如图1.14所示。

图1.14 登录模块的运行效果

1.5.2 用户权限判断技术

在index.php文件中通过SESSION变量自动判断登录状态。如果用户状态登录被激活,则自动跳转到会议管理首页,否则跳转到用户登录界面。其代码如下:

代码位置:光盘\MR\01\index.php

        <?php
        session_start();
        //判断当前登录状态
        if(isset($_SESSION["name"]) and isset($_SESSION["id"]) and isset($_SESSION["rights"])){
        echo "<meta http-equiv=\"refresh\" content=\"0;url=manager.php\" />";
        }else{
        echo "<meta http-equiv=\"refresh\" content=\"0;url=login.php\" />";
        }
        ?>

1.5.3 用户登录实现过程

创建前台登录页面(login.php)完成用户登录表单的设计,当单击“登录”按钮时,将用户名和密码提交到处理页(login_chk.php),完成登录用户的验证操作。

login.php文件的关键代码如下:

        <table cellpadding="0" cellspacing="0">
            <form method="post" action="login_chk.php">
              <tr>
                <td width="58"  height="42"><div align="right">用户名:</div></td>
                <td width="163"><input class="input1" id="username" type="text"
                name="username" onmouseover="this.style.backgroundColor='#deebef'"
                onmouseout="this.style. backgroundColor=''"/></td>
              </tr>
              <tr>
                <td width="58" height="42"><div align="right">密&nbsp;&nbsp;码:</div></td>
                <td width="163"><input class="input2" id="pass" type="password" name=
                "pass" onmouseover="this.style.backgroundColor='#deebef'" onmouseout
                ="this.style.backgroundColor=''"/></td>
              </tr>
              <tr>
                <td colspan="2"  height="22"><center>
                  <input name="submit" type="submit"  class="btnlogin" value=""/>
                        &nbsp;
                  <input name="reset" type="reset" class="btnreset" value="" /></center>
                </td>
              </tr>
              </form>
        </table>

登录处理文件login_chk.php,完成对系统提交数据的判断,并且更新用户登录的次数和时间。其关键代码如下:

        <?php
        session_start();
        include_once("conn/conn.php");                    //加载数据库连接文件
        if(empty($_POST["username"]) or empty($_POST["pass"])){
        echo "<script>alert('用户名和密码不能为空!');history.go(-1);</script>";
        }else{
              $username=$_POST["username"];
              $pass=$_POST["pass"];
              //判断登录用户名是否存在
              $sqltest="select * from tb_meeting_user where userName='$username'";
              $testrst=$conn->Execute($sqltest);              //执行查询操作
              if(!$testrst->EOF){
              $sqlstr="select * from tb_meeting_user where userName='$username' and
              userPassword='$pass'";
              $rst=$conn->Execute($sqlstr);
                if(!$rst->EOF){                                 //判断登录用户名和密码是否正确
                  if($rst->fields[6]==0){                       //判断登录用户是否被冻结
                      $_SESSION["id"]=$rst->fields[0];          //赋值给SESSION变量
                      $_SESSION["name"]=$rst->fields[1];
                      $_SESSION["rights"]=$rst->fields[5];
                      $_SESSION["lasttime"]=$rst->fields[3];
                      $logindate=date("Y-m-d ").date("G:i:s");    //当前登录时间
                      $logincount=$rst->fields[4];                //当前登录次数
                      $logincount++;                              //登录次数自增1
                      $sqlstrud="update tb_meeting_user set userLoginCount=
                      $logincount,userLastLoginDate='$logindate' where userId =
                      $_SESSION[id]";                              //更新登录次数和时间
                      $conn->Execute($sqlstrud);
                      echo "<meta http-equiv=\"refresh\" content=\"2;url=manager.php\" />";
                      echo "<img src='images/loginwait.jpg' width='1003' height='636' />";
                }else if($rst->fields[6]==1){
                      echo "<script>alert('该用户账号已被冻结 请联系管理员!');history.go
                      (-1);</script>";
                }
                }else{
                  echo "<script>alert('密码错误,请重新登录。');history.go(-1);</script>";
                }
              }else{
                echo "<script>alert('该用户名不存在!,请重新登录。');history.go(-1);
                </script>";
              }
        }
        ?>

当用户登录成功后,页面会在2秒后自动跳转到会议记录管理系统的主界面。