Ir para conteúdo

POWERED BY:

Arquivado

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

allexxnunes

Alteração de senha de usuário

Recommended Posts

Olá pessoal.

 

Estou desenvolvendo um sistema de cadastro com login. As informações de login ficam armazenadas na sessão. Utilizo o e-mail e a senha para ser feito login no sistema. Ocorre que estou tentando fazer um mecanismo para que o usuário possa alterar sua senha. Achei um sistema de alteração de senha na internet e estou tentando adaptá-lo ao meu projeto. Mas não está dando certo, me retorna sempre a mensagem "Senha atual incorreta".

Abaixo segue o código original e na sequência as adaptações que fiz, assim vocês podem comparar o antes e o depois.

 

Agradeço a quem puder ajudar.

<?php
session_start();
	
	if (isset($_POST['senha_atual']) && isset($_POST['confirma']))
	{
		//se o usuário acabou de tentar efetuar login
		$pass = md5($_POST['senha_atual']);
		
		$query = "SELECT * FROM usuario "
				."WHERE cpf = '{$_SESSION["valid_user"]}'"
				." AND senha='$pass'";
				
		 $result = mysql_query($query) or die (mysql_error());
		 if (mysql_num_rows($result)>0)
			{
				if ($_POST['confirma']==$_POST['confirma2'])
				{
				$alt_senha=mysql_query ("update usuario set senha='".md5($_POST["confirma"])."' where cpf='{$_SESSION["valid_user"]}'");
				}
				else
				{
				echo "<script> alert('Confimação de Senha não Confere. Tente outra vez!');</script>";
				}
			}else{
			echo "<script> alert('Senha atual incorreta!');</script>";
			}	
	}
	if ($alt_senha)
	{
		echo "<script> alert('Senha Alterada com Sucesso!'); location.href='./';</script>";
	}
	// o usuário não tentou efetuar o login ainda ou saiu
		
	// fornece um formulário para efetuar o login	
?>
<fieldset>
<legend>Alterar Senha</legend>
<div align="left">
<form id="form1" name="form1" method="post" action="">
  <label></label>
  <label>Nova Senha:
  <input name="confirma" type="password" id="confirma" />
  </label>
  <label>Confirme Nova Senha:
  <input name="confirma2" type="password" id="confirma2" />
  </label>
  <label>Senha Atual:
  <input name="senha_atual" type="password" id="senha_atual" />
  </label>
  <br><p>
    <input type="submit" name="Submit" value="OK!" />
  </p>
</form>
</div>
</fieldset>

Abaixo o meu código alterado:

<?php
$page="Alterar senha";
include("includes\header.php");
	
?>
<title><?php echo $page;?></title>
<?php
	if (isset($_POST['senha_atual']) && isset($_POST['confirma']))
	{
		//se o usuário acabou de tentar efetuar login
		$pass = sha1($_POST['senha_atual']);
		
		$query = "SELECT * FROM usuarios "
				."WHERE email = '{$_SESSION["email"]}'"
				." AND senha='$pass'";
				
		 $result = mysql_query($query) or die (mysql_error());
		 if (mysql_num_rows($result)>0)
			{
				if ($_POST['confirma']==$_POST['confirma2'])
				{
				$alt_senha=mysql_query ("update usuarios set senha='".sha1($_POST["confirma"])."' where email='{$_SESSION["email"]}'");
				}
				else
				{
				echo "<script> alert('Confimação de Senha não Confere. Tente outra vez!');</script>";
				}
			}else{
			echo "<script> alert('Senha atual incorreta!');</script>";
			}	
	}
	if ($alt_senha)
	{
		echo "<script> alert('Senha Alterada com Sucesso!'); location.href='./';</script>";
	}
	
	
	// o usuário não tentou efetuar o login ainda ou saiu
		
	// fornece um formulário para efetuar o login	
?>

<fieldset>
<legend>Alterar Senha</legend>
<div align="left">
<form id="form1" name="form1" method="post" action="">
  <label></label>
  <label>Senha Atual:
  <input name="senha_atual" type="password" id="senha_atual" />
  </label>
  <label>Nova Senha:
  <input name="confirma" type="password" id="confirma" />
  </label>
  <label>Confirme Nova Senha:
  <input name="confirma2" type="password" id="confirma2" />
  </label>
  <br><p>
    <input type="submit" name="Submit" value="OK!"/>
  </p>
</form>
</div>
</fieldset>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente este aqui.

<?php
$page="Alterar senha";
include("includes\header.php");
	
?>
<title><?php echo $page;?></title>
<?php
	if (isset($_POST['senha_atual']) && isset($_POST['confirma']))
	{
		//se o usuário acabou de tentar efetuar login
		$pass = sha1($_POST['senha_atual']);
		$semail = $_SESSION["email"];
		$query = "SELECT * FROM usuarios WHERE email = '$semail' AND senha='$pass'";
				
		 $result = mysql_query($query) or die (mysql_error());
		 if (mysql_num_rows($result)>0)
			{
				if ($_POST['confirma']==$_POST['confirma2'])
				{
				$semail = $_SESSION["email"];
				$alt_senha=mysql_query ("update usuarios set senha='".sha1($_POST["confirma"])."' where email='$semail'");
				}
				else
				{
				echo "<script> alert('Confimação de Senha não Confere. Tente outra vez!');</script>";
				}
			}else{
			echo "<script> alert('Senha atual incorreta!');</script>";
			}	
	}
	if ($alt_senha)
	{
		echo "<script> alert('Senha Alterada com Sucesso!'); location.href='./';</script>";
	}
	
	
	// o usuário não tentou efetuar o login ainda ou saiu
		
	// fornece um formulário para efetuar o login	
?>

<fieldset>
<legend>Alterar Senha</legend>
<div align="left">
<form id="form1" name="form1" method="post" action="">
  <label></label>
  <label>Senha Atual:
  <input name="senha_atual" type="password" id="senha_atual" />
  </label>
  <label>Nova Senha:
  <input name="confirma" type="password" id="confirma" />
  </label>
  <label>Confirme Nova Senha:
  <input name="confirma2" type="password" id="confirma2" />
  </label>
  <br><p>
    <input type="submit" name="Submit" value="OK!"/>
  </p>
</form>
</div>
</fieldset>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já havia tentado isso e tbm não funciona. E além disse, com o session_star dá outro erro porque no meu código coloquei o include (header.php) que já é responsável por iniciar/pegar os dados da sessão

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, no BD as senhas ficam armazenadas criptografadas em sh1. O sistema tem um formulario de cadastro em q o usuario preenche,poe a senha e depois do cadastro aprovado ele consegue fazer login numa boa.So a alteracao de senha que não funciona.

Hoje testei um outro código que achei na internet e consegui fazer com q a senha fosse alterada,mas dai ao tentar fazer login nao se consegue(nem com a nova,nem com a senha antiga).

Quero continuar trabalhando nesse codigo q postei porque o outro tem varios erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão é que sua query não ta encontrando nada de acordo com os parametros informados.

 

$query = "SELECT * FROM usuarios "
                ."WHERE email = '{$_SESSION["email"]}'"
                ." AND senha='$pass'";
               

Tira essa session de dentro da query e trata ela fora numa variável.. pode ser esse o erro :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

então da imprime essas variaveis email e senha antes da query e confere com o que ta salvo no teu banco :D

 

O que percebe-se é que ele não ta retornando pq não ta achando nada pelos parametros que vc ta informando.

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.