Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde, Tenho um sistema de níveis no meu sistema de cadastro. Então o usuário nível 1 pode acessar tudo, o nível 2 menos e por aí em diante.
No topo da página defino isso no SESSION
>
if ($_SESSION['nome'] == "" or $_SESSION['login'] == "" or $_SESSION['id_nivel'] == "3") { header("Location:index.php"); }
else {
Mas no menu quando seleciono a página que este usuário não pode acessar, ele vai para uma página em branco. Teria como nessa parte abrir uma caixa de diálogo informando que não é permitido acessar essa página e ser redirecionado para qualquer página do sistema?
Tentei e não consegui. por isso coloquei o código para ver se alguém podia me ajudar. Não disse nada no fim.
<?php
if (!isset($_SESSION)) session_start();
if (teste){
session_destroy();
header ("location: "suapágina".html");
exit;
}
?>
bom eu faço assim! funciona aqui não sei se é seguro! mas funciona! :D
Não Pedro, ele ainda da erro com sua sugestão na linha
>
header ("location: "suapagina".html");
Qual é o erro?
Bom, consegui resolver assim:
>
if ($_SESSION['nome'] == "" or $_SESSION['login'] == "" or $_SESSION['id_nivel'] == "2" or $_SESSION['id_nivel'] == "3") { header("Location:index.php");
echo "<script> alert('Você não possui autorização para acessar esta página! Clique Ok para retornar');</script>";
echo '<meta http-equiv="refresh" content="0;url=index.php">';
}
Mas será que alguém tem uma solução de quando o usuário nível 3 por exemplo se logar, ele ter um menu exclusivo para ele sem os itens do usuário nível 1 e 2?
Desta forma eu mantenho o mesmo menu para todos, apenas bloqueio pelo alerta e redirecionamento.
Achei essa solução melhor e mais eficiente
http://forum.imasters.com.br/topic/531282-menu-com-nivel-de-permissao/
Pois ele esconde os itens que o usuário nível 2 e 3 não podem acessar.
>
<?php if($_SESSION['id_nivel'] == '1'):
echo'<li><a href="adm.php"><span>Administradores</span></a></li>';
endif;
?>
Nessa situação acima ele mostra essa linha do menu para o usuário nível 1 e esconde do nível 2 e 3
Mas se eu quero mostrar para os níveis 1 e 2 e esconder do nível 3, Faço isso
>
<?php if($_SESSION['id_nivel'] == '1' or $_SESSION['id_nivel'] == '2'):
echo'<li><a href="adm.php"><span>Administradores</span></a></li>';
endif;
?>
Solucionado.
Falando sobre controle de acesso, comecei a estudar mais a fundo sobre isso essa semana.
É um assunto muito interessante e recomendo lerem sobre.
Livro: Role-Based Access Control, 2nd Edition
Links úteis:
>
Achei essa solução melhor e mais eficiente
http://forum.imasters.com.br/topic/531282-menu-com-nivel-de-permissao/
Pois ele esconde os itens que o usuário nível 2 e 3 não podem acessar.
Nessa situação acima ele mostra essa linha do menu para o usuário nível 1 e esconde do nível 2 e 3
Mas se eu quero mostrar para os níveis 1 e 2 e esconder do nível 3, Faço isso
Solucionado.
//se não for
$sessaoX = $_SESSION['id_nivel'];
if($sessaoX < 2){
//não acessa
Coloca um alert e um header para a página que quiser, oras... o.O