Menu por nível de acesso
Hoje eu consegui montar assim:
Em cada pagina coloquei o cód abaixo onde identifico o nível do usuário
<?php
session_start();
$nivel = 2;
set_time_limit(0);
date_default_timezone_set('America/Sao_Paulo');
include 'adm/config.php';
include 'adm/functions.php';
include 'adm/menu.php';
include("adm/seguro.php");
?>
A pagina seguro que verifica as permissões está assim:
Ele verificar o nível que está na pagina que o usuário que acessar, por exemplo se na pagina estiver $nivel=1 e o usuário for nível 2 ele
da a mensagem : Você não tem o nível de acesso para essa página
<?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']);
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']) {
$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 FROM `acesso` ORDER BY `acesso`.`usuario` ASC");if (mysqli_num_rows($qr)==0)
echo "Adicione ao menos um Usuário";
else{
} ?>
Desse jeito funciona belezinha, só que queria pegar esse nível no BD e mostrar menus diferentes. E não posso deixar de setar em cada pagina o nivel de acesso dela para evitar que seja acessada pelo link direto da pagina.
Exemplo:
Se for nivel=1 ele mostra o include 'adm/menu1.php';
Se for nivel=2 ele mostra o include 'adm/menu2.php';
E tem um problema o nivel 1 é adm além das paginas que tem acesso ele também pode acessar as paginas do nivel 2 que é adm.
Alguém pode me dar uma luz como pode ser feito isso?Discussão (6)
Carregando comentários...