【问题标题】:MySQLi Object-oriented redirect depending on user roleMySQLi 面向对象的重定向取决于用户角色
【发布时间】:2019-11-23 04:40:54
【问题描述】:

不知道我的错误在哪里,我想根据用户角色重定向到网站的不同部分。

if (isset($_POST['submit'])) {
    $stmt = $conn->prepare('SELECT id, password FROM accounts WHERE email = ?');
    $stmt->bind_param('s', $_POST['email']);
    $stmt->execute();
    $stmt->store_result();

    if ($stmt->num_rows > 0) {
        $stmt->bind_result($id, $password);
        $stmt->fetch();

        if (password_verify($_POST['password'], $password)) {       
            session_regenerate_id();
            $_SESSION['loggedin'] = TRUE;
            $row = $result->fetch_assoc();

            if ($row['role']=='admin') {
                header('Location: admin.php');
            } else if ($row['role']=='user') {
                header('Location: profile.php');
            }
        } else {
            $password_incorrect = '¡Contraseña incorrecta! Si has olvidado tu contraseña puedes <a href="#">restablecerla</a>.';
        }
    }

【问题讨论】:

    标签: php mysql oop authentication mysqli


    【解决方案1】:

    您没有在查询中选择role 列,因此您永远无法检查该值。您也在使用store_result(),但保留一些声明方法。建议您保留其中一个(此代码删除 store_result() 并仅使用普通准备好的语句)。

    if (isset($_POST['submit'])) {
        $stmt = $conn->prepare('SELECT id, password, role FROM accounts WHERE email = ?');
        $stmt->bind_param('s', $_POST['email']);
        $stmt->execute();
        $stmt->bind_result($id, $password, $role);
    
        if ($stmt->fetch() && password_verify($_POST['password'], $password)) {       
            session_regenerate_id();
            $_SESSION['loggedin'] = true;
    
            if ($role == 'admin') {
                header('Location: admin.php');
                exit;
            } elseif ($role == 'user') {
                header('Location: profile.php');
                exit;
            }
        } else {
            $password_incorrect = '¡Contraseña incorrecta! Si has olvidado tu contraseña puedes <a href="#">restablecerla</a>.';
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 2018-01-24
      • 2017-12-15
      • 2016-01-17
      相关资源
      最近更新 更多