grldesign 0 Denunciar post Postado Dezembro 7, 2003 Olá Galera! Já postei sobre um sistema de login em 3 níveis anteriormente só que um erro está ocorrendo. O Sistema sempre loga o usuário, mesmo que a senha e o usuário forem errados. Vou colar abaixo o código para ver se alguém pode me ajudar OK? Index.php <form method="post" action="verifica.php"> Username<br> <input type="text" name="user_panel" size="50"> <br> <br> Password<br> <input type="text" name="pass_panel" size="50"> <br> <br> <input type="submit" name="logar" value=" Logar-se "> <input type="reset" name="limpar" value=" Limpar Campos"> </strong> </form> Verifica.php <? session_start(); if(!empty($HTTP_POST_VARS[user_panel])) { if(!empty($HTTP_POST_VARS[pass_panel])) {$user = $HTTP_POST_VARS[user_panel];$pass = $HTTP_POST_VARS[pass_panel]; require('config/dados.php');$busca = "SELECT * FROM login WHERE username='$user' AND password='$pass'";$verifica = mysql_query($busca);$confirma = mysql_num_rows($verifica);$campo = mysql_fetch_array($verifica);if(($confirma = 1)) {$campo_nome = $campo[nome_completo];$campo_usuario = $user;$campo_senha = $pass;$campo_email = $campo[email];$campo_cadastro = $campo[cadastro]; $_SESSION["nome"] = $campo_nome; $_SESSION["username"] = $campo_usuario; $_SESSION["senha"] = $campo_senha; $_SESSION["email"] = $campo_email; $_SESSION["cadastro"] = $campo_cadastro; if(($_SESSION["cadastro"] = 'Administrador')) { header("Location: painel.php"); } //Fecha IF Administrador if(($_SESSION["cadastro"] = 'Aluno')) { header("location: painel.php"); } //Fecha IF Aluno if(($_SESSION["cadastro"] = 'Professor')) { header("location: painel.php"); } //Fecha IF Professor }}else {header ("location: index.php"); } } ?> O Arquivo Painel.php não colarei pois é grande e não está fazendo a diferença neste caso , já que o erro é durante a verificação. Se alguem puder me ajudar serei grato. Inclusive por PM. Um abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Dezembro 7, 2003 <? session_start(); if(!empty($HTTP_POST_VARS[user_panel])) { if(!empty($HTTP_POST_VARS[pass_panel])) { $user = $HTTP_POST_VARS[user_panel]; $pass = $HTTP_POST_VARS[pass_panel]; require('config/dados.php'); $busca = "SELECT * FROM login WHERE username=$user"; $verifica = mysql_query($busca); $confirma = mysql_num_rows($verifica); while ($r = mysql_fetch_array($verifica)) { if ($r[senha] = $pass) { $_SESSION["nome"] = $campo_nome; $_SESSION["username"] = $campo_usuario; $_SESSION["senha"] = $campo_senha; $_SESSION["email"] = $campo_email; $_SESSION["cadastro"] = $campo_cadastro; } // Fecha if } // Fecha while if(($_SESSION["cadastro"] = 'Administrador')) { header("Location: painel.php"); } //Fecha IF Administrador if(($_SESSION["cadastro"] = 'Aluno')) { header("location: painel.php"); } //Fecha IF Aluno if(($_SESSION["cadastro"] = 'Professor')) { header("location: painel.php"); } //Fecha IF Professor } } else { header ("location: index.php"); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
grldesign 0 Denunciar post Postado Dezembro 8, 2003 Não funcionou prescot. Você não pode elaborar um pra mim baseado nestes dados acima? Compartilhar este post Link para o post Compartilhar em outros sites
emanuel fonseca 0 Denunciar post Postado Dezembro 8, 2003 muito cuidade e carinhao com esse código, ok!? Tenho ciúmes dos códigos que escrevo. $query = "select * from users where users.usuario = '$user'"; $e = mysql_query($query); $total = mysql_num_rows($e); if(!empty($total)){ while($capsula = mysql_fetch_row($e)){ $nome = $capsula[1]; $userid = $capsula[0]; $user = $capsula[10]; $senha = $capsula[11]; $status = $capsula[12]; } } else { $erro = "<font color=\"#ff0000\">Erro! </font> O nome de usuário informado está incorreto!"; return $erro; } if($pass != $senha) { $erro = "<font color=\"#ff0000\">Erro! </font> A senha informada está incorreta!"; return $erro; } elseif($status != 1){ $erro = "<font color=\"#ff0000\">Erro! </font>O nome de usuário encontra-se bloqueado!"; return $erro; } else { session_start(); $_SESSION["username"] = $this->user; $_SESSION["password"] = $this->senha; } Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Dezembro 8, 2003 Hehe, funciona normal com só um sinal de igual, quando está dentro de um if, ele funciona com um ou dois sinais, flws. :D/> Compartilhar este post Link para o post Compartilhar em outros sites
emanuel fonseca 0 Denunciar post Postado Dezembro 8, 2003 Hehe, funciona normal com só um sinal de igual, quando está dentro de um if, ele funciona com um ou dois sinais, flws. :D/> Não funciona não. Igualdade é diferente de atribuição. Compartilhar este post Link para o post Compartilhar em outros sites
Keitaro 0 Denunciar post Postado Dezembro 8, 2003 Alguns comentarios.1. como ja disseram "==" é diferente de "=", se duvida faca testes. Faz um codigo besta pra isso.2. Se a versao do PHP esta atualizada, reduza o codigo, de $HTTP_POST_VARS para simplesmente $_POST[]3. Nao precisa atribuir variavel a tudo, basta usala direto no codigo. No trecho confirma tem dois parenteses desnecessarios, basta o do IF.você pode fazer verificacao dessa forma:$sql = "SELECT user,passwd FROM user='$user' AND passwd='$passwd'";$rs = mysql_query($sql) or die ("erro");if ( mysql_num_rows($rs) > 0 ){echo "logado";}else{echo "erro";}4. Comece a usar AND,OR pra evitar divitar codigos desnecessariosif(!empty($HTTP_POST_VARS[user_panel])) { if(!empty($HTTP_POST_VARS[pass_panel])) {no trecho acima você usa dois IF desnecessariamente, use um, usando AND. E n precisa usar !empty, basta por:ps. variaveis capturadas pelo $_POST.if ($user AND $passwd){...}5. Agora é OPCAO, eu gosto de digitar o que é codigo de SQL em MAIUSCULO, pra diferencia o codigo da busca, fica mais facil a visualizacao.Como a sua duvida era apenas na verificacao, e usar o "==" ao inves de um. Eu gosto de usar > pq basta n ser zero para validar, se por um conflito sao encontrados 2 dados iguais ele vai retornar FALSE na verificacao embora seja verdadeira.Espero ter ajudado. Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Dezembro 8, 2003 Falei demais hehe, malz Compartilhar este post Link para o post Compartilhar em outros sites
grldesign 0 Denunciar post Postado Dezembro 10, 2003 Keitaro, vai abaixo o arquivo de verificação modificado. Veja como ficou e me diga se está bom agora! <? session_start(); $user = $_POST[user_panel]; $pass = $_POST[pass_panel]; if($user AND $pass) { require('config/dados.php'); $busca = "SELECT username,password FROM login WHERE username=='$user' AND password=='$pass'"; $verifica = mysql_query($busca); while($campo = mysql_fetch_array($verifica)) { if(mysql_num_rows($verifica) > 0) { $campo_nome = explode("", $campo[nome_completo]); $_SESSION["nome"] = $campo_nome[0]; $_SESSION["username"] = $campo[usuario]; $_SESSION["senha"] = $campo[senha]; $_SESSION["email"] = $campo; $_SESSION["cadastro"] = $campo[cadastro]; } } if($_SESSION["cadastro"] == 'Administrador') { header("Location: painel.php"); } //Fecha IF Administrador if($_SESSION["cadastro"] == 'Aluno') { header("Location: painel.php"); } //Fecha IF Aluno if($_SESSION["cadastro"] == 'Professor') { header("Location: painel.php"); } //Fecha IF Professor } else { header ("Location: index.php?acao=erro&tipo=login"); } ?> Compartilhar este post Link para o post Compartilhar em outros sites