Ir para conteúdo

POWERED BY:

Arquivado

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

santos_s

Erro ao comparar senha BD

Recommended Posts

Srs. não estou conseguindo fazer com que o usuário troque sua senha,arquivo altera_senha.php. já bati muita cabeça e não consegui resolver. código:

 

<?php
	$usuariologado	=$_POST['nome'];
	$senha		=md5($_POST['senha']);
	$novasenha	=md5($_POST['novasenha']);
	$confirmasenha	=md5($_POST['confirmasenha']);
	$sql = mysql_query("SELECT senha FROM usuarios WHERE nome = '$usuariologado'") or die ('Erro :'.mysql_error());	
	while ($linha = mysql_fetch_array($sql)){ 	
		$senhadobanco =md5($_POST['senha']);
		} //fim while	
		if (($novasenha == "") || ($confirmasenha == "")){
			echo "<script type='text/javascript'>window.alert('É preciso inserir Nova Senha !');</script>";
			echo "<script> loginfailed()</script>";
			echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
		} else {		
			if ($senha != $senhadobanco){//se a senha digitada é diferente da senha do BD
			echo "<script type='text/javascript'>window.alert('Senha Atual Não Confere! !');</script>";
			echo "<script> loginfailed()</script>";
			echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
			} else {
				if ($novasenha<>$confirmasenha){//se nova senha é diferente da senha confirmada
				echo "<script type='text/javascript'>window.alert('Campos da nova senha não conferem!');</script>";
				echo "<script> loginfailed()</script>";
				echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
				} else{	
					$update = mysql_query("UPDATE usuarios SET senha='".$novasenha."' WHERE nome='".$usuariologado."';");
					if ($update){
					echo "<script type='text/javascript'>window.alert('Senha alterada com sucesso.!');</script>";
					echo "<script>loginsuccessfully()</script>";
					echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
					}else {
                                             echo "<script   type='text/javascript'>window.alert('Ocorreu um erro ao alterar a senha!');</script>";
                                             echo "<script> loginfailed()</script>";
                                             echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
					}//3º else
				}//2º else
			}//3º else2
		}//fim if
?>

Aponta erro na comparação de senha

if ($senha != $senhadobanco)

dizendo que a variável $senhadobanco não foi definida.

 

 

Abraço



Já descobri um erro aqui.

 

$senhadobanco =md5($_POST['senha']);/*momento de loucura recuperar a senha do campo 
                                    se o que quero é comparar com a senha do banco*/

minha dúvida está aqui:

 

$senhadobanco = $linha["senha"];/*como compara a senha como md5?*/

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro de tudo, quando o usuario se cadastra, a senha é jogada no banco de dados em formato md5 certo? Pois bem se for dessa forma encontrei um erro de logica no seu codigo que foi passado despercebido. o que aconteçe é o seguinte:

 

  1. Voce pegou a senha que o usuario digitou e converteu ela para md5 como podemos visualizar no comando abaixo:

 

 

$senha =md5($_POST['senha']);

 

 

  1. Agora voce pegou a senha do banco QUE ESTAVA EM MD5, e converteu pra MD5 NOVAMENTE?

 

 

 

 

$senhadobanco =md5($_POST['senha']);

 

  1. É claro que o resultado final dará errado, mesmo se eu estivesse enganado em citar que na hora do cadastro a senha que é jogada no banco é em formato md5, nao teria logica de voce pegar a senha que o usuario digitou converter pra md5 e pegar a senha do banco e converter pra md5?? Nisso voce ja tirou alguns porcentos da eficiencia de seu projeto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque assim: $senhadobanco = $linha['senha'];

 

e gerou erro variável não declarada, Parece que o problema está no while, pois a variável $senhadobanco

 

não está sendo enxergada pelo resto do projeto, como resolver isso?

 

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites
$sql = mysql_query("SELECT senha FROM usuarios WHERE nome = '$usuariologado'")

coloca

 

$sql = mysql_query("SELECT nome,senha FROM usuarios WHERE nome = '$usuariologado'")

 

 

para se recuperar a senha do banco não e $senha_banco = md5($_POST['senha']);

 

e sim

 

$senha_banco = $linha['senha'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

$sql = mysql_query("SELECT senha FROM usuarios WHERE nome = '$usuariologado'")

coloca

 

$sql = mysql_query("SELECT nome,senha FROM usuarios WHERE nome = '$usuariologado'")

 

 

para se recuperar a senha do banco não e $senha_banco = md5($_POST['senha']);

 

e sim

 

$senha_banco = $linha['senha'];

Já tinha consertado essa linha $senha_banco = md5($_POST['senha']);

o mesmo erro :undefined variable senhadobanco line 26: eis a linha .

if ($senha != $senhadobanco){//se a senha digitada é diferente da senha do BD

 

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

claro vc esta fazendo uma comparação com uma variavel que nao existe, veja bem:

 

 

$senhadobanco  (esta é a variavel que nao existe)

 

 


$senha_banco (esta é a variavel do banco que existe)

 

 

 

entao ali no if vc fez uma comparação que nao existe, tente colocar:

 

 

if ($senha != $senha_banco){

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos lá.

 

e melhor fazer assim.

 


$login    = strip_tags(trim($_POST['login']));
$senha  = strip_tags(trim(md5($_POST['senha'])));


$sql = "SELECT * FROM TABELA WHERE login = '".$login."' AND senha = '".$senha."' ";
$execute = mysql_query($sql) or die (mysql_error()) ;


if(mysql_num_rows($executa) > 0){

echo 'Dados corretos';
}else{

echo 'Dados incorretos';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Srs. essa página é de alteração de senha, quando o usuário é cadastrado é gerado uma senha pra ele,quando ele for alterar a senha que vai executar esse script.

Segue script completo:

<?php
	$usuariologado	=$_POST['nome'];
	$senha				=md5($_POST['senha']);
	$novasenha		=md5($_POST['novasenha']);//$senha=md5($_POST["senha"]);
	$confirmasenha	=md5($_POST['confirmasenha']);
	$sql = mysql_query("SELECT nome,senha FROM usuarios WHERE nome = '$usuariologado'") or die ('Erro :'.mysql_error());
	
	while ($linha = mysql_fetch_array($sql)){ 	
		$senhadobanco = $linha['senha'];
		 }//fim while
		if (($novasenha == "") || ($confirmasenha == "")){//se os campos estiverem vazios
			echo "<script type='text/javascript'>window.alert('É preciso inserir Nova Senha !');</script>";
			echo "<script> loginfailed()</script>";
			echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
		} else {		
			if ($senha != $senhadobanco){//se a senha digitada é diferente da senha do BD
			echo "<script type='text/javascript'>window.alert('Senha Atual Não Confere! !');</script>";
			echo "<script> loginfailed()</script>";
			echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
			} else {
				if ($novasenha<>$confirmasenha){//se nova senha é diferente da senha confirmada
				echo "<script type='text/javascript'>window.alert('Campos da nova senha não conferem!');</script>";
				echo "<script> loginfailed()</script>";
				echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
				} else{	
					$update = mysql_query("UPDATE usuarios SET senha='".$novasenha."' WHERE nome='".$usuariologado."';");
					if ($update){
					echo "<script type='text/javascript'>window.alert('Senha alterada com sucesso.!');</script>";
					echo "<script>loginsuccessfully()</script>";
					echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
					}
					else {
						echo "<script type='text/javascript'>window.alert('Ocorreu um erro para alterar a senha!');</script>";
						echo "<script> loginfailed()</script>";
						echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
					}//3º else
				}//2º else
			}//3º else2
		}//fim if
?>

Ainda acho que está dando o erro: undefined variable senhadobanco, porque a mesma está dentro o while e não está sendo exergada pelo resto do projeto.

 

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites


o campo "nome" na sua tabela é um campo único? se não é ele pode trazer mais de um resultado na consulta e alterar a senha de mais um usuário.


a linha $update = mysql_query("UPDATE usuarios SET senha='".$novasenha."' WHERE nome='".$usuariologado."';");, tem uma virgula na consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

o campo "nome" na sua tabela é um campo único? se não é ele pode trazer mais de um resultado na consulta e alterar a senha de mais um usuário.
a linha $update = mysql_query("UPDATE usuarios SET senha='".$novasenha."' WHERE nome='".$usuariologado."';");, tem uma virgula na consulta.

O campo nome é único na tabela, com relação a vigula retirei, e continua do mesmo erro.

 

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeira coisa a ser feita:

Organize seu código.

 

Um código bem organizado e limpo é mais fácil de ler e de manter.

 

Pegue as dados do formularios, valide-os e depois faça as consultas ao banco.

 

Dica: Sempre comente seu código =)

 

Antes de postar o codigo exemplo:

 

 

while ($linha = mysql_fetch_array($sql)){   $senhadobanco = $linha['senha'];}//fim while

A variavel $senhadobanco só existe dentro do while, por isso o erro de variavel nao definida.

 

Segue o código exemplo:

 

<?php
// Nao e legal fazer dessa forma, mas como voce ja fez vou usar seu codigo
function mostrarResultado($msg, $success){
    echo "<script type='text/javascript'>window.alert('{$msg}');</script>";
    if($success){
        echo "<script>loginsuccessfully()</script>";
    } else {
        echo "<script> loginfailed()</script>";
    }
       
    echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
}


$usuariologado	 = $_POST['nome'];
$senha		     = $_POST['senha'];
$novasenha	     = $_POST['novasenha'];
$confirmasenha	 = $_POST['confirmasenha'];


// Validando os dados vindo do formulario
if(empty($senha)){
    mostrarResultado('Digite a sua senha !', false);
}

if(empty($novasenha) || empty($confirmasenha)){
    mostrarResultado('Nova senha e Confirmacao sao necessarias !', false);
}

if($novasenha != $confirmasenha){
    mostrarResultado('Campos da nova senha não conferem!');
}

// Validando se a senha digitada e igual a do banco
$sql = mysql_query("SELECT senha FROM usuarios WHERE nome = '$usuariologado'") or die ('Erro :'.mysql_error());
while ($linha = mysql_fetch_array($sql)){
    if($linha['senha'] != md5($novasenha)){
        mostrarResultado('Senha Atual Não Confere! !', false);
    } else {
        $update = mysql_query("UPDATE usuarios SET senha='".$novasenha."' WHERE nome='".$usuariologado."';");
        if($update){
            mostrarResultado('Senha alterada com sucesso.!', true);
        } else {
            mostrarResultado('Ocorreu um erro ao alterar a senha!', false);
        }
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro @Raul Silva,

 

Infelismente não me retornou resultado, estou fazendo a comparação só se a senha antiga for diferente da senha do banco, pois as outras validações estou fazendo no proprio formulário.

Segue meu código.

 

		$usuariologado      = $_POST['nome'];
		$senha              =md5($_POST['senha']);
		$senhanova          =$_POST['novasenha'];
		$senhaconfirmada    =$_POST['confirmasenha'];
		
		$sql = mysql_query("SELECT senha FROM usuarios WHERE nome = '$usuariologado'") or die ('Erro :'.mysql_error());
		while ($linha = mysql_fetch_array($sql)){
			if($linha['senha'] !=($senha)){
				echo "<script> loginfailed()</script>";
				echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando senha não confere...<font><center>";
			} else {
				$update = mysql_query("UPDATE usuarios SET senha='".$senhanova."' WHERE nome='".$usuariologado."';");
				if($update){
					 echo "<script>loginsuccessfully()</script>";
					 echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando senha ok...<font><center>";
				} else {
					 echo "<script> loginfailed()</script>";
					 echo"<center><br><font face=\"calibri\"color=\"#00000\">Redirecionando...<font><center>";
					
				}
			}
		}

 

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.