Administrative Blocking with Session

0

I am using the code on my administrative page

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

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

This is my Valid 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");
}
 }

?>
    
asked by anonymous 19.09.2018 / 21:47

1 answer

0

To validate the session, you can not call the POST data because they no longer exist. You should see what is written in PHP's SESSION. Test if this works:

<?php
if(!isset($_SESSION)) {
  session_start();
}
if ($_SESSION['usuarioNiveisAcessoId'] != "1"){
    header('Location: index.php');
}
?>
    
20.09.2018 / 00:10