Cyberoma 5 Denunciar post Postado Janeiro 23, 2012 Boa noite galera, eu fiz um sistema de login com niveis de acesso, ele até que funciona bem.. Porem se alguem mudar a URL, pode acabar acessando a aréa de outro nivel.. Por exemplo: usuario comum loga em: site_usuario.php... se ele mudar a url pra site_adm ele acessa a area do administrador.. entenderam?? Não sei como corrigir isso, alguem tem alguma ideia?? logar.php <? $login = $_POST['login']; $senha = md5($_POST['senha']); include "config.php"; $sql = mysql_query("SELECT * FROM usuarios WHERE login = '$login'"); $cont = mysql_num_rows($sql); while($linha = mysql_fetch_array($sql)){ $senha_db = $linha['senha']; $nivel = $linha['nivel']; $solicitante = $linha['nome']; $local = $linha['local']; $ramal = $linha['ramal']; $email = $linha['email']; } if($cont == 0){ echo "<script> alert(\"Login inválido\"); window.location.href=(\"login.php\"); </script>"; }else if($senha_db != $senha){ echo "<script> alert(\"Senha inválida\"); window.location.href=(\"login.php\"); </script>"; }else{ session_start(); $_SESSION['login_usuario'] = $login; $_SESSION['senha_usuario'] = $senha; $_SESSION['nome_usuario'] = $solicitante; $_SESSION['local_usuario'] = $local; $_SESSION['ramal_usuario'] = $ramal; $_SESSION['id_usuario'] = $ramal; $_SESSION['email_usuario'] = $email; if($nivel == '2'){ header('Location:base_solucoes_adm.php'); }else if($nivel == '1'){ header('Location:base_solucoes_especial.php'); }else{ header('Location:base_solucoes_usuarios.php'); } } mysql_close($connect); ?> verifica.php (coloca em todas as paginas, pra verificar se o usuario ta logado) <? session_start(); include "config.php"; if(isset($_SESSION["login_usuario"]) AND isset($_SESSION['senha_usuario'])){ $login_usuario = $_SESSION["login_usuario"]; $senha_usuario = $_SESSION["senha_usuario"]; $sql = mysql_query("SELECT * FROM usuarios WHERE login = '$login_usuario'"); $cont = mysql_num_rows($sql); while($linha = mysql_fetch_array($sql)){ $senha_db = $linha['senha']; } if($cont == 0){ unset($_SESSION["login_usuario"]); unset($_SESSION["senha_usuario"]); echo "<script> alert(\"Login inválido\"); window.location.href=(\"login.php\"); </script>"; } if($senha_db != $senha_usuario){//confere senha unset($_SESSION["login_usuario"]); unset($_SESSION["senha_usuario"]); echo "<script> alert(\"Senha inválida\"); window.location.href=(\"login.php\"); </script>"; } }else{ echo "<script> alert(\"Login e senha inválida\"); window.location.href=(\"login.php\"); </script>"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
manolegal 12 Denunciar post Postado Janeiro 23, 2012 Tenta colocar uma condição no inicio do arquivo "site_adm". Pelo q entendi do seu código, cada usuário tem um "nivel". Tenta o seguinte: $nivel = $_SESSION["nivel"]; $nivel_necessario=1; if (($nivel) > ($nivel_necessario)) { echo "<center>Acesso negado!</center>"; echo "<meta http-equiv='refresh' content='2;URL=sua_pagina.php'>"; exit; } Neste caso, se o nivel do usuario, for maior que o nivel necessario, direciona para a página que você definir. Imagino que existam outras formas, mas esta deve funcionar. Compartilhar este post Link para o post Compartilhar em outros sites
lusigmas 0 Denunciar post Postado Janeiro 23, 2012 Boa noite Cyberoma, já fiz algo assim, minha sugestão: inclua uma variável de sessão = 'nivel' no seu arquivo logar.php $_SESSION['nivel'] = $nivel; Em cada página do sistema inclua: $login = $_SESSION['login']; $nivel = $_SESSION["nivel"]; $nivelusu = '1'; //aqui você coloca - em cada página - o nível correto de acordo com o tipo de usuário. if ($_SESSION["nivel"] != $nivelusu) { header("Location: logout.php"); //ou redireciona para outra página qualquer. Abs. Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Janeiro 24, 2012 Boa noite Cyberoma, já fiz algo assim, minha sugestão: inclua uma variável de sessão = 'nivel' no seu arquivo logar.php $_SESSION['nivel'] = $nivel; Em cada página do sistema inclua: $login = $_SESSION['login']; $nivel = $_SESSION["nivel"]; $nivelusu = '1'; //aqui você coloca - em cada página - o nível correto de acordo com o tipo de usuário. if ($_SESSION["nivel"] != $nivelusu) { header("Location: logout.php"); //ou redireciona para outra página qualquer. Abs. lusigmas, usei seu codigo e funcionou xD.. facil, facil Obrigadooooo, abraço irmão.. Tenta colocar uma condição no inicio do arquivo "site_adm". Pelo q entendi do seu código, cada usuário tem um "nivel". Tenta o seguinte: $nivel = $_SESSION["nivel"]; $nivel_necessario=1; if (($nivel) > ($nivel_necessario)) { echo "<center>Acesso negado!</center>"; echo "<meta http-equiv='refresh' content='2;URL=sua_pagina.php'>"; exit; } Neste caso, se o nivel do usuario, for maior que o nivel necessario, direciona para a página que você definir. Imagino que existam outras formas, mas esta deve funcionar. Obrigado pela resposta, vou testar o seu tambem, mas pelo visto funciona também.. obrigado ^^ Compartilhar este post Link para o post Compartilhar em outros sites
lusigmas 0 Denunciar post Postado Janeiro 24, 2012 Que bom que gostou, o do manolegal tem a mesma lógica, pode usar qualquer um deles. Só um detalhe: sou 'irmã', não 'irmão', risos. Abs. Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Janeiro 24, 2012 Que bom que gostou, o do manolegal tem a mesma lógica, pode usar qualquer um deles. Só um detalhe: sou 'irmã', não 'irmão', risos. Abs. vixi, é mesmo.. :lol: malz, obrigado "irmã". uhsauhsahuhsau Compartilhar este post Link para o post Compartilhar em outros sites
albertopc 0 Denunciar post Postado Setembro 19, 2013 Você poderia postar o código include "config.php" Ou se possível zipar todos estes arquivos de "login" com nível de acesso para que eu possa fazer um teste e adaptar para meu sistema. Obrigado albertopc Compartilhar este post Link para o post Compartilhar em outros sites