Carlos Rocha Postado Junho 13, 2011 Denunciar Share Postado Junho 13, 2011 pessoal. Bom dia!Gostaria de aposentar o alert javascript.Então, queria saber se existe, em php, alguma função que mostra o echo (ou print) e, dentro de um tempo predefinido na função passe para a proxima linha do codigo que será header location.Existe uma funçao que faça isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 13, 2011 Denunciar Share Postado Junho 13, 2011 Basta isto:header("refresh: 5; pagina.php"); // Vai para a pagina.php depois de 5 segundos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Junho 13, 2011 Autor Denunciar Share Postado Junho 13, 2011 Serra, tentei da forma abaixo mas o script grava no banco normal e depois continua executando a linha do else tambem dando a mensagem de erro na consulta.primeiro da mensage de enviado ok, redireciona, mas, como o redirect é para a mesma pagina, o script lê o else e da a mensagem de erro de gravaçao.<? if ($acao =="envia") { $motivo = $_POST['motivo']; $nome = $_POST['nome']; $email = $_POST['email']; $tel = str_replace( ".", "", $_POST['tel']); $texto = $_POST['texto']; $sql = "INSERT INTO contato(motivo, nome, email, tel, texto) VALUES('$motivo', '$nome', '$email', '$tel', '$texto')"; $consulta = $MySQL->query($sql); if($consulta){ echo " <table align=\"center\" width=\"300\"> <tr bgcolor=\"#6666FF\"> <td align=\"center\" valign=\"middle\" colspan=\"3\"> <font color=\"#FFFFFF\">Enviado OK!</font><br /> </td> </tr> </table> "; header("refresh: 5; cadastros.php"); break; } else { echo " <table align=\"center\" width=\"300\"> <tr bgcolor=\"#6666FF\"> <td align=\"center\" valign=\"middle\" colspan=\"3\"> <font color=\"#FFFFFF\">Erro no envi!</font><br /> </td> </tr> </table> "; header("refresh: 5; cadastros.php"); break; } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 13, 2011 Denunciar Share Postado Junho 13, 2011 Então redirecione com o parâmetro $acao diferente, tipo sucesso:if ($acao =="envia") { $motivo = $_POST['motivo']; $nome = $_POST['nome']; $email = $_POST['email']; $tel = str_replace( ".", "", $_POST['tel']); $texto = $_POST['texto']; $sql = "INSERT INTO contato(motivo, nome, email, tel, texto) VALUES('$motivo', '$nome', '$email', '$tel', '$texto')"; $consulta = $MySQL->query($sql); if($consulta){ echo " <table align=\"center\" width=\"300\"> <tr bgcolor=\"#6666FF\"> <td align=\"center\" valign=\"middle\" colspan=\"3\"> <font color=\"#FFFFFF\">Enviado OK!</font><br /> </td> </tr> </table> "; header("refresh: 5; cadastros.php?acao=sucesso"); break; } else { echo " <table align=\"center\" width=\"300\"> <tr bgcolor=\"#6666FF\"> <td align=\"center\" valign=\"middle\" colspan=\"3\"> <font color=\"#FFFFFF\">Erro no envi!</font><br /> </td> </tr> </table> "; header("refresh: 5; cadastros.php"); break; } }elseif($acao == 'sucesso'){ echo 'ok!!'; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Junho 13, 2011 Autor Denunciar Share Postado Junho 13, 2011 Vou tentar.mas antes, duas perguntas:1) Se o script já rodou o if, porque esta rodando o else mesmo que a condição já foi satisfeita. Obs.: o $acao do action do form é envia e o location do header é só a pagina sem $acao.2) Será que essa forma de redirecionamento é mesmo melhor que usar o alert do javascript? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 13, 2011 Denunciar Share Postado Junho 13, 2011 1 - O if foi satisfeito na ação anterior, quando você redireciona o PHP não tem como saber o que já foi feito ou não, processa a página novamente e como o IF não é mais verdadeiro vai para o else.2 - Não tem nada de errado em fazer isto... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Junho 13, 2011 Autor Denunciar Share Postado Junho 13, 2011 Entendi, só que, quando eu redireciono, eu redireciona para cadastros.php e não para cadastros.php?acao=envia.Porque está esta executando o script de novo?A pergunta é porque com o redirect do javascript, isso não ocorre. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 13, 2011 Denunciar Share Postado Junho 13, 2011 Eu uso isto e não tenho problema, se está ocorrendo isto dê um echo em $acao, deve ter o valor envia... você está pegando o $acao com o GET? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Junho 13, 2011 Autor Denunciar Share Postado Junho 13, 2011 (editado) É.Acho que estou fazendo errado então.Estou fazendo só assim:<? if ($acao =="envia") { ....... } ?> Editado Junho 13, 2011 por Carlos Rocha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 13, 2011 Denunciar Share Postado Junho 13, 2011 Antes então:$acao = $_GET['acao']; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Junho 13, 2011 Autor Denunciar Share Postado Junho 13, 2011 (editado) Rapaz, fiz do jeito abaixo e ainda continuou dando refresh. direto.<? if ($_GET['acao'] =="ok") { echo " <table align=\"center\"> <tr bgcolor=\"#6666FF\"> <td align=\"center\" valign=\"middle\"> <font color=\"#FFFFFF\">Enviado OK!</font><br /> </td> </tr> </table> "; header("refresh: 5; cadastros.php"); break; } ?> <? if ($_GET['acao'] =="erro") { echo " <table align=\"center\"> <tr bgcolor=\"#6666FF\"> <td align=\"center\" valign=\"middle\"> <font color=\"#FFFFFF\">Erro no envio<br>Por favor, tente novamente!</font><br /> </td> </tr> </table> "; header("refresh: 5; cadastros.php"); break; } ?> <? if ($_GET['acao'] =="envia") { $motivo = $_POST['motivo']; $nome = $_POST['nome']; $email = $_POST['email']; $tel = str_replace( ".", "", $_POST['tel']); $texto = $_POST['texto']; $sql = "INSERT INTO contato(motivo, nome, email, tel, texto) VALUES('$motivo', '$nome', '$email', '$tel', '$texto')"; $consulta = $MySQL->query($sql); if($consulta){ header("location:?acao=ok"); } else { header("location:?acao=erro"); } } ?> <table align="center" width="95%"> <tr bgcolor="#6666FF"> <td align="center" valign="middle" colspan="3"> <font color="#FFFFFF">Cadastros:::::: <?=$titulo_site;?> ::::::</font><br /> </td> </tr> <tr> <td align="left" colspan="2"> Para acessar a nossa área de cadastros, é necessário que você também esteja cadastrado no nosso site. <br /> Então, pedimos que você escolha abaixo a área que representa você e nos passe seus dados de contato que rapidamente, entraremos em contato para coletarmos junto a você, os outros dados necessários ao cadastro.<br /> Feito isso, nós estaremos te encaminhando, através dos meios de contato informados por você abaixo, a senha de acesso, que podera ser alterada posteriormente.<br /> Caso o assunto não seja nenhum dos relacionados abaixo, clique <a href="contato.php?acao=deficiente">AQUI</a> e nos envie um email com outro assunto. </td> </tr> <tr> <td align=center> <table align="center"> <tr><td align="center" colspan="2">dEficiente interessado em obter o cadastro:</td></tr> <form action="?acao=envia" method="post" name="contatodeficiente"> <tr> <td>Nome:</td> <td><input type="text" name="nome" value="" / size="31"></td> </tr> <tr> <td>Email:</td> <td><input type="text" name="email" value="" / size="31"></td> </tr> <tr> <td>Telefone:</td> <td><input type="text" name="tel" onkeypress="return mascara(event,this,'##.####.####');" value="" size="31" maxlength="12"> </td> </tr> <tr> <td>Texto:</td> <td><textarea name="texto" id="texto" style="width:220; height:200"></textarea></td> </tr> <tr> <td align="center" colspan="2"><input type="button" value="Enviar" onclick="validacontatodeficiente();"></td> </tr> <input type="hidden" name="motivo" value="1" /> </form> </table> </td> <td align=center> <table align="center"> <tr><td align="center" colspan="2">Empresários com Interesse em mão de obra dEficiente::</td></tr> <form action="?acao=envia" method="post" name="contatoempresa"> <tr> <td>Nome:</td> <td><input type="text" name="nome" value="" / size="31"></td> </tr> <tr> <td>Email:</td> <td><input type="text" name="email" value="" / size="31"></td> </tr> <tr> <td>Telefone:</td> <td><input type="text" name="tel" onkeypress="return mascara(event,this,'##.####.####');" value="" size="31" maxlength="12"> </td> </tr> <tr> <td>Texto:</td> <td><textarea name="texto" id="texto" style="width:220; height:200"></textarea></td> </tr> <tr> <td align="center" colspan="2"><input type="button" value="Enviar" onclick="validacontatoempresa();"></td> </tr> <input type="hidden" name="motivo" value="2" /> </form> </table> </td> </tr> </table>Tenta ae:http://www.carcleo.com/gapde/cadastros.phpVai na form da esquerda. Deficientes e v~e o que esta acontecendo. Editado Junho 13, 2011 por Carlos Rocha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Junho 13, 2011 Autor Denunciar Share Postado Junho 13, 2011 Sabe o que estou observando.header("refresh: 3; ?acao=contato"); break; Aqui está dando refresh na pagina, e eu precisava era que redirecionasse. Dai tentei assim: sleep(5); header("location:?acao=contato"); break;Desta forma redireciona correto mas antes dos 5 segundos, só mostra o fundo azul da pagina sem nada nela. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Junho 13, 2011 Autor Denunciar Share Postado Junho 13, 2011 (editado) Descobri.O problema era na chamada da funçaoEstava fazendo assim:header("refresh: 3; acao=contato"); quando o certo é assim: header("refresh: 3; url='?acao=contato'"); Mas agora esta dando o bendido do erro de header: Warning: Cannot modify header information - headers already sent by (output started at /home/c27202/public_html/gapde/global/config/conexao.php:1) in /home/c27202/public_html/gapde/cadastros_conteudo.php on line 21tem como resolver isso tambem? Editado Junho 13, 2011 por Carlos Rocha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 13, 2011 Denunciar Share Postado Junho 13, 2011 <?phpob_start();RESTO DO SCRIPT DAQUI PRA BAIXO... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Junho 13, 2011 Autor Denunciar Share Postado Junho 13, 2011 (editado) inclusive o session_start(); abaixo do ob_start();?Ou no caso do ob_start(); não é necessário usar o session_start();?Se não, quem vem primeiro. O session ou o ob_start? Editado Junho 13, 2011 por Carlos Rocha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 13, 2011 Denunciar Share Postado Junho 13, 2011 <?phpob_start();session_start();TODO O RESTO DO CÓDIGO Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Junho 13, 2011 Autor Denunciar Share Postado Junho 13, 2011 Ok.Entendi. Fiz e deu certo grato.Mas, só uma dúvida.É segura fazer o redirect desse jeito. Voce faria assim? Minha intensão é aposentar scripts no cliente (browser).Essa ideia, é boa? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 13, 2011 Denunciar Share Postado Junho 13, 2011 Seguro é, se deve ser usado ou não, ai depende do seu público alvo, eu prefiro utilizar javascript, além de disponibilizar um link para o usuário do tipo "se não quer esperar, clique aqui", mas ai varia do gosto de cada um. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Junho 13, 2011 Autor Denunciar Share Postado Junho 13, 2011 Bom.Agora entendi. Muito Obrigado.Por min, pode fechar o tópico. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Carlos Rocha
pessoal. Bom dia!
Gostaria de aposentar o alert javascript.
Então, queria saber se existe, em php, alguma função que mostra o echo (ou print) e, dentro de um tempo predefinido na função passe para a proxima linha do codigo que será header location.
Existe uma funçao que faça isso?
Link para o comentário
Compartilhar em outros sites
18 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.