santos_s 12 Denunciar post Postado Dezembro 4, 2013 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
rumao 1 Denunciar post Postado Dezembro 4, 2013 Você está mandando a senha em md5 para ser comparada com a que tem no banco? md5($_POST['senha']); por exemplo? Compartilhar este post Link para o post Compartilhar em outros sites
Micilini Roll 49 Denunciar post Postado Dezembro 4, 2013 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: Voce pegou a senha que o usuario digitou e converteu ela para md5 como podemos visualizar no comando abaixo: $senha =md5($_POST['senha']); Agora voce pegou a senha do banco QUE ESTAVA EM MD5, e converteu pra MD5 NOVAMENTE? $senhadobanco =md5($_POST['senha']); É 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
santos_s 12 Denunciar post Postado Dezembro 5, 2013 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
paulinhosupriano 103 Denunciar post Postado Dezembro 5, 2013 $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
santos_s 12 Denunciar post Postado Dezembro 5, 2013 $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
Micilini Roll 49 Denunciar post Postado Dezembro 5, 2013 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
paulinhosupriano 103 Denunciar post Postado Dezembro 5, 2013 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
santos_s 12 Denunciar post Postado Dezembro 5, 2013 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
Edwin Medina García 1 Denunciar post Postado Dezembro 5, 2013 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
santos_s 12 Denunciar post Postado Dezembro 6, 2013 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
Raul Silva 41 Denunciar post Postado Dezembro 6, 2013 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
santos_s 12 Denunciar post Postado Dezembro 7, 2013 Ok @Raul Silva, Vou testar e retorno com resultado. Abraço Compartilhar este post Link para o post Compartilhar em outros sites
santos_s 12 Denunciar post Postado Dezembro 14, 2013 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