Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ralfinho

Cadastro com problema

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.