1
I am separating the menu according to the user’s level, but I can’t get the level of the Session.
Regardless of the user level it only shows the Adm menu which is level 2
Where is the error?
Another thing how can I put more levels? type 1 for user, 2 for administrator, 3 for seller etc?
on each page I put Cód below:
session_start();
$_SESSION['nivel'] = $nivel;
if($nivel == 1 ){
echo include 'adm/menu2.php';
echo "<a href=''>Painel de Usuário</a>";
}else{
echo include 'adm/menu.php';
echo "<a href=''>Painel de Admin</a>";
}
The page that validates the login is like this:
<?php
// QUANDO TENTANDO LOGAR
if(isset($_POST['acesso'])=="Logar") {
// VERIFICANDO SE USUÁRIO E SENHA ESTÃO VAZIOS
if(isset($_POST['usuario'])=="" || isset($_POST['senha'])=="") {
echo "Os dados de acesso devem ser preenchidos";
exit;
}
// LOGANDO E CRIANDO AS SESSIONS
$logar = mysqli_query($conexao,"SELECT usuario, senha, nivel FROM acesso WHERE usuario='".anti_injection($_POST['usuario'])."' AND senha='".anti_injection(md5($_POST['senha']))."' AND nivel='".anti_injection($nivel)."'");
if(mysqli_num_rows($logar) >= 1) {
$_SESSION['usua'] = $_POST['usuario'];
$_SESSION['senh'] = md5($_POST['senha']);
$_SESSION['nivel'] = $_POST['nivel'];
echo "<script>
alert('Acesso permitido');
location.href='index.php';
</script>";
} else {
echo "<script>
alert('Acesso restrito');
</script>";
}
}
// VERIFICANDO SE O NÍVEL DA PÁGINA É VÁLIDA PARA O USUÁRIO LOGADO
if(@$_SESSION['usua'] AND @$_SESSION['senh'] AND @$_SESSION['nivel']) {
$verifica_nivel = mysqli_query($conexao,"SELECT usuario, senha, nivel FROM acesso WHERE usuario='".anti_injection($_SESSION['usua'])."' AND senha='".anti_injection($_SESSION['senh'])."' AND nivel='".anti_injection($nivel)."'");
if(mysqli_num_rows($verifica_nivel) >= 1) {
// ACESSO CORRETO
} else {
echo "<script>
alert('Você não tem o nível de acesso para essa página');
history.back();
</script>";
exit;
}
}
// CASO NÃO LOGADO, MOSTRA O FORMULÁRIO
if(!isset($_SESSION['usua']) OR !isset($_SESSION['senh']) OR $_SESSION['usua']=="" OR $_SESSION['senh']=="") {
?>
<?php
$qr=mysqli_query($conexao,"SELECT DISTINCT usuario, nivel FROM `acesso` ORDER BY `acesso`.`usuario` ASC");
if (mysqli_num_rows($qr)==0){
echo "Adicione ao menos um Usuário";
}else{
}
?>
<link href="css/bootstrap.css" rel="stylesheet">
<link href="css/ie10-viewport-bug-workaround.css" rel="stylesheet">
<link href="css/signin.css" rel="stylesheet">
<form action="" method="post" form class="form-signin" >
<p align="center"> <img src="img/logo.png" border="0"></p>
<h2 class="form-signin-heading">Área Restrita</h2>
<label><p align="center"><font color="#000000"><font color="#FF0000"><b>Usuário : </label><select class="form-control" name="usuario">
<option value="">Selecione o Usuário</option>
<option value="Celia">Célia</option>
<option value="Elin">Elin</option>
<option value="Mariana">Mariana</option>
<option value="Regiane">Regiane</option>
<option value="Roberto">Roberto</option>
</div>
<BR>
<br />
<font color="#FF0000"><b>Senha : </b></font> <input type="password" name="senha" class="form-control" value=""> <BR>
<br />
<input class="btn btn-lg btn-danger btn-block" type="submit" name="acesso" value="Acessar"></font></p>
</form>
<?php
exit;
}
?>
That doesn’t make sense:
isset($_POST['acesso'])=="Logar"
- The result ofisset
is true or false, will never be "Log in". What you can do, eventually, is this:isset($_POST['acesso']) && $_POST['acesso']=="Logar"
. - First check if it is set, && then check if it is "Log in".– Bacco