tonzinhu Postado Fevereiro 5, 2009 Denunciar Share Postado Fevereiro 5, 2009 Iae galera beleza,estou criando um sistema aonde dependendo do usuario ele só tem direito a ver os menus da area dele.Ex:Admin -> Acesso totalMarketing -> Acesso somente aos menus (add./rem. propaganda)Ou seja, se o usuario = marketing ele lista os itens do menu de acordo com o usuario. Porem um usuario pode ter tambem outros niveis diferentes.Acho que deu pra entender.alguém poderia me dar uma "luz" de como fazer isso de um modo mais simples.O meu esquema que pensei seria:tabela_usuariosiduser | login | senha tabela_menuidmenu tabela_acesso_menuidacesso | iduser | idmenuate ai tudo bem, lista normal, mas se algum usuario mais avançado digitar por exemplo no browser:ele tem acesso somente a pagina de marketing.php, mas se digitar produtos.php que ele não teria acesso no browser ele navega pela pagina normalmente.Queria uma ajuda nessa parte, pra impedir que eles vejam as outras pagina.Ps: uso sistema de login com session.vlw galera Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 itibere Postado Fevereiro 5, 2009 Denunciar Share Postado Fevereiro 5, 2009 Kara , inclua um controle por sessão, e grave na sessao o privilegio do usuario, ai em cada pagina voce ferifica o privilegio, se tiver ok abre a pagina, caso contrario redireciona para tela de login. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jow Postado Fevereiro 5, 2009 Denunciar Share Postado Fevereiro 5, 2009 Qd cadastrar um usuário informe qual a permissão ... Na hora q ele se logar você pega a permissão dele cadastrada no banco com uma $_SESSION['perm'] ... no topo das páginas você verifica exemplonas páginas q só o admin pode acessarif ($_SESSION['perm'] == 'admin') { acessa a página }else{ echo "Você não tem permissão para está página" } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wanderson Camargo Postado Fevereiro 6, 2009 Denunciar Share Postado Fevereiro 6, 2009 Olá!Olha só... Eu vou dar uma ótima dica para estudos de controle por listas e árvores de acesso.Zend_Acl e Zend_Authhttp://framework.zend.com/manual/en/zend.acl.htmlhttp://framework.zend.com/manual/en/zend.auth.html Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tonzinhu Postado Fevereiro 6, 2009 Autor Denunciar Share Postado Fevereiro 6, 2009 bem bom porém meu php ainda não é tão avançado, entendi pouca coisa, ainda mais porque ta em ingles o site.E com session ia ser um pouco mais compliado porque vai ter um formulario para cadastro dos usuarios e nele eu especifico as areas de acesso desse usuario, ou seja, uns podem acessa areas do admin, outros não, eu consegui montar um "embromation"Arquivo valida_menu.php<?php $menu = $_GET['view']; //pegando menu $menu = mysql_query("SELECT * FROM menu WHERE menu='$menu'"); $l[cat] = mysql_fetch_assoc($menu); $cat = $l[cat]['idmenu']; //verificando se o usuario pode acessar $acesso[menu] = mysql_query("SELECT * FROM privilegios WHERE idmenu='$cat'"); $l[acesso] = mysql_fetch_assoc($acesso[menu]); $iduser[acesso] = $l[acesso]['idusuario']; //id usuario atual $id[user] = $_SESSION['idusuario']; if($_SESSION['usuario'] == 'admin'){ } else{ if($id[user] != $iduser[acesso]){ print 'você não tem permissão para vizualizar esta página!'; echo "<script language='javascript'>"; echo "document.location.href = 'java script:history.go(-1);'"; echo "</script>"; } else{ } } ?>e nas paginas adiciono um require(valida_menu.php);Até agora está funcionando, mas ainda estou fazendo uns testes.Se alguém souber outras maneiras avisa ai.vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wanderson Camargo Postado Fevereiro 10, 2009 Denunciar Share Postado Fevereiro 10, 2009 Se procurares no google vais ver que existem traduções desse manual supracitado.Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tonzinhu Postado Fevereiro 10, 2009 Autor Denunciar Share Postado Fevereiro 10, 2009 já consegui fazer um esquema, foi até simples:essa parte exibe os menus de acordo com o usuario:$id[usuario] = $_SESSION['idusuario']; if($_SESSION['usuario'] == "admin"){ $menu = mysql_query("SELECT * FROM menu ORDER By idmenu"); while($l[menu] = mysql_fetch_assoc($menu)){ print '<li><a href="painel.php?view='.$l[menu]['menu'].'">'.$l[menu]['menu'].'</a></li>'; } } else{ //pegando idmenu privilegios $acesso[user] = mysql_query("SELECT * FROM privilegios WHERE idusuario='$id[usuario]'"); while($l[acesso] = mysql_fetch_assoc($acesso[user])){ $idmenu = $l[acesso]['idmenu']; if($idmenu == ""){ } else{ //pegando menu do banco $menu = mysql_query("SELECT * FROM menu WHERE idmenu='$idmenu' ORDER By idmenu"); $l[menu] = mysql_fetch_assoc($menu); print '<li><a href="painel.php?view='.$l[menu]['menu'].'">'.$l[menu]['menu'].'</a></li>'; } } } e na páginas coloquei um arquivo valida.menu.php para impedir que o usuario tente acessar a pagina sem que ele tenha privilegios: $menu = $_GET['view']; $query = 'mysql_query'; //buscando id categoria $id[menu] = $query("SELECT * FROM menu WHERE menu ='$menu'"); $linhas = mysql_fetch_assoc($id[menu]); //id categoria atual $idmenu = $linhas['idmenu']; $id[user] = $_SESSION['idusuario']; ###################################################### $priv = $query("SELECT idmenu FROM privilegios WHERE idusuario='$id[user]' AND idmenu='$idmenu'"); //id usuario atual $linhas[priv] = mysql_fetch_assoc($priv); if($_SESSION['usuario'] == "admin"){ } else{ if(mysql_num_rows($priv)<=0){ echo "<script language='javascript'>"; echo "alert('Você não tem permissão para exibir esta página.');"; echo "document.location.href = 'java script:history.go(-1);'"; echo "</script>"; } else{ } }se ele não puder ver a pagina exibe um alerta e volta pra pagina anterior.Ainda estou testando mas até agora funcionou bem, sem nenhum problema.Vlw ai pelos helps. e se alguém tiver sugestões para melhorar.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Matori Postado Fevereiro 10, 2009 Denunciar Share Postado Fevereiro 10, 2009 Eu faria assim, colocaria um campo da tabela_usuarios no Mysql "permicao".Na hora do select do menu, se o usuario q logou tem a "permicao" 1, ele é Admin , se tiver a "permicao" 2 ele é Marketing.if($permicao=='1'){include "menuAdmin.php";}if($permicao=='2'){include "menuMarketing.php";}e tipo, pra proteger o acesso as paginas, você pode fazer para quando você logar, as paginas fazerem o SELECT de acordo com a permição saka? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tonzinhu Postado Fevereiro 10, 2009 Autor Denunciar Share Postado Fevereiro 10, 2009 porem dessa forma não ia ficar muito dinamico, pois o sistema cria categorias e os usuarios acessam as categorias que eu permitir.ou seja, posso criar 100 categorias (marketing, gerencia, informatica, etc....)e na hora de cadastrar os usuarios eu seleciono as que ele pode acessar.Mas a logica que usei foi essa mesma dai, pois quando se add. a categoria, tambem upa o arquivos dakela pagina(link),e depois do um include pra exibir elas.E a permissão é dessa forma mesmo, na hora que loga ele verifica os acessos que tem direito, masss..e se por acaso ele fosse lá e digitasse uma página que não está listada pra ele? , ai entra a validação do menu, que não deixa ele acessar.Mas podem ir dando idéias, que alias servirá para todos.vlw aew Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Fevereiro 10, 2009 Denunciar Share Postado Fevereiro 10, 2009 O meio mais simples... cadastra as categorias no sistema, quando você for cadastrar o usuário adiciona as categorias à que ele está vinculado, quando o cara fizer login você pega essas categorias e guarda num array, cada lugar que ele for você verifica com o in_array se no array do usuário está a categoria que ele quer ver, pronto. Claro que você teria que ter a parte de edição do usuário para atribuir ou remover categorias a que ele teria direito de ter acesso, mas isso é simples... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tonzinhu Postado Fevereiro 10, 2009 Autor Denunciar Share Postado Fevereiro 10, 2009 Boa, já não deminuiria o tamanho do script.Mas como seria isso, teria que usar SESSION nesse array? e em cada página o in_array ficaria no lugar do script valida_menu.php? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
tonzinhu
Iae galera beleza,
estou criando um sistema aonde dependendo do usuario ele só tem direito a ver os menus da area dele.
Ex:
Admin -> Acesso total
Marketing -> Acesso somente aos menus (add./rem. propaganda)
Ou seja, se o usuario = marketing ele lista os itens do menu de acordo com o usuario. Porem um usuario pode ter tambem outros niveis diferentes.
Acho que deu pra entender.
alguém poderia me dar uma "luz" de como fazer isso de um modo mais simples.
O meu esquema que pensei seria:
tabela_usuarios
iduser | login | senha
tabela_menu
idmenu
tabela_acesso_menu
idacesso | iduser | idmenu
ate ai tudo bem, lista normal, mas se algum usuario mais avançado digitar por exemplo no browser:
ele tem acesso somente a pagina de marketing.php, mas se digitar produtos.php que ele não teria acesso no browser ele navega pela pagina normalmente.
Queria uma ajuda nessa parte, pra impedir que eles vejam as outras pagina.
Ps: uso sistema de login com session.
vlw galera
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.