如何解决PHP将两个角色重定向到同一页面
有两个角色,管理员角色和用户角色。每个用户都必须重定向到另一个页面,但两个用户都都必须重定向到该页面以成为adminsitrador角色。
index.php包含登录表单
<?php
include('conexion.php');
?>
<!DOCTYPE html>
<html lang="zxx">
<head>
<title>Inicio de Sesion</title>
<!-- Meta-Tags -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta charset="utf-8">
<meta name="keywords" content="Core Login Form a Responsive Web Template,Bootstrap Web Templates,Flat Web Templates,Android Compatible Web Template,Smartphone Compatible Web Template,Free Webdesigns for Nokia,Samsung,LG,Sony Ericsson,Motorola Web Design">
<!-- //Meta-Tags -->
<!-- Index-Page-CSS -->
<link rel="stylesheet" href="css/style.css" type="text/css" media="all">
<!-- //Custom-Stylesheet-Links -->
<!--fonts -->
<link href="//fonts.googleapis.com/css?family=Mukta+Mahee:200,300,400,500,600,700,800" rel="stylesheet">
<!-- //fonts -->
<!-- Font-Awesome-File -->
<link rel="stylesheet" href="css/font-awesome.css" type="text/css" media="all">
</head>
<body>
<h1 class="title-agile text-center">Acceder al Sistema</h1>
<div class="content-w3ls">
<div class="agileits-grid">
<div class="content-top-agile">
<h2>Datos de Ingreso</h2>
</div>
<div class="content-bottom">
<form action="validacion.php" method="post">
<div class="field_w3ls">
<div class="field-group">
<input name="user" id="user" type="text" value="" placeholder="User" required>
</div>
<div class="field-group">
<input id="passw" type="passw" class="form-control" name="passw" value="" placeholder="Password">
<span toggle="#password-field" class="fa fa-fw fa-eye field-icon toggle-password"></span>
</div>
</div>
<div class="wthree-field">
<input id="saveForm" name="saveForm" type="submit" value="Login" />
</div>
</form>
</div>
<!-- //content bottom -->
</div>
</div>
<div class="copyright text-center">
<p>© 2020 Management documents
</p>
</div>
<!--//copyright-->
</body>
<!-- //Body -->
</html>
validation.php,将对用户进行验证,并将其重定向到与角色对应的页面。
<?php
include('conexion.php');
$user = addslashes($_POST['user']);
$passw = addslashes($_POST['passw']);
#
$query_user = mysqli_query($conexion,"SELECT * FROM login WHERE user = '".$user."'");
$query_role = mysqli_query($conexion,"SELECT role FROM login WHERE user = '".$user."' ");
if(mysqli_num_rows($query_user) < 1){
echo "<script> alert('Error en datos...');</script>";
echo "<script>document.location.href = 'index.php'; </script>";
}else{
$query_passw = mysqli_query($conexion,"SELECT * FROM login WHERE user = '".$user."' AND password = '".$passw."' ");
if (mysqli_num_rows($query_passw) < 1) {
echo "<script> alert('Date Error...');</script>";
echo "<script>document.location.href = 'index.php'; </script>";
}else{
echo "<script> alert('SucIngreso Exitoso...');</script>";
$role = mysqli_fetch_assoc($query_role);
if(strcmp($role,"admin") == 0){
header('Location: admin.php');
}
elseif(strcmp($role,"user") == 0){
header('Location: user.php');
}
}
}
?>
将进行查询,以了解哪个角色对应于启动会话的用户,并验证该角色以将其重定向到相应页面,但是两个用户都被重定向到admin角色的页面。
解决方法
我将为您提供使用php快速调试的一般方法
这是var_dump()
函数的用法,它用于显示变量的类型和值,将其用于似乎行为错误的变量。
由于它总是重定向到页面“ admin.php”,
这意味着该陈述永远是正确的
strcmp($role,"admin") == 0
因此,通过使用var_dump($role);
来检查变量值,以查看其在每次运行中具有什么值,这可能是因为数据库中的值始终为'admin',因此您需要对其进行检查。
并使用if($role === "admin")
代替if(strcmp($role,"admin") == 0)
更清楚
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。