Foros del Web » Programando para Internet » PHP »

Problema al recargar pagina

Estas en el tema de Problema al recargar pagina en el foro de PHP en Foros del Web. Tengo la siguiente pagina que es una especie de libro de visitas. El problema que tengo es que si inserto un mensaje lo hace correcto ...
  #1 (permalink)  
Antiguo 05/07/2010, 09:08
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Problema al recargar pagina

Tengo la siguiente pagina que es una especie de libro de visitas. El problema que tengo es que si inserto un mensaje lo hace correcto peor si recargo la pagina con F5 vuelve a insertarse la firma, cada vez que se recarga se inserta.
No se como hacer para controlar si se hace un reload no haga el insert
He probao con HTTP_REFERER pero no he conseguido solucionarlo.
Haber si me dais una idea



Código HTML:
Ver original
  1. <form name="html" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
  2.     <p><div align="center">
  3.     <br />
  4.     Usuario:<br />
  5.     <input type="text" name="usuario" style="background-color:#F3F781"/>
  6.     </p>
  7.     <p>
  8.     Firma:<br />
  9.     <textarea name="firma" cols="35" rows="5"  style="background-color:#F3F781"></textarea>
  10.     </p>
  11.     <input type="submit" name="enviar" value="Enviar" />
  12.     </div>
  13.  
  14.     <?php
  15.    
  16.     if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
  17.    
  18.         if(!empty($_POST['usuario']) && !empty($_POST['firma'])){
  19.        
  20.         $usuario = htmlentities(trim($_POST['usuario']));
  21.         $firma = htmlentities(trim($_POST['firma']));
  22.        
  23.         $f_hoy=getdate();
  24.         $a_hoy=$f_hoy['year']."-".$f_hoy['mon']."-".$f_hoy['mday'];
  25.        
  26.         $fecha = time ();
  27.         $hora = date ( "H:i:s" , $fecha );
  28.        
  29.         $sqlInsert = mysql_query("INSERT INTO TFirmar (usuario, firma, fecha, hora)
  30.         VALUES ('$usuario', '$firma', '$a_hoy', '$hora')", $link)
  31.         or die(mysql_error());
  32.    
  33.         }else{
  34.             ?> <font color="red"> <?php echo "Debe llenar todos los campos"; ?></font><p>
  35.             <?php
  36.         }
  37.     }
  38.    
  39.     $_pagi_sql = "SELECT * FROM TFirmar ORDER BY fecha DESC , hora DESC";
  40.  
  41.     $_pagi_cuantos = 5;
  42.     include("paginator.inc.php");
  43.  
  44.         while($row = mysql_fetch_array($_pagi_result)){
  45.  
  46.         echo "Fecha: $row[fecha] ($row[hora])";
  47.         echo "<p><b>$row[usuario]</b> dijo:<br />". nl2br($row['firma']) ."</p><hr />";
  48.  
  49.         }
  50.  
  51.     ?>
  52.     <div align="center">
  53.     <?php      
  54.         echo"<p>".$_pagi_navegacion."</p>";
  55.  
  56.     ?>
  57.     </div>
  58.  
  59. </form>
  #2 (permalink)  
Antiguo 05/07/2010, 09:39
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Problema al recargar pagina

Se soluciona facil:

Luego del mensaje que muestres al usuario, o sea de que se ha llevado a cabo todo correctamente, coloca esto:

?>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="refresh"
content="3;URL=PAGINA_ACTUAL.PHP">
<?php



3 seria el tiempo de espera para llamar a la pagina

PAGINA_ACTUAL.PHP seria la pagina en donde esta ese script , el nombre de ese archivo.

Eso llamara a la misma pagina, y los envios post anteriores desapareceran.
  #3 (permalink)  
Antiguo 05/07/2010, 09:51
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problema al recargar pagina

wiwi74 he probado lo que me comentas pero me sigue pasando lo mismo cuando recargo la pagina dandole a F5 vuelve a insertar la firma anterior. Lo que hace con esas lineas es ir recargandose la pagina cada x tiempo.
  #4 (permalink)  
Antiguo 05/07/2010, 11:29
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Problema al recargar pagina

Para que solo se recargue una vez debes colocarlo dentro de un condicional:

Aqui quiza:

No le pongas el nombre a la url pon esto: ? como lo coloque aqui.

Código PHP:

if(!empty($_POST['usuario']) && !empty($_POST['firma'])){

?>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="refresh" 
content="3;URL=?"> 
<?php

//.... resto del codigo

}

Porque si no esta dentro de un condicional, claro, se ejecutara siempre.
  #5 (permalink)  
Antiguo 05/07/2010, 11:38
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Problema al recargar pagina

Quiza el problema este en el condicional
Este ejemplo funciona: muestra $_POST['texto'] solo cuando hay envio post, al refrescar (a lo que puedes ponerle solo 1 segundo) no lo muestra, ya que $_POST['texto'] viene vacio.

Código PHP:

<form action="" method="post">
<input type="hidden" name="texto" value="Valor" />
<input type="submit" value="Enviar" />
</form>

<?
if($_POST['texto'] != ""){
echo 
"<br >".$_POST['texto'];
?>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="refresh" 
content="3;URL=?"> 
<?php
}
?>
  #6 (permalink)  
Antiguo 05/07/2010, 12:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problema al recargar pagina

Esto no es exactamente lo que yo quiero.

Tengo el formulario y debajo las firmas de la gente

Usuario1
Hola
---------------
Usuario2
Hola a todos
----------------
Usuario3
Saludos
---------------

Entonces si el ultimo usuario escribe saludos se envia bien y se inserta en la tabla todo correcto, el problema viene cuando recarga que se vuelve a escribir Usuario3 Saludos. La solucion que tu me das no muestra las firmas en todos los casos, no se si me explico bien.Lo que necesitaria es limpiar el POST una vez hexo el insert o no se. Por favor alguien que me ayude que es urgentee!
Gracias por la ayuda wiwi74
  #7 (permalink)  
Antiguo 05/07/2010, 13:43
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
Respuesta: Problema al recargar pagina

Mediante PHP se podría hacer con:
Código PHP:
Ver original
  1. <?php
  2. header("Cache-Control: no-cache");
  3. header("Expires: -1");
  4. ?>

Otras opciones: http://www.forosdelweb.com/f91/recar...onsume-819502/
  #8 (permalink)  
Antiguo 05/07/2010, 15:53
 
Fecha de Ingreso: mayo-2010
Mensajes: 212
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Problema al recargar pagina

o simplemente ponle un If validando si ya se habia insertado

Etiquetas: recargar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:38.