php - 使用 session 变量来区分网站用户的类型,例如管理员或成员(member)

标签 php mysql session

您好,我正在尝试区分使用我网站的用户是管理员还是成员(member)。我有一个数据库,其中有用户角色表,例如 userRole 1 = member 和 userRole2 = admin。我有这段代码,可以获取该特定用户的 userRoleID 并将其存储在变量中:

$result = "SELECT userRoleID FROM tbl_users" or die("Error: " . mysqli_error($con));

                $res = $con->query($result);

                while($row = mysqli_fetch_array($res)) {
                    $UserRoleID = $row['userRoleID'];

                    $_SESSION['user_role'] = $UserRoleID;
                }

运行成功。

正如您在代码的最后一行中看到的,我尝试将包含 userID 的变量存储在 session 变量中,这也成功了。

现在我试图在另一个 php 页面中使用该 session 变量来决定向用户显示什么,即如果他是管理员,他会获得更多功能,如果他是成员(member),他会获得更少的功能。我有这个代码:

<?php

        if (!empty($_SESSION['user_role'] == '2')) 
        { ?>
        <li><a href='index.php'>Home</a></li>
        <li><a href='#'>About Us</a></li>
        <li><a href='#'>Contact Us</a></li>
        <li><a href='loginpage.php'>Login</a></li>

        <?php } else if ($_SESSION['user_role'] == '3') 
        { ?>
        <li><a href='index.php'>Home</a></li>
        <li><a href='#'>About Us</a></li>
        <li><a href='#'>Contact Us</a></li>
        <li><a href='loginpage.php'>Login</a></li>
        <li><a href='#'>Admin</a></li>


        <?php } ?>

正如您所看到的,在此代码中它是否根据用户角色决定向用户显示哪些菜单项。但它不起作用,我收到这些错误:

注意: undefined variable :第 7 行 C:\xampp\htdocs\WSSA1S1\new\pagetemplateHEADER.php 中的 _SESSION

注意: undefined variable :_SESSION 位于 C:\xampp\htdocs\WSSA1S1\new\pagetemplateHEADER.php 第 14 行

我认为这是因为 php 代码的开头没有 session_start() 但当我插入 session_start() 时出现此错误:

注意: session 已启动 - 忽略第 4 行 C:\xampp\htdocs\WSSA1S1\new\pagetemplateLOGINSEC.php 中的 session_start()

有人可以给我一些建议吗?

P.S 我是 PHP、MySql 和 stackoverflow 的初学者,所以如果解决方案很简单,请放轻松。

最佳答案

to keep things simple,
I would suggest something like the following:

<?php

    if( (isset($_SESSION['user_role']) ) && (false != $_SESSION['user_role']) )
    {
        if( '2' == $_SESSION['user_role'] ) 
        { 
            echo "<li><a href='index.php'>Home</a></li>";
            echo "<li><a href='#'>About Us</a></li>";
            echo "<li><a href='#'>Contact Us</a></li>";
            echo "<li><a href='loginpage.php'>Login</a></li>";
        } 

        elseif ('3' == $_SESSION['user_role'] ) 
        { 
            echo "<li><a href='index.php'>Home</a></li>";
            echo "<li><a href='#'>About Us</a></li>";
            echo "<li><a href='#'>Contact Us</a></li>";
            echo "<li><a href='loginpage.php'>Login</a></li>";
            echo "<li><a href='#'>Admin</a></li>";
        } 

        else
        { // error condition
            // display details of invalid $_SESSION['user_role']
        }
    }

    else
    { // error condition
        // display details of missing or empty $_SESSION['user_role']
    }
?>

关于php - 使用 session 变量来区分网站用户的类型,例如管理员或成员(member),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23970672/

相关文章:

mysql - 将子查询限制为同一行中的 2 个参数

php - 带 php session 的倒数计时器

php - Yii2 创建数据库连接

php - 显示一对多关系

php - 如何将字符串缩短一定数量的字符?

MYSQL - 添加带有默认字符串的新列与现有列中的数据相连接

php - 如何在ubuntu 14.04上安装php5.6开发扩展

mysql - 如何创建Mysql动态带条件查询语句

ios - 通过 OpenTok 信令发送图像

session - 服务栈认证