Ir para conteúdo

POWERED BY:

Arquivado

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

Jairo Bankhardt

Reenvio de informação

Recommended Posts

Fiz um formulário simples de Livro de Visitas. Em uma página as pessoas digitam nome e mensagem, clicam no botão [enviar], as mensagens aparecem em outra página. Neste ponto se clicar no botão atualizar do browser aparece uma mensagem assim: A página não pode ser enviada sem o reenvio da informação. Clique em 'Repetir para enviar a informação novamente ou clique em 'Cancelar' para retornar à página que estava tentando exibir.Alguém pode dar um help para que não reenvie a informação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não michel.. o script não tem nenhuma sessão... Como fazer para "fechar" o banco de dados (ou o script) para que a mensagem postada no livro de visitas não seja duplicada (triplicada, etc...etc...) se o internauta dar um refresh no browser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é simples antes de voçe inserir a mensagem verifica se a mensagem ja existe:

 

PHP [/tr][tr]

$mensagem = $_POST["mensagem"];

$nome = $_POST["nome"];

$query = mysql_query("SELECT * FROM mensagens WHERE mensagem='$mensagem' AND nome='$nome'");

$total = mysql_num_rows($query);

if($total != 0)

{

aki voçe diz k a mensagem nao pode ser em duplicado lol

} else {

aki voçe insere as mensagens

}

[/tr]

 

axo k isso resolve

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas o problema não é duplicação de dados, acontece que assim que se clica no botão atualizar, aparece uma janelinha com a mensagem:A página não pode ser enviada sem o reenvio da informação. Clique em 'Repetir para enviar a informação novamente ou clique em 'Cancelar' para retornar à página que estava tentando exibir.sei lá. parece que as informações ficam no cache e retornam, sei lá!!! não consigo resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é oq eu disse, tem session, cookie, ou algo do tipo, pois a pg está sendo montada com infos q são postadas e por haver session, cookie, estas estão expirando, sendo necessário o reenvio (F5)...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou postar o código...

 

Em uma página, digamos postar.php:

<?include "config.php";?><p align="center"><strong><font size="6">Livro de Visitas</font></strong></p><p align="center"> </p><form action="livro.php" method="post">  <table width="70%" border="0" align="center" cellpadding="2" cellspacing="2">    <tr>       <td width="21%"><div align="right">Nome:</div></td>      <td width="79%"><input type="text" name="nome">      </td>    </tr>    <tr>       <td><div align="right">e-mail:</div></td>      <td><input type="text" name="email"></td>    </tr>    <tr>       <td valign="top"><div align="right">Mensagem:</div></td>      <td><textarea name="mensagem" cols="40" rows="7"></textarea></td>    </tr>    <tr>       <td> </td>      <td><input type="submit" name="enviar" value="Enviar Mensagem"></td>    </tr>  </table></form>

Em outra página, digamos livro.php:

<?include "config.php";if ($_POST['enviar']){	if ($_POST['nome'] == "")	{  echo("<script>        alert(\"Você deve preencher o Nome\");        window.location = 'javascript:history.back(-1)';        </script>");	}	elseif ($_POST['mensagem'] == "")	{  echo("<script>        alert(\"Você deve escrever uma Mensagem\");        window.location = 'javascript:history.back(-1)';        </script>");	}	else	{  $data = date("d-m-Y H:i:s");  $nome = $_POST['nome'];  $email = $_POST['email'];  $mensagem = $_POST['mensagem'];  $sql = mysql_query("INSERT INTO visita SET 	 data = '$data', 	 nome = '$nome', 	 email = '$email', 	 mensagem = '$mensagem' 	 ");	}}if (!isset($_POST['pag'])){	$pag = 1;}else{	$pag=$_POST['pag'];}$registros = 5; // Registros por página$ini = ($pag-1) * $registros;$busca = mysql_query("SELECT * FROM visita ORDER BY id DESC LIMIT ".$ini.",".$registros);$total = mysql_query("SELECT * FROM visita");$num_mens = mysql_num_rows($total);echo ("Total de mensagens:".$num_mens."<br><br><br>"); while ($linha = @mysql_fetch_array($busca)) {echo ("Mensagem postada no dia: ".$linha['data']."<br>");echo ("Nome: ".$linha['nome']."<br>");echo ("email: ".$linha['email']."<br>");echo ("Mensagem: ");echo nl2br($linha['mensagem']."<br>");echo ("<br>"."--------------------------------"."<br><br>");}$anterior = $pag-1;$proxima = $pag+1;$pags = ceil($num_mens / $registros);if ($pag > 1) {	echo '<a href="?pag='.$anterior.'"><b>Anterior </b></a>';} if ($pag < $pags) {	echo '<a href="?pag='.$proxima.'"><b> Próxima</b></a>';}echo "<br>";for ($num=1;$num<=$pags;$num++) {	if ($pag==$num) 	{  echo ' <b>['.$num.']</b> ';	} 	else 	{  echo '<a href="?pag='.$num.'"> '.$num.'</a>';	}}?>

... sistema simples de Livro de Visitas com paginação. A única coisa um pouquinho diferente é que você preenche os campos em uma página e visualiza na outra!!!

Só que quando se está em livro.php e clica-se no atualizar aparece a maldita janelinha: A página não pode ser enviada sem o reenvio da informação. Clique em 'Repetir para enviar a informação novamente ou clique em 'Cancelar' para retornar à página que estava tentando exibir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

michelsp eu axo k é kuando tipo:Nos temos um formulario e kuando clicamos no butao submit ele vai para outra pagina ou para a mesma, dps se clicarmos em F5 da a tal mensagem, eu axo k é isso k ele ker dizer e se for isso é bem normal acontecer lol

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois bem me parecia, eu para mim eu fazia assim:

 

dps de inserir a mensagem fazia refresh na janela do utilizador assim:

 

PHP [/tr][tr]

<?

$query = mysql_query("INSERT INTO blahblah....");

// vamos mandar o tal refresh

header("Location: pagina.php");

?>

[/tr]

 

axo k isso resolve bem a sua situação

e caso lhe dê algum erro de headers a dizer k ja foram enviadas utilize a função a função ob_start(); no incio da página em questão! axo k resolve esse seu problema de dps clicarem em F5 e de aparecer akela mensagem seca msm :\ se nao der é só postar de novo :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

vcs tao complicando tudo...Primeiro:Essa mensagem sempre aparece quando voce envia os dados via método POST.Num tem nada a ver com cookie nem session nem nada...Segundo:Voce tá fazendo errado, voce nao pode ir exibindo as mensagens logo após inserir no BD...Voce insere e redireciona para a página de mensagens, pq a cada vez q você atualizar a página ela vai duplicar as inserções...Quando terminar o código da inserção dos dados, insira isso:header("Location:mensagens.php");

Compartilhar este post


Link para o post
Compartilhar em outros sites

a mensagem de "reenvio de informação" aparece quando o usuário tenta dar um refresh numa página que recebeu dados pelo método POST

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.