Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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,我正在创建一个php MySQL网站,问题是我的网站上有管理员和用户登录链接。现在,如果我从学生帐户登录,然后点击管理员链接,管理员的功能也会打开。这意味着,我用来标识会话处于活动状态与否的会话变量无法区分学生会话和管理员会话。 请帮忙 代码: 这里,$\u SESSION['uname']是数据库表中的用户名,而admin是从admin表中登录的,而student是从他们的表中登录的。 由于两者都有相同的代码,一旦从任何学生或管理员用户名登录,我可以打开这两个配置文件。请帮我修一下。兄弟,

我正在创建一个php MySQL网站,问题是我的网站上有管理员和用户登录链接。现在,如果我从学生帐户登录,然后点击管理员链接,管理员的功能也会打开。这意味着,我用来标识会话处于活动状态与否的会话变量无法区分学生会话和管理员会话。 请帮忙

代码:


这里,$\u SESSION['uname']是数据库表中的用户名,而admin是从admin表中登录的,而student是从他们的表中登录的。 由于两者都有相同的代码,一旦从任何学生或管理员用户名登录,我可以打开这两个配置文件。请帮我修一下。

兄弟, 必须为用户设置第二个会话身份验证 用于exp



<>代码>首先,你应该考虑所有管理员和学生作为用户,并保存他们在用户关系或表中的所有信息。 其次,在用户关系中考虑用户角色的列,并调用列角色。 第三,您应该在管理面板中为用户设置角色,以便在登录过程中区分主题。
假设您执行了登录步骤,并根据角色列值为管理员用户设置了适当的会话角色值,然后检查用户角色并执行所需操作,例如:

<?php 
session_start(); 
if($_SESSION['user_login'] === true) {
    if($_SESSION['user_role'] === 'admin'){
        echo 'user with admin role is login';
    }else{
        echo 'user with student role is login';
    }
}
?>


您需要另一个会话变量,其中存储有用户类型。然后,您可以对其进行测试,以确定它们具有什么访问权限。@NigelRen我现在可以使用不同的会话变量$_管理员的会话['uname_a]和学生的$\u会话['uname_s],但现在如果不注销帐户,我可以同时打开这两个帐户。请尝试将用户名保留为
$\u SESSION['uname']
,并使用另一个变量-类似于
$\u SESSION['type']
,将
admin
student
放入其中。我使用了if条件if$\u SESSION['std']会话打开后,页面将显示弹出窗口,同时打开管理员页面,请首先注销学生,页面将重定向到学生页面。这对我很有效。
<?php
session_start();
//1 for admin and 2 for user
//dont use 0 because [Type Juggling][1] 
if(isset($_SESSION) && $_SESSION['UserRole'] == 1){
header('location : Admin/index.php');
}elseif(isset($_SESSION) && $_SESSION['UserRole'] == 2){
header('location : User/index.php');
}else{
header('location : Login.php?msg=Login_First');
}

?>
<?php 
session_start(); 
if($_SESSION['user_login'] === true) {
    if($_SESSION['user_role'] === 'admin'){
        echo 'user with admin role is login';
    }else{
        echo 'user with student role is login';
    }
}
?>