Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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:
>
$senha =md5($_POST['senha']);
>
$senhadobanco =md5($_POST['senha']);
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
$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'];
>
$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.
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){
}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';
}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.
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" 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.
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()); 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);
}
}
}Ok @Raul Silva,
Vou testar e retorno com resultado.
Abraço
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.
Você está mandando a senha em md5 para ser comparada com a que tem no banco?
md5($_POST['senha']); por exemplo?