我有一个检索 ID 并执行角色登录的文件,如下所示:
验证.php:
<?php
//Fichero que usara para mandar los datos recibidos más abajo para pasarlos por el controlador.
include '../controlador/usuariosControlador.php';
//Recoge los datos de index.php introducidos en el login, verifica que en ambos campos existan datos.
if (isset($_POST['usuario']) || isset($_POST['pass'])) {
if (trim($_POST['usuario']) == '' || trim($_POST['pass']) == '') {
echo 'false';
} else {
$usuariosCon = new usuariosControlador();
$usuario = $usuariosCon->validar($_POST['usuario'], $_POST['pass']);
if (count($usuario) > 0) {
//Una vez detecta que el usuario existe le indicaremos los datos que debe seguir la SESSION para calificar los roles, es decir, hacia donde debe de dirigir todo el tráfico del log según su rol.
session_start();
$_SESSION['id'] = $usuario['id'];
$_SESSION['usuario'] = $usuario['usuario'];
$_SESSION['privilegio'] = $usuario['privilegio'];
echo 'true';
echo $validacion;
if ($_SESSION['privilegio'] == 0) {
header('location: userinv.php');
} elseif ($_SESSION['privilegio'] == 1) {
header('location: user.php');
} elseif ($_SESSION['privilegio'] == 2) {
header('location: jefe.php');
} elseif ($_SESSION['privilegio'] == 3) {
header('location: administrador.php');
} elseif ($_SESSION['privilegio'] == 4) {
header('location: superadmin.php');
} else {
echo 'false';
}
}
}
}
?>
正如我们所看到的,它重定向到我告诉它的网站,并且在其中它可以选择移动。
好吧,如果您输入其中之一,请输入如下:
菜单管理员.php:
session_start();
//Iniciaremos la variable SESSION y con ello le indicaremos QUIÉN NO tiene permisos para acceder aquí
if (!isset($_SESSION["privilegio"]) || $_SESSION["privilegio"] == 0) {
print "<script>alert(\"Acceso invalido!\");window.location='../../index.php';</script>";
}
if (!isset($_SESSION["privilegio"]) || $_SESSION["privilegio"] == 1) {
print "<script>alert(\"Acceso invalido!\");window.location='../../index.php';</script>";
}
if (!isset($_SESSION["privilegio"]) || $_SESSION["privilegio"] == 2) {
print "<script>alert(\"Acceso invalido!\");window.location='../../index.php';</script>";
}
要验证您是否有权限,请允许或不允许访问。好吧,一旦你访问它,你想去你的主菜单,但我不能,因为你的会话数据就好像你已经丢失了它一样。
例如,我告诉它返回到validar.php文件,以便将其重定向到其预定义的索引,但页面保持空白:
<?php echo '<a href="../../validar.php">Menu</a>'; ?></li>
当您返回到Validar.php时,您通过按 Menu 链接检查返回时为空的 POST 数据,添加一个else以便它检查 Post 数据是否为空(如果有会话数据)。这是我的意思的一个例子:
好的,请查看文档
session
,以便了解它是如何工作的。http://php.net/manual/es/function.session-start.php
另外,请记住,在您的代码中,如果我在 POST 中返回没有值的“validar.php”(就像您在其中所做的那样,
<?php echo '<a href="../../validar.php">Menu</a>'; ?></li>
它总是会给您错误,因为您自己强制存在POST['usuario']
yPOST['pass']
您评论页面仍然空白,您是否通过右键单击“查看页面源代码”检查它是否真的是空白的?您可能正在打印
echo "false";
.错误日志是否给您任何错误?我们能看到控制器吗?