Php 成员和管理员的不同重定向
希望一切顺利 我正在尝试对login.php进行编码,以便将成员重定向到consumerView.php,将员工/admin重定向到admin.php。我已经编写了以下php代码,但是我一直被重定向到consumerView.php,即使登录信息的角色是为员工提供的。有人能提供一些见解来让这项工作顺利进行吗? SQL查询可以工作,我在phpmyadmin中测试了它。 免责声明:我是php新手Php 成员和管理员的不同重定向,php,mysql,Php,Mysql,希望一切顺利 我正在尝试对login.php进行编码,以便将成员重定向到consumerView.php,将员工/admin重定向到admin.php。我已经编写了以下php代码,但是我一直被重定向到consumerView.php,即使登录信息的角色是为员工提供的。有人能提供一些见解来让这项工作顺利进行吗? SQL查询可以工作,我在phpmyadmin中测试了它。 免责声明:我是php新手 // SELECT query $query1 = "SELECT u.id, u.email,
// 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";
}
}
?>
替换
if(r.name == 'member')
与
您已在
$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");
}
$myrow=$result->fetch_assoc();
//创建保存用户id的会话变量
$\会话['id']=$myrow['id'];
//将浏览器重定向到“配置文件编辑”页面并终止此页面。
如果($myrow['name']=='member'){/Ok,准确地说,我将在这里详细阐述我的评论:
你有
if (r.name == 'member') {
header("Location: consumerView.php");
}
首先,变量r
没有分配到任何地方。即使分配了,它在php中也应该是$r
。然后,您正在访问它的属性,但在php中它是通过->
而不是点来完成的。因此,您应该从$result
中获取用户,然后执行类似的操作(或者不管存储方式如何,var_转储您的$result
,以确定它是如何存储的)
或者,如果需要,您可以从$myrow=$result->fetch_assoc()
访问它,但是您需要像数组一样访问它,所以它可能类似于$myrow['name'];
if(r.name==''member')
你确定甚至是php吗?@Vini,我不确定,我试图在上面执行的SQL查询的结果上放置一个if-else。如果不是,那么正确的php语法是什么?将密码存储为纯文本?我写了一些扩展答案,你可以在下面查看。永远不要存储纯文本密码!请使用php来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用password\u hash()
。在散列之前,请确保您或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。感谢您的评论,我尝试了此操作,但仍被重定向到consumerView。php@mathStudent1936你能试着打印$myrow
结果吗?我试过vardump和echo,但是页面上没有打印任何内容;我只是被重定向到Login.php或重定向到consumerView.php:/感谢您的详细说明,我尝试了这一点,但我仍然被重定向到consumerView.phpdo var_dump($myrow)并查看它/post here:)可能是因为这个//检查用户是否已经登录并且有一个活动会话if(isset($_SESSION['id']){//将浏览器重定向到配置文件编辑页面并终止此页面。header(“Location:consumerView.php”);die();}
@Vini我尝试了一个var_转储($myrow),但没有在页面上转储任何内容。@MasivuyeCokile我考虑过这一点,所以我将其更改为包含if-else语句,但运气不佳
if (r.name == 'member') {
header("Location: consumerView.php");
}
if ($user->name === 'member') {
header("Location: consumerView.php");
}