Whiksw 1 Denunciar post Postado Março 28, 2014 Olá, sou meio novo aqui no fórum mais td bem.. Eu estou criando um fórum. E tenho um script que quando o termina precisa voltar a página inícial mais não volta. aqui: <?php $troca_senha = $_GET['troca_senha']; if($troca_senha == '1') { echo " <form name='form' method='post' action='?trocando_senha=1'>"; echo "<div class=\"mute\" id='mute'><div style='margin-left:15px; margin-top:50px;'>Você está mudando a senha..<br><input type='password' class='texttopic' name='senha'>"; echo "<input type='submit' class='form' style='color:#EAEAEA' value='Enviar'><a class='form' href='index.php'><font color=#EAEAEA>Fechar</font></a></div></div>"; } $trocando_senha = $_GET['trocando_senha']; if($trocando_senha == '1') { $senha = MD5($_POST['senha']); $r = mysql_query("UPDATE `usuarios` SET senha = '$senha' WHERE login = '$login_cookie' "); header("Location: index.php"); } ?> Esse script é para trocar senha, e está funcionando normalmente, mas o header não funciona. No meu antigo fórum que eu estava fazendo, o header pegava em qualquer lugar, ai eu deletei esse fórum que estava no 000Webhost e fiz um novo fórum no host hostiger. Ai está tendo esse problema de header em todo meu fórum novo. Por que o header pegava em qualquer lugar no meu outro fórum e nesse novo não? E tem como botar o header para funcionar? Compartilhar este post Link para o post Compartilhar em outros sites
Jonaslhp 39 Denunciar post Postado Março 28, 2014 Habilite os erros do PHP e poste aqui as mensagens de erro...: error_reporting(1); ini_set('display_errors', 1); Compartilhar este post Link para o post Compartilhar em outros sites
Whiksw 1 Denunciar post Postado Março 28, 2014 Habilite os erros do PHP e poste aqui as mensagens de erro...: error_reporting(1); ini_set('display_errors', 1); Não entendi.. Compartilhar este post Link para o post Compartilhar em outros sites
Jonaslhp 39 Denunciar post Postado Março 28, 2014 Coloque este código logo no início do seu script, nas primeiras linhas: error_reporting(1); ini_set('display_errors', 1); Isso vai habilitar as mensagens de erro do PHP, e quando você rodar o script novamente, vai receber estas mensagens que indicarão o que acontece de errado. Quando tiver as mensagens, poste-as aqui. Compartilhar este post Link para o post Compartilhar em outros sites
Whiksw 1 Denunciar post Postado Março 28, 2014 Coloque este código logo no início do seu script, nas primeiras linhas: error_reporting(1); ini_set('display_errors', 1); Isso vai habilitar as mensagens de erro do PHP, e quando você rodar o script novamente, vai receber estas mensagens que indicarão o que acontece de errado. Quando tiver as mensagens, poste-as aqui. Bota isso? <?php error_reporting(1); ini_set('display_errors', 1); ?> Mas eu nem consigo editar o tópico(não vejo o botão..) Compartilhar este post Link para o post Compartilhar em outros sites
Back-on 14 Denunciar post Postado Março 29, 2014 Verifique no seu editor se você está salvando como UTF8 SEM BOM. Por incrível que pareça, isso faz a diferença. Compartilhar este post Link para o post Compartilhar em outros sites
Kyosuke 0 Denunciar post Postado Março 29, 2014 Tipo, em página que só tem código php, você não deve por o ?> no fim do arquivo, porque se tiver algum espaço depois dessa tag dá problema nos headers, apaga ele daí e vê se resolve. Compartilhar este post Link para o post Compartilhar em outros sites
Whiksw 1 Denunciar post Postado Março 29, 2014 Tipo, em página que só tem código php, você não deve por o ?> no fim do arquivo, porque se tiver algum espaço depois dessa tag dá problema nos headers, apaga ele daí e vê se resolve. Mas se eu tirar o tag do fim do php vai ficar o código todo exposto e não vai funcionar o código.. Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Março 29, 2014 <?php if(isset($_GET['troca_senha']) AND $_GET['troca_senha'] == 1){ ?> <form name='form' method='post' action=''> <div class="mute" id='mute'> <div style='margin-left:15px; margin-top:50px;'>Você está mudando a senha..<br /> <input type='password' class='texttopic' name='senha'> <input type='submit' class='form' name="trocando_senha" style='color:#EAEAEA' value='Enviar'> <a class='form' href='index.php'><font color="#EAEAEA">Fechar</font></a> </div> </div> <?php if(isset($_POST['trocando_senha']) && $_POST['trocando_senha'] == "Enviar"): $novasenha = md5($_POST['senha']); $r = mysql_query("UPDATE `usuarios` SET senha = '$senha' WHERE login = '$login_cookie' ") or die ("Erro ao executar o UPDATE da nova senha."); if($r): header('Location: index.php'); else: echo 'Erro ao entar atualizar sua senha, entre em contato com o desenvolvedor.'; endif; endif; }else{ echo 'Erro, não foi passado parametros para a execução.'; } ?> Tenta esse código. Compartilhar este post Link para o post Compartilhar em outros sites
Whiksw 1 Denunciar post Postado Março 29, 2014 <?php if(isset($_GET['troca_senha']) AND $_GET['troca_senha'] == 1){ ?> <form name='form' method='post' action=''> <div class="mute" id='mute'> <div style='margin-left:15px; margin-top:50px;'>Você está mudando a senha..<br /> <input type='password' class='texttopic' name='senha'> <input type='submit' class='form' name="trocando_senha" style='color:#EAEAEA' value='Enviar'> <a class='form' href='index.php'><font color="#EAEAEA">Fechar</font></a> </div> </div> <?php if(isset($_POST['trocando_senha']) && $_POST['trocando_senha'] == "Enviar"): $novasenha = md5($_POST['senha']); $r = mysql_query("UPDATE `usuarios` SET senha = '$senha' WHERE login = '$login_cookie' ") or die ("Erro ao executar o UPDATE da nova senha."); if($r): header('Location: index.php'); else: echo 'Erro ao entar atualizar sua senha, entre em contato com o desenvolvedor.'; endif; endif; }else{ echo 'Erro, não foi passado parametros para a execução.'; } ?> Tenta esse código. Também não pegou :/ O código que eu coloquei no início pega normal, o único problema é que o header não está funcionando, é como se o header não tivesse ali naquele código pra redirecionar pra index. Compartilhar este post Link para o post Compartilhar em outros sites
Kyosuke 0 Denunciar post Postado Março 29, 2014 Como assim código exposto?? Isso não procede, é até mesmo uma boa prática, isso se tiver só código PHP no arquivo. Mas caso não queira fazer isso, só verifica se tem espaços depois do fim da tag. Dá uma olhada: http://blog.augustopascutti.com/php/2010/12/13/tag-fechamento.html Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Março 29, 2014 <?php $troca_senha = $_GET['troca_senha']; if($troca_senha == '1') { echo " <form name='form' method='post' action='?trocando_senha=1'>"; echo "<div class=\"mute\" id='mute'><div style='margin-left:15px; margin-top:50px;'>Você está mudando a senha..<br><input type='password' class='texttopic' name='senha'>"; echo "<input type='submit' class='form' style='color:#EAEAEA' value='Enviar'><a class='form' href='index.php'><font color=#EAEAEA>Fechar</font></a></div></div>"; } $trocando_senha = $_GET['trocando_senha']; if($trocando_senha == '1') { $senha = MD5($_POST['senha']); $r = mysql_query("UPDATE `usuarios` SET senha = '$senha' WHERE login = '$login_cookie' "); // Verifica se executou com sucesso if($r){ header("Location: index.php"); }else{ echo 'O mysql_query não executou com sucesso, verifique a conexão, entre em contato com o desenvolvedor'; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Kyosuke 0 Denunciar post Postado Março 29, 2014 se o problema for só quanto redirecionamento troca o header por: echo '<meta http-equiv="refresh" content="1; url=index.php">'; Compartilhar este post Link para o post Compartilhar em outros sites
Jonaslhp 39 Denunciar post Postado Março 31, 2014 Não entendi.. Logo após iniciar seu código com <?php, adicione as seguintes linhas: error_reporting(1); ini_set('display_errors', 1); E rode novamente o código para ver os erros retornados...Certeza que vai vir algo do tipo "Headers already sent by...". Olhando teu código é simples de ver, você está imprimindo HTML antes de usar o header. O header deve ser uma das primeiras coisas do teu script, sempre antes de saídas HTML etc. A estrutura deveria ser algo assim: <?php if( isset( $_POST['trocando_senha'] ) && $_POST['trocando_senha'] == "Enviar" ) { $novasenha = md5( $_POST['senha'] ); $r = mysql_query("UPDATE `usuarios` SET senha = '$senha' WHERE login = '$login_cookie' "); if($r): header('Location: atualizou.php'); else: echo 'Erro ao entar atualizar sua senha, entre em contato com o desenvolvedor.'; endif; } if ( isset( $_GET['troca_senha'] ) && $_GET['troca_senha'] == 1 ) : ?> <form name='form' method='post' action=''> <div class="mute" id='mute'> <div style='margin-left:15px; margin-top:50px;'>Você está mudando a senha..<br /> <input type='password' class='texttopic' name='senha'> <input type='submit' class='form' name="trocando_senha" style='color:#EAEAEA' value='Enviar'> <a class='form' href='index.php'><font color="#EAEAEA">Fechar</font></a> </div> </div> <?php endif; ?> Veja que o header vem antes de qualquer saída para o navegador (no caso HTML)... Compartilhar este post Link para o post Compartilhar em outros sites
Will Knippelberg 10 Denunciar post Postado Março 31, 2014 troca o header("Location: index.php"); por: print '<script> window.location("index.php"); </script>'; Compartilhar este post Link para o post Compartilhar em outros sites
Jonaslhp 39 Denunciar post Postado Março 31, 2014 troca o header("Location: index.php"); por: print '<script> window.location("index.php"); </script>'; A gambiarra é uma má prática, incentivar seu uso também. Compartilhar este post Link para o post Compartilhar em outros sites
Will Knippelberg 10 Denunciar post Postado Março 31, 2014 A gambiarra é uma má prática, incentivar seu uso também. Quer dizer que essa não é uma solução? o que isso implicaria na execução do sistema? cai tanto assim o rendimento? Acabaria com o erro dele, e não ia "zuar" o código e é muito usado pra redirecionar pra outra página... Eu propus, quer usar usa, nao quer não usa. Compartilhar este post Link para o post Compartilhar em outros sites
Jonaslhp 39 Denunciar post Postado Março 31, 2014 Claro, você tentou ajudar, é louvável da tua parte. Mas não trate apenas o sintoma, trate a doença. A chance de fazer código spaghetti e repetir o erro em outros pontos do sistema é grande. O header deve ser usado antes de qualquer saída para o navegador, é o modo correto. Temos que pensar assim, ficar tratando somente o sintoma é um mal de toda comunidade PHP por isso que a linguagem acaba sendo marginalizada. Compartilhar este post Link para o post Compartilhar em outros sites
Will Knippelberg 10 Denunciar post Postado Março 31, 2014 Claro, você tentou ajudar, é louvável da tua parte. Mas não trate apenas o sintoma, trate a doença. A chance de fazer código spaghetti e repetir o erro em outros pontos do sistema é grande. O header deve ser usado antes de qualquer saída para o navegador, é o modo correto. Temos que pensar assim, ficar tratando somente o sintoma é um mal de toda comunidade PHP por isso que a linguagem acaba sendo marginalizada. Ok, entendi, desculpe minha ignorância Compartilhar este post Link para o post Compartilhar em outros sites