Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal...
estou fazendo um painel de controle com nível de usuário, mas no decorrer dos testes encontrei um problema de como conseguir a situação que vou descrever abaixo.
Tenho um arquivo index.php e neste arquivo ele chama 3 includes
|-- include MENU Admin
|-- include MENU Geral
|-- pagina conteúdo (essa pagina é chamada por um scrip que pega a variável da url através do Get)
Ok até ai tudo bem, tenho tudo pronto, cadastro, login, validação e tudo mais.... e funcionando perfeitamente.
No banco tenho para cada usuário 3 opções de nivel
|-- 1 sem acesso
|-- 2 acesso geral
|-- 3 administrador
De acordo com oq eles sao cadastrados no banco o meu arquivo de validação verifica se ele pode ou nao acessar as paginas restritas... e se nao puder retorna o erro direitinho.
Antes de comentar o problema quero esclarecer que de todos os posts/tutoriais/matérias/manuais de como fazer um sistema de cadastro de usuário, nenhum aborda esse método. Alias de todos que eu vi é praticamente o que eu uso no meu sistema.
Bom, a situação é a seguinte.
|-- O usuário loga -> verifica login, senha e nivel -> cria a sessão -> e é enviado para a pagina de destino
|-- a pagina de destino contem um include com o arquivo valida.php
|-- a validação é feita de acordo com a sessões criadas (login, senha e nivel)
Como dito, tenho dois menus (administrador) e ( geral).
|-- o menu administrador leva a paginas com validação de nivel 3. Ou seja, se ele nao tem o nivel ele recebe uma mensagem e é obrigado a retornar a pagina anterior.
| - o menu geral leva a paginas com validação nivel 2. e ai você ja sabem o que acontece.
MEU GRANDE PROBLEMA:
A situação é colocar uma validação/script ou qualquer coisa que, quando eu logar e se eu for um usuario de nível 2, não visualize o menu de Administração. Ou até mesmo que, cada nível, veja somente o que corresponde ao seu nível.
Lembrando que é a mesma pagina... Porque? Pq o sistema vai incorporar inúmeros usuários e cada um terá um nível diferente. E eu nao quero ter que ficar criando uma validação pra cada nivel q eu criar ou paginas de referencia.
Eu tentei colocar a validação que uso para os paginas nos proprios menus. Entretanto ela retorna o erro que foi programado para informar caso o nivel nao seja aquele que ele pede. E ao invés de eu ter um menu e outro oculto, tenho um menu e uma mensagem de erro bem grande.
Resumindo.
1 pagina --> 2 menus --> usuário visualiza somente o menu correspondente ao seu nivel --> o outro menu fica oculto.
--------------------------
Alguém pode ajudar?
Gostaria de ideias de como fazer... o que utilizar...
Se alguem tiver um código parecido que usou em um sistema semelhante, tbm ajuda... eu tento adequar ao que eu quero.
Vlw
ou então por session. Primeiro no Banco de dados você cria um campo para poder gravar o nivel do usuario (pelo que eu entendi você já fez isso) e põe pra registrar a sesssion no script de login por ex:
// <------ AQUI POE O SCRIPT QUE VALIDA O LOGIN E APÓS ISSO SE O USUARIO E SENHA ESTIVEREM CORRETOS FAZ O SEGUINTE ------> //
// <------ DA UM SELECT NO BANCO DE DADOS PARA PEGAR O NIVEL DO USUARIO E GRAVA ELE NA VARIAVEL $NIVEL ------> //
$_SESSION[nivel] = $nivel;if($_SESSION[nivel]==3) {
include"menudeadmin.php";
}
if($_SESSION[nivel]==2) {
include"menugeral";
}Creio eu que este métoodo está correto. Sou iniciante no PHP :)Um amigo por msn me indicou o uso do metodo CASE!
testei e aparentemente deu certo...
uma vez que a validação continua no menu e caso alguem tente acessar ele diretamente nao vai conseguir...
o metodo é o mesmo que por session indicado pelo AyrtonMaia.
Só não sei qual seria o mais correto...
Vlw pela ajuda pessoal.
Você pode por assim no index por exemplo ...
Menu 1
<?php }else if($reg['nivel'] == 2) {?>
Menu 2