Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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);$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);$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>";
}
?>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.
>
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 ^^
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.
>
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
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
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:
if (($nivel) > ($nivel_necessario)) {
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.