JoaoVM Posted July 23, 2013 at 02:15 PM Report #519668 Posted July 23, 2013 at 02:15 PM (edited) Boa tarde, Estou com uma duvida no que toca a perfis de utilizador, o que tenho é o seguinte: session_start(); $user = $_SESSION['username']; if (array_key_exists('username', $_SESSION) && $_SESSION['username'] != '') { echo "Olá $user. Bem vindo á Empresa XXX"; echo "<br>"; echo '<a href="logout.php">Terminar Sessão</a>'; } CONTEUDO DA PAGINA VISIVEL A UTILIZADORES COM PERMISSAO else { echo "Olá Visitante, Bem vindo á Empresa XXX"; echo "<br>"; echo "A aplicação da Empresa XXX está reservada a utilizadores com permissão!!!"; echo "<br>"; echo '<a href="login.php">Iniciar Sessão</a>'; echo "<br>"; } A minha duvida é como coloco por exemplo este conteúdo para apenas o utilizador cujo "tipo_utilizador" é "DSI", essa informação só pode estar disponível mediante login que é o que já tenho mas depois tem que distribuir as permissões de visualização por tipo de utilizador, alguém me sabe ajudar? Cumprimentos, João Martins Edited July 23, 2013 at 03:30 PM by yoda
HappyHippyHippo Posted July 23, 2013 at 02:35 PM Report #519672 Posted July 23, 2013 at 02:35 PM olha bem a ordem das coisas !!!! session_start(); $user = $_SESSION['username']; // <-------------------------------------------------- uso do valor if (array_key_exists('username', $_SESSION) && $_SESSION['username'] != '') { // <--- verificação se o valor existe ?? agora, respondendo à tua questão, com a informação que disponibilizas, a única coisa que se pode dizer será que deverás guardar o tipo de utilizador no momento que guardas o nome deste na autenticação, e depios validar essa informação exemplo do seu uso: if (array_key_exists('username', $_SESSION) && $_SESSION['username'] != '' && array_key_exists('tipo_utilizador', $_SESSION) && $_SESSION['tipo_utilizador'] != '') { // existe autenticação switch ($_SESSION['tipo_utilizador']) { case 'DSI': // tipo de utilizador "DSI" break; default: // tipo desconhecido ou não processado break; } } else { // não existe autenticação } 2 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
JoaoVM Posted July 23, 2013 at 03:28 PM Author Report #519677 Posted July 23, 2013 at 03:28 PM (edited) Não estou a conseguir, ele quanto faço isto ele entra como visitante..não é esse o objetivo.. session_start(); if (array_key_exists('username', $_SESSION) && $_SESSION['username'] != ''&& array_key_exists('role', $_SESSION) && $_SESSION['role'] !='') { // existe autenticação switch ($_SESSION['role']) { case 'DSI': echo ("Este Utilizador Pertence ao DSI"); break; default: echo ("Este Utilizador nao Pertence ao Departamento"); break; } $user = $_SESSION['username']; echo "Olá $user. Bem vindo á Empresa XPTO"; echo "<br>"; echo '<a href="logout.php">Terminar Sessão</a>'; } else { echo "Olá Visitante, Bem vindo á Empresa XPTO"; echo "<br>"; echo "A aplicação da Empresa XPTO está reservada a utilizadores com permissão!!!"; echo "<br>"; echo '<a href="login.php">Iniciar Sessão</a>'; echo "<br>"; } Edited July 23, 2013 at 03:30 PM by yoda
HappyHippyHippo Posted July 23, 2013 at 04:27 PM Report #519681 Posted July 23, 2013 at 04:27 PM mas registaste o 'role' na sessão ? é que existem 4 condições para detectar um registo bem efectuado: if (array_key_exists('username', $_SESSION) && // existir um registo de 'username' em sessão $_SESSION['username'] != ''&& // e esse registo não pode ter o valor "vazio" array_key_exists('role', $_SESSION) && // existir um registo de 'role' em sessão $_SESSION['role'] !='') { // e esse registo não pode ter o valor "vazio" IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
JoaoVM Posted July 23, 2013 at 04:54 PM Author Report #519684 Posted July 23, 2013 at 04:54 PM (edited) Tenho no meu valida_login.php: //COLOCA O ROLE EM SESSAO $_SESSION['role']=$role['role']; Edited July 23, 2013 at 06:30 PM by brunoais geshi
Rui Carlos Posted July 24, 2013 at 10:05 PM Report #519851 Posted July 24, 2013 at 10:05 PM Faz um print do $_SESSION para veres se o valor está definido correctamente. Rui Carlos Gonçalves
JoaoVM Posted July 25, 2013 at 09:06 AM Author Report #519887 Posted July 25, 2013 at 09:06 AM http://prntscr.com/1hequr
HappyHippyHippo Posted July 25, 2013 at 09:20 AM Report #519888 Posted July 25, 2013 at 09:20 AM e $role['role'] existe porque sim ? caso não tenhas reparado pelo número de respostas ao teu tópico, sem apresentares a informação de como fazes as coisas, é impossível dizer alguma coisa sobre o teu problema IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
JoaoVM Posted July 25, 2013 at 09:56 AM Author Report #519890 Posted July 25, 2013 at 09:56 AM (edited) Bem, tenho a minha pagina login.php que é um formulário normal que redireciona para a pagina valida_login.php. Esta é a minha página valida_login.php tem algumas coisas que não estão a fazer anda mas não e isso que interessa também.. <?php require_once ('init.php'); //CONSULTA DO UTILIZADOR $consulta="select * from utilizadores where username='" . $_POST['username'] . "' and passwd='" . $_POST['passwd'] . "'"; $resultado=mysql_query($consulta); if (mysql_num_rows($resultado)>0) //SE O UTILIZADOR E A PASSWORD COINCIDIREM { //COLOCA NA VARIAVEL LINHA OS DADOS DA CONSULTA $linha=mysql_fetch_array($resultado); //COLOCA O USERNAME EM SESSAO $_SESSION['username']=$linha['username']; //COLOCA O ROLE EM SESSAO $_SESSION['role']=$role['role']; //REDIRECCIONA A PAGINA PARA A PAGINA SECRETA if($linha['role'] == 'DSI'){ // Utilizador faz algo... header("location: index.php"); }else{ // Administrador faz algo... header("location: restrito.php"); } /* Poderia fazer assim tambem pode ser uma ideia.. $linha['role'] == 'DSI'; switch($linha){ case 'DSI': header("location: index.php"); break; case 'ADMIN': header("location: index.php"); break; case 'CL': header("location: index.php"); break; case 'CT': header("location: gestao_turnos.php"); break; case 'CP': header("location: index.php"); break; default: header("location: restrito.php"); break; } */ header("location: index.php"); } else //CASO NAO COINCIDAM { //REDIRECCIONA PARA A PAGINA INICIAL REPORTANDO O ERRO header("location: index.php?erro=1"); } ?> agora temos a página do index.php que mostrar qual o perfil de utilizador ou role do utilizador que fez o login. esta pagina apenas mostra as boas vindas e o conteúdo da pagina. session_start(); if (array_key_exists('username', $_SESSION) && $_SESSION['username'] != '' && array_key_exists('role', $_SESSION) && $_SESSION['role'] !='') { // existe autenticação switch ($_SESSION['role']) { case 'DSI': echo ("Este Utilizador Pertence ao DSI"); break; default: echo ("Este Utilizador nao Pertence ao Departamento"); break; } $user = $_SESSION['username']; //echo $role = $_SESSION['role']; echo "Olá $user. Bem vindo á Empresa XPTO"; echo "<br>"; echo '<a href="logout.php">Terminar Sessão</a>'; } else { echo "Olá Visitante, Bem vindo á Empresa XPTO"; echo "<br>"; echo "A aplicação da Empresa XPTO está reservada a utilizadores com permissão!!!"; echo "<br>"; echo '<a href="login.php">Iniciar Sessão</a>'; echo "<br>"; } esta é uma outra página que deve ter permissão para aceder...consigo dar permissão para quem está com o login efetuado ou nao mas nao estou a conseguir por perfil de utilizador. <?php if (isset($_SESSION['username'])) { $user = $_SESSION['username']; ?> CONTEUDO DA PAGINA <?php echo "Olá $user, Bem vindo á Gestão de Turnos"; echo "<br>"; echo '<a href="logout.php">Terminar Sessão</a>'; CONTEUDO QUE PODE SER VISTO POR QUEM ESTÁ COM LOGIN EFETUADO } else { //REDIRECIONAMENTO PARA QUEM NÃO TEM LOGIN EFETUADO $url = 'restrito.php'; // *Cough* echo "<script language=\"javascript\"> location.href=\"$url\"; </script>"; exit; } ?> espero ter-me conseguido explicar quanto ao meu problema. Cumprimentos, João Martins Edited July 25, 2013 at 09:57 AM by JoaoVM
Rui Carlos Posted July 25, 2013 at 10:09 AM Report #519897 Posted July 25, 2013 at 10:09 AM Parece-me que o problema é teres $_SESSION['role']=$role['role']; em vez de $_SESSION['role']=$linha['role'];. 1 Report Rui Carlos Gonçalves
JoaoVM Posted July 25, 2013 at 10:28 AM Author Report #519902 Posted July 25, 2013 at 10:28 AM Bem, afinal era uma coisinha pequena que me estava a causar um grande problema..nao esperava que fosse ali mas estava certo. Obrigado Rui Carlos e HappyHippyHippo.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now