为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据用户,管理员更改变量

如何根据用户,管理员更改变量

PHP
qq_遁去的一_1 2021-04-02 14:15:20
我有一个名为的用户表id_role。默认情况下id_role,3为所有新用户分配值。任何需要更高级别特权的用户,我都会手动将它们更新为2foradministrator和1for super_admin。问题是id_role仍然值得上次注册的价值,我不明白为什么。如果我不添加新用户id_role,它将始终为1,每个人都将登录superadmin;如果我添加新用户,id_role则将为3,每个人(甚至是admin)都将以基本用户身份登录。这是我的基本代码:<?phpsession_start();$Nom = $_POST["Nom"];$mdp = $_POST["mdp"];//$id_role = $_POST["id_role"];try{    $bdd = new PDO('mysql:host=localhost;dbname=azer', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));} catch(Exception $e) {    die("acces imlpossible");}$st = $bdd->query("SELECT * FROM membre WHERE Nom='".$Nom."'")->fetch();$mangetesmorts = $bdd->query("SELECT * FROM membre WHERE id_role");if (password_verify($mdp, $st['mdp'])) {    $_SESSION['Nom'] = $Nom;    $_SESSION['activite'] = $st['activite'];    //$_SESSION['id_role'] = $mangetesmorts['id_role'];    //var_dump($_SESSION['id_role']);    //print_r($id_role);    while ($donne = $mangetesmorts->fetch()) {        if ($_SESSION['activite'] =='cricket') {            header("Location: cricket.php");        } elseif ($_SESSION['activite'] == 'foot') {            header("Location: foot.php");        } elseif (($donne['id_role'] == 2)) {            header("Location: admin.php");        } elseif ($donne['id_role'] == 1) {            header("Location: admin_super.php");        } else {            header("Location: index2.php");}        }   }这就是我尝试过的:<?phpsession_start();$Nom = $_POST["Nom"];$mdp = $_POST["mdp"];//$id_role = $_POST["id_role"];try{    $bdd = new PDO('mysql:host=localhost;dbname=azer', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));} catch (Exception $e) {    die("acces imlpossible");}$st = $bdd->query("SELECT * FROM membre WHERE Nom='".$Nom."'")->fetch();$mangetesmorts = $bdd->query("SELECT * FROM membre WHERE id_role");if (password_verify($mdp, $st['mdp'])) {    $_SESSION['Nom'] = $Nom;    $_SESSION['activite'] = $st['activite'];    //$_SESSION['id_role'] = $mangetesmorts['id_role'];    //var_dump($_SESSION['id_role']);
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

您的条件重定向块基于第二个查询,该查询不引用已成功登录的用户。(如果该查询完全起作用)。


换句话说,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您喜欢的元素,为了清楚/一致起见,我将它们排除在此条件块之外。


查看完整回答
反对 回复 2021-04-23
  • 1 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信