php登录重定向无法正常工作

时间:2017-04-12 00:53:48

标签: php login

我需要一些帮助,试图找出为什么我的php登录重定向无法正常运行。我首先尝试了一个简单的登录,它工作正常。但是在我根据用户级别添加if语句重定向之后,它就崩溃了。

这是代码:

*编辑:我需要更多帮助,实际上代码重定向到用户角色级别的相应页面。目前,我能够登录(没有登录错误),但它不会将用户发送到他们相应的页面(即:管理员到管理页面,用户到用户页面,协调员到协调员页面)。

<?php
session_start();
include 'connect.php';


$email = $_POST["login_email"];
$pwd= $_POST["login_pwd"];
$role = $_POST["role"];

$sql = "SELECT * FROM users WHERE email='$email' AND password= '$pwd' AND role='$role' ";


if($row != mysqli_fetch_assoc($result)){
    echo "Your user name or password is incorrect!";
    header("Location:login.html");
}else{
    $_SESSION['id'] = $row['id'];
    if ($_SESSION['role'] == 'admin') {
   header("Location: admin.php");
} else if ($_SESSION['role'] == 'editor') {
   header("Location: editor.php");
} else if ($_SESSION['role'] == 'user') {
   header("Location: user.php");
}
    echo "Successful login!";
}

2 个答案:

答案 0 :(得分:0)

位置标头旨在告诉浏览器它应该将页面重定向到另一个源。当你回应内容时,你基本上说你已经完成了发送标题,内容开始了。在发送位置的情况下,您根本不应该发送任何内容,因为页面只会在读取标题时重定向(根本不显示任何内容。)

有关此问题的详情,请参阅this post

答案 1 :(得分:0)

在您提供的代码中,它显示您将$role变量设置为$role = $_POST["role"];,但在重定向时使用$_SESSION['role'] == 'admin'来确定用户的角色,但您从未设置{{1}在代码中。

尝试下面的代码,看它是否有效;

$_SESSION['role']

如果有问题或者您发现问题,请告诉我。