Ir para conteúdo

POWERED BY:

Arquivado

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

Cyberoma

[Resolvido] Erro na pagina alterar senha

Recommended Posts

Galera fiz um codigo pra um usuario logado poder alterar sua senha.

--- Ele altera perfeitamente, porem apos alterar ele mostra a msg "Senha alterada com sucesso" e depois "Senha inválida" e desloga.

Como posso corrigir isso?

 

Logar.php

<?

$login = $_POST['login'];

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

 

include "config.php";

 

$sql = mysql_query("SELECT * FROM usuarios WHERE login = '$login'");

$cont = mysql_num_rows($sql);

while($linha = mysql_fetch_array($sql)){

$senha_db = $linha['senha'];

$nivel = $linha['nivel'];

$solicitante = $linha['nome'];

$local = $linha['local'];

$ramal = $linha['ramal'];

}

 

if($cont == 0){

 

echo "<script>

alert(\"Login inválido\");

window.location.href=(\"login.php\");

 

</script>";

 

}else if($senha_db != $senha){

echo "<script>

alert(\"Senha inválida\");

window.location.href=(\"login.php\");

 

</script>";

 

}else{

 

session_start();

$_SESSION['login_usuario'] = $login;

$_SESSION['senha_usuario'] = $senha;

$_SESSION['nome_usuario'] = $solicitante;

$_SESSION['local_usuario'] = $local;

$_SESSION['ramal_usuario'] = $ramal;

 

if($nivel == '1'){

header('Location:atendente_adm.php');

 

}else if($nivel == '2'){

header('Location:solicitacoes.php');

}else{

header('Location:atendente.php');

}

}

 

mysql_close($connect);

 

?>

 

e a função alterar senha

<?

include "verifica.php";

 

include "config.php";

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

$id = $_GET['id'];

 

if($_GET['funcao'] == "editar"){

 

$sql = mysql_query("UPDATE usuarios SET senha='$senha' WHERE id='$id'");

 

echo "<script>

alert(\"Senha alterada com sucesso\");

window.location.href=(\"alterar_senha.php\");

 

</script>";

 

}

 

?>

 

verifica.php >>> verifica se o usuario ta logado

<?

session_start();

 

include "config.php";

 

if(isset($_SESSION["login_usuario"]) AND isset($_SESSION['senha_usuario'])){

 

$login_usuario = $_SESSION["login_usuario"];

$senha_usuario = $_SESSION["senha_usuario"];

 

$sql = mysql_query("SELECT * FROM usuarios WHERE login = '$login_usuario'");

$cont = mysql_num_rows($sql);

while($linha = mysql_fetch_array($sql)){

$senha_db = $linha['senha'];

}

 

if($cont == 0){

 

unset($_SESSION["login_usuario"]);

unset($_SESSION["senha_usuario"]);

 

echo "<script>

alert(\"Login inválido\");

window.location.href=(\"login.php\");

 

</script>";

 

}

 

if($senha_db != $senha_usuario){//confere senha

 

unset($_SESSION["login_usuario"]);

unset($_SESSION["senha_usuario"]);

 

echo "<script>

alert(\"Senha inválida\");

window.location.href=(\"login.php\");

 

</script>";

 

}

 

}else{

 

echo "<script>

alert(\"Login e senha inválida\");

window.location.href=(\"login.php\");

 

</script>";

 

}

 

?>

 

 

 

Lembrando, a senha é alterada perfeitamente..

 

Só quero corrigir o erro que descrevi acima..

 

Desde já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

postei ali, porem mesmo que eu tire o verifica.php o erro continua

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que o problema esteja na página verifica.php, pois quando o user altera a senha, o script muda no MySQL mas na SESSION continua a senha antiga!

 

Se esse for o problema a solução seria:

1 - Depois de alterar a senha redirecionar para a página de logout para o user logar novamente

ou

2 - Ao alterar a senha no MySQL também alterar na SESSION

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, mas tem como mudar a senha na session tambem? pra não ocorrer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixei minha função alterar assim:

 

<?

include "config.php";

 

session_start();

 

$_SESSION['senha_usuario'] = $senha;

 

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

$id = $_GET['id'];

 

if($_GET['funcao'] == "editar"){

 

$sql = mysql_query("UPDATE usuarios SET senha='$senha' WHERE id='$id'");

 

echo "<script>

alert(\"Senha alterada com sucesso\");

window.location.href=(\"alterar_senha.php\");

 

</script>";

 

}

 

?>

 

e o problema continua =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deveras, você está definindo a sessao de senha antes de definila,tenta assim:

 

 


<?php
include "config.php";

session_start();


$senha = md5($_POST['senha']);
$_SESSION['senha_usuario'] = $senha;
$id = $_GET['id'];

if($_GET['funcao'] == "editar"){

$sql = mysql_query("UPDATE usuarios SET senha='$senha' WHERE id='$id'");

echo "<script>
alert(\"Senha alterada com sucesso\");
window.location.href=(\"alterar_senha.php\");

</script>";

}

?>

 

Outra coisa interessante, é você sempre abrir com <?php, pois isso evita alguns problemas dependendo como o servidor esta configurado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcinou perfeitamete Merlinus muito obrigado pela ajuda.

 

E vlw tambem sobre a dica do <?php

 

Obrigado mesmo.

 

^^

 

[Resolvido]

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera só mais uma coisa, quando altera a senha, ele volta pra tela que eu quero, como o merlinus falou.

porem antes de voltar pra pagina enqunto esta sendo executado o script:

alert(\"Senha alterada com sucesso\");

window.location.href=(\"alterar_senha.php\");

 

Ele mostra uma msg ao fundo:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files (x86)\VertrigoServ\www\SIG2\funcoes_edit_senha.php:2) in C:\Program Files (x86)\VertrigoServ\www\SIG2\funcoes_edit_senha.php on line 5

 

Alterar_senha.php

<?php

 

include "config.php";

session_start();

 

$login_usuario = $_SESSION["login_usuario"];

 

$sql = mysql_query("SELECT id, senha FROM usuarios WHERE login='$login_usuario'");

while($linha = mysql_fetch_array($sql)){

$id = $linha['id'];

$senha_atual = $linha['senha'];

 

}

 

?>

 

funcoes_edit_senha.php

<?php

include "config.php";

 

session_start();

$login_usuario = $_SESSION["login_usuario"];

 

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

$_SESSION['senha_usuario'] = $senha;

 

$id = $_GET['id'];

 

if($_GET['funcao'] == "editar"){

 

$sql = mysql_query("UPDATE usuarios SET senha='$senha' WHERE id='$id'");

 

 

 

}

 

?>

 

o erro é sobre session_start, mas ja tentei e nao consegui resolvir

 

Já conseguir resolver, pode fechar o topico..

 

obrigado

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.