我有一个用户表,其中的列名为id_role
。默认情况下,为所有新用户分配id_role
的{{1}}值。
任何需要更高级别特权的用户,我都会手动将其更新为3
的{{1}}和2
的{{1}}。
问题在于administrator
仍然值最后一次注册的值,我不明白为什么。
如果我不添加新用户1
,它将始终为1,每个人都将登录super_admin
;如果我要添加新用户,id_role
将为3,并且每个人(甚至是管理员)都将以基本用户身份登录。
这是我的基本代码:
id_role
这就是我尝试过的:
superadmin
答案 0 :(得分:1)
您的条件重定向块基于第二个查询,该查询不引用已成功登录的用户。(如果该查询完全起作用)。
换句话说,while ($donne = $mangetesmorts->fetch()) {
将从表中拉出所有行,然后仅迭代第一行,因为重定向将结束脚本。
因为您的第一个SELECT查询将为用户返回完整的数据行,因为数组$st
仅用于确定重定向。
if (in_array($st['activite'], ['cricket', 'foot'])) {
header("Location: {$st['activite']}.php");
} elseif ($st['id_role'] == 2) {
header("Location: admin.php");
} elseif ($st['id_role'] == 1) {
header("Location: admin_super.php");
} else {
header("Location: index2.php");
}
您可以声明任何喜欢的$_SESSION
元素,为了清楚/一致起见,我已将它们排除在此条件块之外。