Cyberoma 5 Denunciar post Postado Agosto 5, 2011 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
Raphael Machado 0 Denunciar post Postado Agosto 5, 2011 Por favor, poste o que tem no arquivo verifica.php Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Agosto 5, 2011 postei ali, porem mesmo que eu tire o verifica.php o erro continua Compartilhar este post Link para o post Compartilhar em outros sites
Raphael Machado 0 Denunciar post Postado Agosto 5, 2011 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
Cyberoma 5 Denunciar post Postado Agosto 5, 2011 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
merlinus 1 Denunciar post Postado Agosto 5, 2011 soh colocar na função de alterar senha $_SESSION['senha_usuario'] = $senha; que ele vai atualizar a nova senha. Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Agosto 5, 2011 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
merlinus 1 Denunciar post Postado Agosto 6, 2011 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
Cyberoma 5 Denunciar post Postado Agosto 7, 2011 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
Cyberoma 5 Denunciar post Postado Agosto 7, 2011 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 <?phpinclude "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