ralfinho 0 Denunciar post Postado Setembro 13, 2009 Bom eu baixei um cadastro de usuarios pela net, cadastra tudo certim mais quando é pra logar da problema, ou seja quando clico em logar, fica na mesma pagina. codigos login.php <html> <head> <title>Documento sem título</title> </head> <body> <form action="logar.php" method="POST"> <table width="483" align="center"> <tr> <td width="60"><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong>Usuário:</strong></font></td> <td width="129"><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif"> <input name="login" type="text" id="login" size="20"> </font></td> <td width="63"><div align="center"><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong>Senha:</strong></font></div> </td> <td width="133"><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif"> <input name="senha" type="password" id="senha" size="20" maxlength="10"> </font></td> <td width="74"><div align="center"><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif"> <input type="submit" value="Logar" name="entrar"> </font></div></td> </tr> </table> </form> </body> </html> logar.php <? include "configuracao.php"; $db = mysql_connect ($host, $login_db, $senha_db); $basedados = mysql_select_db($database); $resultado = mysql_query("SELECT login, senha FROM usuarios_vip WHERE login='$login' AND senha='$senha'") or print (mysql_error()); while($linha = mysql_fetch_array($resultado)){ $loginbanco = $linha["login"]; $senhabanco = $linha["senha"]; } if($loginbanco == $login AND $senhabanco == $senha){ session_register(login); session_register(senha); header("Location: area_vip.php"); } else{ echo " <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'> <script type=\"text/javascript\"> alert(\"Erro: Usuário ou senha inválidos!\"); </script> "; } ?> me ajudem a localizar o erro. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Setembro 13, 2009 Eu não sei de onde você pegou este código, mas esta parte não faz sentido... $resultado = mysql_query("SELECT login, senha FROM usuarios_vip WHERE login='$login' AND senha='$senha'") or print (mysql_error()); while($linha = mysql_fetch_array($resultado)){ $loginbanco = $linha["login"]; $senhabanco = $linha["senha"]; } if($loginbanco == $login AND $senhabanco == $senha){ Se você seleciona os dados da tabela que sejam iguais a $login e $senha, porque fazer o while e o if? Faça um teste para ver quantas linhas retornaram, ou seja, se existe algum registro com o usuário e a senha fornecidos, usando mysql_num_rows. Caso tenha algum registro, OK. Caso não tenha, usuário e/ou senha inválida. Outras coisas... - Você tá guardando a senha no banco sem criptografia? Se estiver, muda isto correndo, por questão de segurança. http://br.php.net/md5 http://br.php.net/sha1 - Mude o register_global para OFF, também por questão de segurança, e acesse os valores do formulário pela superglobal $_POST. http://br.php.net/manual/pt_BR/reserved.variables.post.php - Trate os valores antes de jogar dentro da consulta, para evitar Sql Injection (questão de que??? SEGURANÇA). http://forum.imasters.com.br/index.php?/topic/276729-seguranca-em-php/ Acho que é isto. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Setembro 14, 2009 O problema todo está aqui senhores: WHERE login='$login' AND senha='$senha'") forma correta: WHERE login='{$_POST['login']}' AND senha='{$_POST['senha']}'") Não coloque a variável direta, capture-a primeiro de acordo o seu método. Porém, a partes em seu código que não está corretamente empregada como o while, como disse o amigo Carlos. faça assim: <?php include "configuracao.php"; $db = mysql_connect ($host, $login_db, $senha_db); mysql_select_db($database,$db); $resultado = mysql_query("SELECT login, senha FROM usuarios_vip WHERE login='{$_POST['login']}' AND senha='{$_POST['senha']}'") or die(mysql_error()); if(mysql_num_rows($resultado) > 0 ){ $linha = mysql_fetch_array($resultado); $loginbanco = $linha['login']; $senhabanco = $linha['senha']; } if($loginbanco == $login AND $senhabanco == $senha){ session_register(login); session_register(senha); header("Location: area_vip.php"); } else{ echo " <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'> <script type=\"text/javascript\"> alert(\"Erro: Usuário ou senha inválidos!\"); </script> "; } ?> Lembrando que seu código não é seguro, apenas fiz algumas observações e corrigi o problema. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites