Block Administrative Page with Session

Asked

Viewed 60 times

0

I’m using the code on my administration page

<?php
include_once "valida.php";
if ($_SESSION['usuarioNiveisAcessoId'] != "1"){
    header('Location: index.php');
}
?>

My user is with access level 1, but when I enter with levels other than 1, he still has access to the administrative page, can help me ?

This is my Valida page

<?php
session_start();
include_once("conexao.php");
$btnLogin = filter_input(INPUT_POST, 'btnLogin', FILTER_SANITIZE_STRING);
if($btnLogin){
    $usuario = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING);
    $senha = filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_STRING);
    //echo "$usuario - $senha";
    if((!empty($usuario)) AND (!empty($senha))){

    $result_usuario = "SELECT id, nome, email, senha, niveis_acesso_id FROM usuarios WHERE email='$usuario' LIMIT 1";
    $resultado_usuario = mysqli_query($conn, $result_usuario);
    $resultado = mysqli_fetch_assoc($resultado_usuario);
     if(isset($resultado)){
        $_SESSION['usuarioId'] = $resultado['id'];
        $_SESSION['usuarioNome'] = $resultado['nome'];
        $_SESSION['usuarioNiveisAcessoId'] = $resultado['niveis_acesso_id'];
        $_SESSION['usuarioEmail'] = $resultado['email'];
        if($_SESSION['usuarioNiveisAcessoId'] == "1"){
            header("Location: administrativo.php");
        }elseif($_SESSION['usuarioNiveisAcessoId'] == "2"){
            header("Location: colaborador.php");
        }else{
            header("Location: cliente.php");
        }
    //Não foi encontrado um usuario na tabela usuário com os mesmos dados digitado no formulário
    //redireciona o usuario para a página de login
    }else{    
        //Váriavel global recebendo a mensagem de erro
        $_SESSION['loginErro'] = "Usuário ou senha Inválido";
        header("Location: login.php");
    }
//O campo usuário e senha não preenchido entra no else e redireciona o usuário para a página de login
}else{
    $_SESSION['loginErro'] = "Usuário ou senha inválido";
    header("Location: login.php");
}
 }

?>
  • In the archive valida.php, you check if there was a POST with the login data. If not, redirect to login.php; otherwise log in. When you go to the administrative page there will be no login POST. Your code has become quite confusing.

1 answer

0

To validate Session, you cannot call the POST data because it no longer exists. You should consult what is written in the PHP SESSION. Test if so solves:

<?php
if(!isset($_SESSION)) {
  session_start();
}
if ($_SESSION['usuarioNiveisAcessoId'] != "1"){
    header('Location: index.php');
}
?>
  • It didn’t work out, buddy

  • What is SESSION bringing you? <? php if(!isset($_SESSION)) { session_start(); } echo $_SESSION['usuarioNiveAccessId']; if ($_SESSION['usuarioNiveAccessId'] != "1"){ header('Location: index.php'); } }&#Xa a;?>

Browser other questions tagged

You are not signed in. Login or sign up in order to post.