Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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)."'");$_SESSION['usua'] = $_POST['usuario'];
$_SESSION['senh'] = md5($_POST['senha']);
echo "<script>
alert('Acesso permitido');
location.href='index.php';
</script>";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)."'");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");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?Até ai normal, mas o problema é que no menu1.php eu vou colocar as paginas que o nível de acesso é 2 ai pela validação da pagina ele não deixa acessar pois o nível que está na pagina é 2 e o usuário é nível 1
Na query você coloca nivel <= variavel_nivel
para evitar que o usuario final acesse uma página diretamente você pode alterar o nível de acesso do arquivo no servidor para 740. assim ele vai continuar acessivel para o script que chama ele por include, mas não será acessivel para ser chamado pelo endereço no browser.
eu colocaria esse script de verificação de nível todo em um arquivo a ser chamado por include em cada página também por que pelo que disse ele se repete em várias páginas. apenas o nível da página que seria diferente em cada página. Em alguns sites meus uso um arquivo específico para abrir sessão e criar variáveis com os valores da sessão atual.
>
2 horas atrás, ClickSistema disse:
eu colocaria esse script de verificação de nível todo em um arquivo a ser chamado por include em cada página também por que pelo que disse ele se repete em várias páginas. apenas o nível da página que seria diferente em cada página. Em alguns sites meus uso um arquivo específico para abrir sessão e criar variáveis com os valores da sessão atual.
Poderia enviar algum exemplo de como fazer isso?
>
5 horas atrás, Bergs disse:
Na query você coloca nivel <= variavel_nivel
Se eu coloco nas paginas assim:
$nivel >= 1;
Quando a pagina é $nivel = 2 e usuario é $nivel >= 1 ele da que o acesso é restrito.
Dentro do include menu1 você adiciona todos os links de todas as páginas.