Foros del Web » Programando para Internet » PHP »

Problema con $_POST al enviar submit

Estas en el tema de Problema con $_POST al enviar submit en el foro de PHP en Foros del Web. Buenos dias , estoy probando con un ejemplo sencillo la manera que cuando haga F5 en el navegador el mensaje que haya en el submit ...
  #1 (permalink)  
Antiguo 06/12/2013, 07:57
 
Fecha de Ingreso: noviembre-2010
Mensajes: 156
Antigüedad: 14 años
Puntos: 0
Problema con $_POST al enviar submit

Buenos dias , estoy probando con un ejemplo sencillo la manera que cuando haga F5 en el navegador el mensaje que haya en el submit se borre , he probado con unsset y no hay manera.

El header location tampoco me sirve , porque lo estoy haciendo en la misma página.

Código PHP:
<?php
if(isset($_POST['enviar'])){
$name $_POST['nombre'];
echo 
"Has enviado: <b> $name </b>";
}
?>
 
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
 
<input type="text" name="nombre"><br>
 
<input type="submit" id="enviar" name="enviar" value="Submit Form"><br>
 
</form>
  #2 (permalink)  
Antiguo 06/12/2013, 07:59
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Problema con $_POST al enviar submit

Haz un:

Código PHP:
Ver original
  1. print_r($_POST);

A ver que te sale.
  #3 (permalink)  
Antiguo 06/12/2013, 08:04
 
Fecha de Ingreso: noviembre-2010
Mensajes: 156
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con $_POST al enviar submit

Hola , pues me encanta cuando envío una duda y encuentro la solución XD ,

Cita:
<?php
session_start();
if(isset($_POST['enviar'])) {
$name=$_POST["name"];
if(isset($_SESSION['time']) && $_SESSION['time'] == $_POST['time']){
echo "User name : <b> $name </b>";
}
}
$time = $_SESSION['time'] = time();
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<input type="text" name="name"><br>
<input type="hidden" name="time" value="<?php echo $time; ?>" />
<input type="submit" id="enviar" name="enviar" value="Submit Form"><br>

</form>
Aqui dejo la solución porque he visto esta pregunta frecuentada por el foro

Saludos ! :)
  #4 (permalink)  
Antiguo 06/12/2013, 08:10
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: Problema con $_POST al enviar submit

Pero no entiendo.cual era.el problema
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #5 (permalink)  
Antiguo 08/12/2013, 08:09
 
Fecha de Ingreso: noviembre-2010
Mensajes: 156
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con $_POST al enviar submit

Cuando le das al boton del submit y se envía a la base de datos si actualizas el mensaje se vuelve a realizar el submit , entonces s einsertan dos veces.

Puedes activar la casilla del UNIQUE de la base de datos y poner este código para que al presionar F5 no se realizae el segundo submit
  #6 (permalink)  
Antiguo 08/12/2013, 12:33
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con $_POST al enviar submit

Bueno voy a intentar aportar algo ya que como lo solucionaste se puede alterar , ahora mismo tu formulario podria ser enviado 2 veces ya que el campo time aunque lo escondas se puede alterar .

ejemplo, se parece mucho a lo que se utiliza para CSRF cross site request forgery

Código PHP:
Ver original
  1. <?php
  2.  
  3. if(isset($_POST['enviar']))
  4. {
  5.     if(isset($_POST['name']) and isset($_SESSION['TOKEN']) and isset($_GET['token']) and $_GET['token'] == $_SESSION['TOKEN'])
  6.     {
  7.         echo 'User name : <b> '.$_POST['name'].'</b>';
  8.  
  9.         unset($_POST['name']);
  10.     }
  11.     else
  12.     {
  13.         exit('error');
  14.     }
  15. }
  16.  
  17. $_SESSION['TOKEN'] = sha1(uniqid(mt_rand(), true)); // generas un token
  18.  
  19. ?>
  20.  
  21. <form method="post" action="<?php echo $_SERVER['PHP_SELF'].'?token='.$_SESSION['TOKEN']; ?>">
  22. <input type="text" name="name"><br>
  23. <input type="submit" id="enviar" name="enviar" value="Submit Form"><br>
  24. </form>

haber si te sirve ;::

Última edición por webankenovi; 08/12/2013 a las 13:28

Etiquetas: post, submit
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 22:32.