Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用会话变量区分网站用户类型,例如管理员或成员_Php_Mysql_Session - Fatal编程技术网

Php 使用会话变量区分网站用户类型,例如管理员或成员

Php 使用会话变量区分网站用户类型,例如管理员或成员,php,mysql,session,Php,Mysql,Session,嗨,我正在尝试区分使用我的网站的用户是管理员还是会员。我有一个数据库,其中有用户角色表,例如userrole1=member和userRole2=admin。我有一段代码,用于获取该特定用户的userRoleID并将其存储在一个变量中: $result = "SELECT userRoleID FROM tbl_users" or die("Error: " . mysqli_error($con)); $res = $con->query($result

嗨,我正在尝试区分使用我的网站的用户是管理员还是会员。我有一个数据库,其中有用户角色表,例如userrole1=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的变量存储在一个会话变量中,这个会话变量也很成功

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

<?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 } ?>

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

    注意:未定义的变量:\第7行C:\xampp\htdocs\WSSA1S1\new\pagetemplateHEADER.php中的会话

    注意:未定义的变量:\第14行C:\xampp\htdocs\WSSA1S1\new\pagetemplateHEADER.php中的会话

    我认为这是因为php代码的开头没有session_start(),但是当我插入session_start()时,我得到了以下错误:

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

    有人能给我一些建议吗

    另外,我是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']
        }
    ?>
    
    我建议如下:
    (!empty($\u SESSION['user\u role']='2')
    不是一个好主意。请尝试
    如果(设置($\u SESSION['user\u role'])&($\u SESSION['user\u role']='2')
    这将避免
    未定义的变量
    注意这是因为您没有
    SESSION u启动()
    请仔细阅读@Scorpion
    $result=“从tbl_用户中选择userRoleID”或死亡(“错误:“.mysqli_错误($con))
    …说明了一切…..你不想加入一个
    WHERE
    子句吗?@steven删除了我的错误,谢谢,但是现在php标记之间的HTML代码仍然没有显示出来。谢谢你回答@user3629249,但是由于某些原因HTML标记仍然没有被输出:/