从表中确定帐户类型并注册会话

时间:2012-09-07 21:00:17

标签: php mysql sql

基本上我在这里尝试的是使用客户登录详细信息从我的数据库中的表中读取,然后检索与此信息匹配的记录。在此表中有一个名为“AccountType”的列,它将普通用户与管理员区分开来,如果此列为1,则他们是普通用户。如果此列为2,则他们是经理。

现在我在我的代码中实现了这个问题,下面是我的登录过程脚本的片段:

<?php

***session_start()

$query = mysql_query("SELECT * FROM accounts WHERE username='$username' and password='$password'", $db) or die ("Query failed with error: ".mysql_error());

$count=@mysql_num_rows($query);

if(***$count == 1)
    {
    ***$user_row = mysql_fetch_array($result)

        $userid = $user_row["userid"];    
        $_SESSION['userid'] = $userid;

        $customername = $user_row["customername"];    
        $_SESSION['customername'] = $customername;

        $AccountType = $user_row["accounttype"];

        if ($AccountType == 2)
        { 
            $_SESSION['manager'] = $AccountType;
        }

根据这一点,当我检查每个页面包含的登录脚本时,它将根据帐户类型显示导航上的特定链接,如果他们是用户,他们将有权访问普通链接,但如果他们是经理他们可以访问管理员功能,下面是代码片段:

***session_start();
if (***isset($_SESSION['userid'])) 
{
    $employeeid = $_SESSION['userid'];
    $firstname = $_SESSION['customername'];

    if (***isset($_SESSION['manager'])) 
    {
        $User_Options .='Manager links go here';
    }

    else
    {
    $Links .='Normal Links go here';
    }   

}

这只是一个基本的截断版本,但它提供了我试图完成的基础。我猜测使用while循环它会覆盖会话,我理解,但是我只会搜索一条记录。它在某种程度上起作用,但即使AccountType为1,它也会显示2的选项。

有人可以帮助我进一步解决这个问题吗?三江源!

1 个答案:

答案 0 :(得分:1)

在登录表单上使用类似的内容:

$_SESSION['manager'] = false;
if ($AccountType == 2) {
  $_SESSION['manager'] = true;
}

然后:

if ($_SESSION['manager']) {
  // display manager-only options
} else {
  // display user-only options
}
// Display options for everyone here