我正在尝试编写我的login.php代码,以便将其重定向到consumerView.php以获取成员,将admin.php重定向到employee / admin。我编写了以下PHP代码,但我一直被重定向到consumerView.php,即使登录信息的角色是针对员工的。有人可以提供任何见解让这个工作吗? SQL查询有效,我在phpmyadmin中测试过它。 免责声明:我是php的新手。
// SELECT query
$query1 = "SELECT u.id, u.email, u.pass password, r.name role
FROM users u INNER JOIN role r ON r.id = u.ro_fk
WHERE email = ? AND u.pass = ? ;";
if(r.name == 'member'){
header("Location: consumerView.php");}
else
{header("Location: admin.php");}
die();
} else {
//If the username/password doesn't matche a user in our database
// Display an error message and the login form
echo "Failed to login";
}
} else {
echo "failed to prepare the SQL";
}
}
?>
答案 0 :(得分:1)
您的结果是$myrow
。
$myrow = $result->fetch_assoc();
//Create a session variable that holds the user's id
$_SESSION['id'] = $myrow['id'];
//Redirect the browser to the profile editing page and kill this page.
if($myrow['name'] == 'member'){ // <- You need to change this line to check user is member or not.
header("Location: consumerView.php");
}
else{
header("Location: admin.php");
}
答案 1 :(得分:0)
替换
if(r.name == 'member')
与
if($myrow['name'] == 'member')
答案 2 :(得分:0)
好的,为了准确起见,我将在此详细说明我的评论:
你有
if (r.name == 'member') {
header("Location: consumerView.php");
}
首先,你没有在任何地方分配变量r
。即使你这样做,它应该是php中的$r
。然后,您正在访问它的属性,但在php中,它由->
而不是点完成。因此,您应该从$result
获取您的用户,然后执行类似的操作(或者将其存储,var_dump您的$result
以确定它是如何存储的)
if ($user->name === 'member') {
header("Location: consumerView.php");
}
或者你可以根据需要从$myrow = $result->fetch_assoc()
访问它,但是你需要像数组那样访问它,所以它可能就像$myrow['name'];