检查登录用户的角色(PHP)

检查登录用户的角色(PHP),php,mysql,Php,Mysql,首先,我搜索了一个与我相同的问题,不幸的是我无法理解答案。它说使用Auth等。。。呜呜呜呜。到目前为止我只知道基本知识 所以我的问题是:如何检查当前登录的用户及其角色 我以为我可以很容易做到,事实上我做到了,但我正在建设的网站的用户应该只有一个。哈哈,我有两个栏目,分别是session和membership。无论如何,我的代码写在下面(这绝对是错误的,我今天凌晨2点才意识到。如果这一方的用户再次是唯一的用户,它将100%工作 if(empty($_SESSION['user']))

首先,我搜索了一个与我相同的问题,不幸的是我无法理解答案。它说使用Auth等。。。呜呜呜呜。到目前为止我只知道基本知识

所以我的问题是:如何检查当前登录的用户及其角色

我以为我可以很容易做到,事实上我做到了,但我正在建设的网站的用户应该只有一个。哈哈,我有两个栏目,分别是session和membership。无论如何,我的代码写在下面(这绝对是错误的,我今天凌晨2点才意识到。如果这一方的用户再次是唯一的用户,它将100%工作

    if(empty($_SESSION['user']))
    {
        // If they are not, we redirect them to the login page.


        // Remember that this die statement is absolutely critical.  Without it,
        // people can view your members-only content without logging in.
        header("Location: http://localhost/se/");
    }
    //if(!empty($_SESSION['user']) )
    else
    {
        //This following codes are for checking the session in DB
        $query = "
            SELECT
                id,
                password,
                emailAddress,
                membership
            FROM memberlist
            WHERE
                session = :var_val
        ";
        // The parameter values
        $query_params = array(
           ':var_val' => 'True'
        );      

        try
        {
            // Execute the query against the database
            $stmt = $db->prepare($query);
            $result = $stmt->execute($query_params);

        }
        catch(PDOException $ex)
        {
            // Note: On a production website, you should not output $ex->getMessage().
            // It may provide an attacker with helpful information about your code. 
            die("Failed to run query: " . $ex->getMessage());
        }
        $row = $stmt->fetch();



        if ( $row['membership'] == 'Officer'  || $row['membership'] == 'Member' )
        {
            header("Location: http://localhost/memberdir/index.php");
        }
}
如果用户的成员资格==1,则转到admin目录。 否则请转到成员目录


请帮助:(

当用户登录成功时,您可以这样做:

if(login success)
{
   $_SESSION['user']=array('id'=>$id,
                'emailAddress'=>$emailAddress,
                'membership'=>$membership);//the three values are selected from database when login in
}else
{
    // do some thing 
}
然后,当您检查用户时,您可以使用:

if(empty($_SESSION['user']))
    {
        // If they are not, we redirect them to the login page.


        // Remember that this die statement is absolutely critical.  Without it,
        // people can view your members-only content without logging in.
        header("Location: http://localhost/se/");
    }else
    {
        //get user info from session
    }

要启动用户会话,请执行以下操作:

session_start();
要向该会话添加参数,请执行以下操作:

$_SESSION['parameter'] = $parameter;
要获取该参数,请执行以下操作:

$getParameter = $_SESSION['parameter'];
因此,请确保将
session_start();
放在页面的任何输出之前(打印任何内容之前):

因此,在显示特定用户(或仅显示一个用户,没有区别)的成员文件中,检查会话参数是否存在以及如何处理它:

if (isset($_SESSION['membership'])) {
    //membership parameter is set
    if($_SESSION['membership'] == 'Officer') {
        echo "Hey, your membership is Officer, here is your page";
    } else if ($_SESSION['membership'] == 'Member') {
        echo "Hey your membership is Member, here is your page";
    }
}

这将有助于您理解基本知识,您可以从中开始。

您应该在用户登录时将用户角色添加到会话中。这样,您就不必每次加载页面时都这样做。您好,实际上我还不知道如何做/使用该会话,我有一个使用该会话的示例登录系统,我只是使用了它在我的项目中。任何使用角色会话的链接或示例系统?到目前为止,这对我来说非常困难。我认为您的代码失败了,因为当您有两个用户时,结果将获取两行,$row['membership']无法作为概念使用$row[0]['membership']应该可以使用。您需要选择一个由唯一键标识的用户(一个键=一个用户),您还应该阅读更多关于“身份验证”的内容,这是应用程序的关键部分。谢谢Jean,您是对的,如果有两个用户访问该站点,它将失败。但是不,我现在不喜欢该身份验证。我在这个项目中的时间不多了。:)我已经迟到好几天了,我需要休息一下哈哈。如果你输入错误,请删除“:”
$query\u params=array('var\u val'=>'True'))
谢谢patato先生,我会继续尝试。此外,我正在阻止用户访问某些页面。例如,我的用户角色仅为成员,如果我尝试访问管理目录,我将重定向到某个页面(我这样做了,但仅限一名用户)。如果您从$u会话['user']获取vale,这很容易做到然后你只需要检查一下$_SESSION['user']['membership']如果$_SESSION['user']['membership']==0那么admin else normalhi sir JSG,我在这里得到了我的示例系统:然后我在开发我的网站的一开始就使用了那里的代码))作为abc。。非常感谢。我现在明白了。我没有使用isset(),我检查成员会话是否为空。if(空($_会话['membership']))
if (isset($_SESSION['membership'])) {
    //membership parameter is set
    if($_SESSION['membership'] == 'Officer') {
        echo "Hey, your membership is Officer, here is your page";
    } else if ($_SESSION['membership'] == 'Member') {
        echo "Hey your membership is Member, here is your page";
    }
}