Jump to content
Sarinha

Alterar senha de um login em php

Recommended Posts

Sarinha

Ola, Bom dia

Eu tou a criar um site, onde o utilizador pode fazer o seu login, apartir do login e da senha.

O que eu quero é que quando o utilizador entra e vai a sua conta, para alterar a senha, ele coloca as senhas e altera, mas o problema está que eu já fiz um código, mas ele faz tudo direitinho, mas não actualiza na base de dados, porque até mostra as caixas de mesnagem.

Eu queria que ele atualiza-se mas não tou conseguinte, será que me podem ajudar o código que tenho, é o uqe está a baixo:

Na base de dadoos:

Tabela utilizadores - id_utilizador, login, passe

connect.php

<?php
   //conectar a base de dados
   mysql_connect("localhost", "root", "");
   mysql_select_db("coleccao");
  ?>

altera.php //o php que altera a senha

<?php
   include("connect.php");

   $login = $_SESSION["login"];

   $senha = $_POST['senha_atual'];
   $senha_nova = $_POST['senha_nova'];
   $confirme_senha = $_POST['confirme_senha'];

   $sql=mysql_query("select passe from utilizadores where login='$login' ");
   $row= mysql_fetch_array($sql);
   $senha_banco = $row['passe'];  

   if(($senha_nova=="") && ($confirme_senha=="") && ($senha_banco==""))
   {
	   echo"<script>alert('Os campos das senhas não podem ser Nulos!');
			   window.location='index.php?ver=alterar_senha.php';
			   </script>";
	   return false;
   }
	  else
	   {			
		   if(($senha != $senha_banco) && ($senha_nova != $confirme_senha))
		  {
			   echo"<script>alert('Senhas Digitadas não conhecidem!');
				  window.location='index.php?ver=alterar_senha.php';
				  </script>";
		  }
		  else
		  {
			  if($result=mysql_query("update utilizadores set passe='$confirme_senha' where login='$login'"))
	   		{	
					echo"<script>alert('Senha Alterada com Sucesso!');
					   window.location='index.php?ver=conta.php';
					  </script>";
			   }
		   }  
	   }		
  ?>

alterar_senha.php //é o formulario do alterar senha
 <html>
<head>
	<title></title>
	<meta name="generator" content="Bluefish 2.2.0" >
	<meta name="author" content="Sara" >
	<meta name="date" content="2013-06-13T10:30:27+0000" >
	<meta name="copyright" content="">
	<meta name="keywords" content="">
	<meta name="description" content="">
	<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8">
	<meta http-equiv="content-style-type" content="text/css">
	<meta http-equiv="expires" content="0">
</head>
<body>
	<h3>Alteração da Senha</h3>
	<form action="index.php?ver=altera.php" method="post" enctype="multipart/form-data">
		<input type="hidden" name="ver" />
		<p>Passe Antiga:<input type="password" name="senha_atual" onfocus="this.value=''" />
		<p>Passe Nova:<input type="password" name="senha_nova" onfocus="this.value=''" />
		<p>Confirmação da Passe Nova:<input type="password" name="confirme_senha" onfocus="this.value=''" />
		<p><input type="submit" name="alterar_bt" value="Alterar"/>

	</form>
</body>
 </html>

Se me podessem ajudar agradecia pois tenho algumas dificuldades no php, ainda tou a estudar melhor o php, por isso as duvidas.

Se precisarem de algo para me ajudarem digam.

E desde de já Obrigada.

Edited by scorch
Adicionado Geshi. ;)

Share this post


Link to post
Share on other sites
Devexz

1º mete isso entre as tags code.

2º Na altura do update já fizeste echo das váriavesi $confirme_senha e $login para ver se estão definidas?


Contador de calorias: caloriaspordia.com

Share this post


Link to post
Share on other sites
pikax

Usa antes as funcoes mysqli*.

Verifica primeiro se existe no array:

//$senha = $_POST['senha_atual'];
$senha = isset($_POST['senha_atual'])?$_POST['senha_atual']:"";

usa prepared statements


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
Sarinha

Vou ter que substituir isso? Mas já substitui mas mesmo assim continua igual, o que ele não faz é actualização na base de dados. eu antes tinha uma coisa mal, mas ja alterei que foi tirar i if que esta na query de update, mas mesmo assim continua igual.

Share this post


Link to post
Share on other sites
pikax
//$sql=mysql_query("select passe from utilizadores where login='$login' ");
$sql=mysql_query("select 1 from utilizadores where login='$login' AND passe =  '$senha' ");
if(mysql_num_rows($sql)<=0)
{
 //errado!!! nao ta' bem a pass actual!
 return false;
}
//etc...

Edited by pikax

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
Sarinha

Ele se eu colocar isso e se colocar a passe diz sempre isso, em qualquer passe, mesmo até a que está guardada.

Share this post


Link to post
Share on other sites
pikax

podes por um print da tabela utilizadores do phpmyadmin?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
pikax

gravas as passwords em plain-text ou fazes um hash da password?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
pikax

qual e' o codigo que tens agr?

Como e' que podes afirmar que esta' a dar errado?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
Sarinha

O codigo que eu tenho é este:

<?php
include("connect.php");

$login = $_SESSION["login"];// aqui eu estou tentando pegar a variavel de sessão do usuario

$senha = $_POST['senha_atual'];
$senha_nova = $_POST['senha_nova'];
$confirme_senha = $_POST['confirme_senha'];

//$sql=mysql_query("select passe from utilizadores where login='$login' ");
$sql=mysql_query("select 1 from utilizadores where login='$login' AND passe = '$senha' "); //experiencia
if(mysql_num_rows($sql)<=0)
{
echo "errado!!! nao ta' bem a pass actual!";
return false;
}

$row= mysql_fetch_array($sql);
$senha_banco = $row['passe']; //buscando pela senha que ja esta salva para poder comparar com a que ele vai digitar

if(($senha_nova=="") && ($confirme_senha=="") && ($senha_banco==""))
{
echo"<script>alert('Os campos das senhas não podem ser Nulos!');
window.location='index.php?ver=alterar_senha.php';
</script>";
return false;
}
elseif(($senha != $senha_banco) && ($senha_nova != $confirme_senha))
{ 
//if(($senha != $senha_banco) && ($senha_nova != $confirme_senha))//verificando se as senhas conhecidem, e compara com a senha ja existente
//{
echo"<script>alert('Senhas Digitadas não conhecidem!');
window.location='index.php?ver=alterar_senha.php';
</script>";
//}
}
else
{
$result=mysql_query("update utilizadores set passe='$confirme_senha' where login='$login'"); //verifica se é verdadeiro o resultado da query, e retorna mensagem 
echo"<script>alert('Senha Alterada com Sucesso!');
window.location='index.php?ver=conta.php';
</script>";
} 
?>

Edited by brunoais
tags code + geshi

Share this post


Link to post
Share on other sites
pikax

<?php
   include("connect.php");

   $login = $_SESSION["login"];// aqui eu estou tentando pegar a variavel de sessão do usuario


   if(!isset($_POST['senha_nova']) || !$_POST['senha_atual'] || !$_POST['confirme_senha'])
   {
    die("ERROR os dados do form estao mal!!");
   }


   $senha = isset($_POST['senha_atual'])?$_POST['senha_atual']:"";
   $senha_nova = isset($_POST['senha_nova']?$_POST['senha_nova']:"";
   $confirme_senha = isset($_POST['confirme_senha']?$_POST['confirme_senha']:"";

   if($senha!=$confirme_senha)
   {
    die("ERROR senhas nao sao iguais!!!");
   }

   //$sql=mysql_query("select passe from utilizadores where login='$login' ");
   $sql=mysql_query("select 1 from utilizadores where login='$login' AND passe = '$senha' "); //experiencia
   if(mysql_num_rows($sql)<=0)
   {
	  die("errado!!! pass ou user esta' mal!!!");
	  return false;
   }

   $result=mysql_query("update utilizadores set passe='$senha_nova' where login='$login'"); //verifica se é verdadeiro o resultado da query, e retorna mensagem    
   echo"<script>alert('Senha Alterada com Sucesso!');
	    window.location='index.php?ver=conta.php';
	    </script>";

?>

ve se funciona


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
Sarinha

Não da me este erro :

Parse error: syntax error, unexpected '?', expecting ',' or ')' in C:\wamp\www\novo\altera.php on line 14

Que é aqui:

 $senha_nova = isset($_POST['senha_nova']?$_POST['senha_nova']:"";

Edited by brunoais
tags code + geshi

Share this post


Link to post
Share on other sites
pikax

Não da me este erro :

Parse error: syntax error, unexpected '?', expecting ',' or ')' in C:\wamp\www\novo\altera.php on line 14

$senha = isset($_POST['senha_atual'])?$_POST['senha_atual']:"";
$senha_nova = isset($_POST['senha_nova'])?$_POST['senha_nova']:"";
$confirme_senha = isset($_POST['confirme_senha'])?$_POST['confirme_senha']:"";

tinha-me esquecido de fechar a funcao...

Que é aqui:

$senha_nova = isset($_POST['senha_nova']?$_POST['senha_nova']:"";

chama-se operador ternario, e' basicamente:

$senha; //declarar a variavel
if(isset($_POST['senha_nova']))
 $senha = $_POST['senha_nova'];
else
 $senha "";


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
pikax
<?php
   include("connect.php");

   $login = $_SESSION["login"];// aqui eu estou tentando pegar a variavel de sessão do usuario


   if(!isset($_POST['senha_nova']) || !$_POST['senha_atual'] || !$_POST['confirme_senha'])
   {
           die("ERROR os dados do form estao mal!!");
   }


   $senha = isset($_POST['senha_atual'])?$_POST['senha_atual']:"";
   $senha_nova = isset($_POST['senha_nova'])?$_POST['senha_nova']:"";
   $confirme_senha = isset($_POST['confirme_senha'])?$_POST['confirme_senha']:"";

   if($senha!=$confirme_senha)
   {
           die("ERROR senhas nao sao iguais!!!");
   }

   //$sql=mysql_query("select passe from utilizadores where login='$login' ");
   $sql=mysql_query("select 1 from utilizadores where login='$login' AND passe = '$senha' "); //experiencia
   if(mysql_num_rows($sql)<=0)
   {
                 die("errado!!! pass ou user esta' mal!!!");
                 return false;
   }

   $result=mysql_query("update utilizadores set passe='$senha_nova' where login='$login'"); //verifica se é verdadeiro o resultado da query, e retorna mensagem    
   echo"<script>alert('Senha Alterada com Sucesso!');
                   window.location='index.php?ver=conta.php';
                   </script>";

?>


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
Sarinha

Eu troquei o $senha para $senha_nova, senão ia dizer sempre ERROR senhas nao sao iguais!!! e agora diz errado!!! pass ou user esta' mal!!!

Share this post


Link to post
Share on other sites
pikax

epa desculpa podes apagar o if a comparar as senhas:

<?php
   include("connect.php");

   $login = $_SESSION["login"];// aqui eu estou tentando pegar a variavel de sessão do usuario


   if(!isset($_POST['senha_nova']) || !$_POST['senha_atual'] || !$_POST['confirme_senha'])
   {
           die("ERROR os dados do form estao mal!!");
   }


   $senha = isset($_POST['senha_atual'])?$_POST['senha_atual']:"";
   $senha_nova = isset($_POST['senha_nova'])?$_POST['senha_nova']:"";
   $confirme_senha = isset($_POST['confirme_senha'])?$_POST['confirme_senha']:"";

   if($senha_nova!=$confirme_senha)
   {
           die("ERROR senhas nao sao iguais!!!");
   }

   //$sql=mysql_query("select passe from utilizadores where login='$login' ");
   $sql=mysql_query("select 1 from utilizadores where login='$login' AND passe = '$senha' "); //experiencia
   if(mysql_num_rows($sql)<=0)
   {
                 die("errado!!! pass ou user esta' mal!!!");
                 return false;
   }

   $result=mysql_query("update utilizadores set passe='$senha_nova' where login='$login'"); //verifica se é verdadeiro o resultado da query, e retorna mensagem    
   echo"<script>alert('Senha Alterada com Sucesso!');
                  window.location='index.php?ver=conta.php';
                  </script>";

?>


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.