Foros del Web » Programando para Internet » PHP »

Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

Estas en el tema de Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script en el foro de PHP en Foros del Web. Por favor necesito ayuda con este mensaje Desde algun tiempo estoy tratando de limpiar las variables $_POST o $_GET se que esto se lo hace ...
  #1 (permalink)  
Antiguo 28/02/2007, 21:53
 
Fecha de Ingreso: octubre-2006
Ubicación: ECUADOR
Mensajes: 19
Antigüedad: 17 años, 6 meses
Puntos: 0
Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

Por favor necesito ayuda con este mensaje

Desde algun tiempo estoy tratando de limpiar las variables $_POST o $_GET se que esto se lo hace con unset($_POST['campo']) o simplemente asignandolo como nulo al valor. Esto funciona correctamente en una misma hoja.

El problema es cuando el usuaio recarga la página con la tecla F5 o con el icono de navegador no se blanquean estos campos por nada.

Para Una mejor explicación les envio un archivo de prueba que lo hice

<html>
<head>
<title>PRUEBA</title>
<?
$v1=$_POST["textfield"];
$v2=$_POST["textfield2"];
$v3=$_POST["enviar"];
echo "VALOR DE CAMPO 1 ".$v1."<br>";
echo "VALOR DE CAMPO 2 ".$v2."<br>";
echo "VALOR DE BOTON ".$v3."<br>";
// PROBANDO SI SE BLANQUEA ASIGNANDOLOS CON NULO Y NADA
$_POST["textfield"]="";
$_POST["textfield2"]="";
$_POST["enviar"]="";
// PROBANDO SI SE BLANQUEA CON unset A VARIABLES AUXILIARES Y NADA
unset($v1);
unset($v2);
unset($v3);
//PROBANDO SI BLANQUEA CON unset Y NADA
unset($_POST["textfield"]);
unset($_POST["textfield2"]);
unset($_POST["enviar"]);
//PROBANDO ASIGNANDO NULO A VARIABLES AUXILIARES Y NADA
$v1="";
$v2="";
$v3="";
?>

<body>
<form name="form1" method="post" action="prueba.php">
<p>
<input type="text" name="textfield">
</p>
<p>
<input type="text" name="textfield2">
</p>
<p>
<input type="submit" name="enviar" value="Enviar">
</p>
</form>
<?
// AL ENVIAR EL FORMULARIO SI SE BLANQUEAN ESTOS VALORES
// EL PROBLEMA ES CUANDO SE RECARGA LA PAGINA CON F5 O EL ICONO DE RECARGA DEL NAVEGADOR
echo "VALOR DE CAMPO 1 ".$v1."<br>";
echo "VALOR DE CAMPO 2 ".$v2."<br>";
echo "VALOR DE BOTON ".$v3."<br>";
?>
</body>
</html>

Es necesario que el script se lo haga en el mismo archivo pues tambien he probado que si funciona si lo hago en un archivo script separado. Pero por efectos de la programación que estoy desarrollando me es necesario que este en el mismo archivo

Gracias por la ayuda que me brinden
  #2 (permalink)  
Antiguo 01/03/2007, 10:51
Avatar de locojars  
Fecha de Ingreso: mayo-2002
Mensajes: 265
Antigüedad: 21 años, 11 meses
Puntos: 4
Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

Pues lo único que se me ocurre para esto es que trates de deshabilitar la telcla F5 o la función de Reload, porque los datos que has pasado del formulario, como lo estas procesando en el mismo archivo existirán hasta que envies otro formulario.

prueba con esta función a ver si te sirve:

Código HTML:
<Script language="javascript">
function checkKeyCode(evt)
{

var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if(event.keyCode==116)
{
evt.keyCode=0;
return false
}
}
document.onkeydown=checkKeyCode;
</script> 
Salu2
Jars
__________________
No le digas a Jehová que tan grande es tu problema, dile a tu problema cuan grande es Jehová.
  #3 (permalink)  
Antiguo 01/03/2007, 11:08
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

Hola,
aqui en el foro tienes la solucion
http://www.forosdelweb.com/showthrea...ST+unset+array

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #4 (permalink)  
Antiguo 01/03/2007, 11:11
 
Fecha de Ingreso: octubre-2006
Ubicación: ECUADOR
Mensajes: 19
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

Muchas gracias por tu ayuda me sirvio muchisimo.

La funcion que me enviaste solo desactiva la tecla F5 hay alguna forma de desactivar el icono de recarga del navegador? sin eliminar la barra de navegacion

Saludos
  #5 (permalink)  
Antiguo 01/03/2007, 11:15
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

Hola de nuevo

Recuerda q puedes dehabilitar javascript en el navegador.. por lo tanto eso no es suficiente o no es suficientemente eficaz!

usa $_POST = array();
o bien unset($_POST['variable']);
en el Link q te puesto antes te lo explica bien!

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #6 (permalink)  
Antiguo 03/03/2007, 18:41
Avatar de FabianSN  
Fecha de Ingreso: enero-2007
Ubicación: SNicolas, BsAs, Argentina
Mensajes: 96
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

Cita:
Iniciado por sergi_climent Ver Mensaje
Hola de nuevo

Recuerda q puedes dehabilitar javascript en el navegador.. por lo tanto eso no es suficiente o no es suficientemente eficaz!

usa $_POST = array();
o bien unset($_POST['variable']);
en el Link q te puesto antes te lo explica bien!

Saludos
Probé esto, que es casi lo mismo que se dijo como solucion en el post anterior y no funciona ninguna de las dos, creo que es un error de análisis dado que el unset colocado en el PHP se ejecuta luego de que haces el envío de variables pero del lado servidor, en tanto que el problema del POSTDATA se dá porque dichas variables son reenviadas por el navegador del cliente, con lo cual puedo ver 3 soluciones:
A) Verificar que los datos no sean exactamente los mismos + algún campo oculto que sirva a tal fin.
B) Crear alguna ID única e hidden en el form a fin de que se pueda verificar lo ingresado.
C) Que para el ingreso de datos se abra un fourmulario determinado y que luego se redirija hacia otro form.
  #7 (permalink)  
Antiguo 05/03/2007, 11:09
 
Fecha de Ingreso: octubre-2006
Ubicación: ECUADOR
Mensajes: 19
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

He buscado muchisimo sobre este tema y estoy de acuerdo con Fabian. Lo único que se puede hacer es vaciar el POSTDATA del navegador.

Alguna persona me puede ayudar a realizar esto

Saludos
  #8 (permalink)  
Antiguo 05/03/2007, 11:38
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

La idea es usar una lógica de proceso diferente para los datos.
pagina 1 > form
pagina 2 > action process
pagina 3 > thk process

El secreto esta en usar header() para el redirect entre page 2 y 3, de esta manera jamás quedará cacheada (técnicamente no debería) la pagina 2, por lo que, aunque se haga desde page 3 volver desde el browser, éste irá a page 1 y no a page 2 (que es de donde viene realmente), aunque también en page 2 pondría un isset de POST redireccionando a page 1 (para evitar llamadas directas).

Las soluciones de desactivar teclas no son del todo correctas.

PD: Se puede eliminar tranquilamente la pagina 3 volviendo a la pagina 1 una vez procesados los datos.

Espero que ayude la idea.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #9 (permalink)  
Antiguo 05/03/2007, 11:50
Avatar de FabianSN  
Fecha de Ingreso: enero-2007
Ubicación: SNicolas, BsAs, Argentina
Mensajes: 96
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

Cita:
Iniciado por nicolaspar Ver Mensaje
La idea es usar una lógica de proceso diferente para los datos.
pagina 1 > form
pagina 2 > action process
pagina 3 > thk process

El secreto esta en usar header() para el redirect entre page 2 y 3, de esta manera jamás quedará cacheada (técnicamente no debería) la pagina 2, por lo que, aunque se haga desde page 3 volver desde el browser, éste irá a page 1 y no a page 2 (que es de donde viene realmente), aunque también en page 2 pondría un isset de POST redireccionando a page 1 (para evitar llamadas directas).

Las soluciones de desactivar teclas no son del todo correctas.

PD: Se puede eliminar tranquilamente la pagina 3 volviendo a la pagina 1 una vez procesados los datos.

Espero que ayude la idea.
Soy medio lerdo, pero algo se entiende, el problema que tengo es que el header no me lo toma, lo he probado de muchísimas formas y no sé si es un problema de seteo o que, pero me dice siempre lo mismo, algo así como que en ese momento ya es imposible cambiar el header.

Por otra parte estaba mirando algo de Javascript y tenía pensado abrir el formulario en una nueva ventana y luego de hacer el submit cerrar dicha ventana, con lo cual creo que no habría problemas de POSTDATA ni refresh no deseados, pero estéticamente "odiaría" tener que abrir una ventana emergente para este problema.
  #10 (permalink)  
Antiguo 05/03/2007, 12:49
 
Fecha de Ingreso: octubre-2006
Ubicación: ECUADOR
Mensajes: 19
Antigüedad: 17 años, 6 meses
Puntos: 0
Pregunta Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

He logrado encontrar algo que nos pueda funcionar

Se trata de hacer expirar el POSTDATA del navegador con el siguiente script

<?php
header("Cache-Control: must-revalidate");
$offset = 60 * 60 * 24 * -1;
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
header($ExpStr);
?>

A ver si lo prueban y emiten comentarios

Saludos
  #11 (permalink)  
Antiguo 06/03/2007, 12:03
 
Fecha de Ingreso: octubre-2006
Ubicación: ECUADOR
Mensajes: 19
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

No se si el script anterior lo probaron pues a mi no me funciona muy bien

Saludos
  #12 (permalink)  
Antiguo 09/03/2007, 18:36
 
Fecha de Ingreso: febrero-2007
Mensajes: 32
Antigüedad: 17 años, 1 mes
Puntos: 0
Busqueda Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

Yo tambien tuve el mismo problema y plantee la siguiente solucion:

Cree una variable de control llamada "actualizado" y hago la siguiente consulta:

Verifico si viene metodo post y si ya fue actualizado, si las dos se cumplen lo mando a otra pagina y asi queda liberado:
if (($_POST) && ($_SESSION["actualizado"]== "SI"))
{
header("Location: ../index.php");
exit();
}

en el body verifico lo siguiente:

if (!$_POST)
{
//codigo
$_SESSION["actualizado"]= "NO";
}
else
{
//codigo
$_SESSION["actualizado"]= "SI";
}
  #13 (permalink)  
Antiguo 09/03/2007, 19:33
Avatar de TheViejo  
Fecha de Ingreso: marzo-2007
Ubicación: Delante de mi Vetusto PC.
Mensajes: 29
Antigüedad: 17 años, 1 mes
Puntos: 3
Re: Como Vaciar $_post Al Recargar Pagina Utilizando La Misma Pagina Para El Script

Hola mcapvj, he modificado tu código con algunas cosillas para que funcione como tu quieres, te comento lo que he realizado es añadir un campo oculto en el formulario llamado id y con un value único( md5(time()) ), para así poder identificarlo mejor. Cuando se muestra la pagina se genera un id único para el formulario cuando, lo rellenas y pulsas enviar ese id único se almacena en la sesión de usuario y de este modo si el usuario hace una recarga de la web nuestro script comprueba el id único con lo almacenado en la sesión y si este valor es idéntico al almacenado no procesa el $_POST. Quizas me este liando un poco, en el código que te pongo se ve mejor.

Código PHP:
<?
session_start
();
?>
<html>
<head>
<title>PRUEBA</title>
<?
// Esto para evitar el Notice por Undefined variable
if (!isset($_POST["id"])) $_POST["id"] = false;
if (!isset(
$_POST["textfield"])) $_POST["textfield"] = false;
if (!isset(
$_POST["textfield2"])) $_POST["textfield2"] = false;
if (!isset(
$_POST["enviar"])) $_POST["enviar"] = false;

$v1=False;
$v2=False;
$v3=False;

$id=$_POST["id"];

if(
session_register('id_formulario'))
 {
  if (
$_SESSION["id_formulario"] != $id)
   {
    
$v1=$_POST["textfield"];
    
$v2=$_POST["textfield2"];
    
$v3=$_POST["enviar"];
    
$_SESSION["id_formulario"] = $id
   }
 }
else
 {
  
$v1=$_POST["textfield"];
  
$v2=$_POST["textfield2"];
  
$v3=$_POST["enviar"];
  
$_SESSION["id_formulario"] = $id
 }



echo 
"VALOR DE CAMPO 1 ".$v1."<br>";
echo 
"VALOR DE CAMPO 2 ".$v2."<br>";
echo 
"VALOR DE BOTON ".$v3."<br>";
// PROBANDO SI SE BLANQUEA ASIGNANDOLOS CON NULO Y NADA
$_POST["textfield"]="";
$_POST["textfield2"]="";
$_POST["enviar"]="";
// PROBANDO SI SE BLANQUEA CON unset A VARIABLES AUXILIARES Y NADA
unset($v1);
unset(
$v2);
unset(
$v3);
//PROBANDO SI BLANQUEA CON unset Y NADA
unset($_POST["textfield"]);
unset(
$_POST["textfield2"]);
unset(
$_POST["enviar"]);
//PROBANDO ASIGNANDO NULO A VARIABLES AUXILIARES Y NADA
$v1="";
$v2="";
$v3="";
?>

<body>
<form name="form1" method="post" action="prueba.php">
<p>
<input type="text" name="textfield">
</p>
<p>
<input type="text" name="textfield2">
<input type="hidden" name="id" value="<? echo md5(time()); ?>">
</p>
<p>
<input type="submit" name="enviar" value="Enviar">
</p>
</form>
<?
// AL ENVIAR EL FORMULARIO SI SE BLANQUEAN ESTOS VALORES
// EL PROBLEMA ES CUANDO SE RECARGA LA PAGINA CON F5 O EL ICONO DE RECARGA DEL NAVEGADOR
echo "VALOR DE CAMPO 1 ".$v1."<br>";
echo 
"VALOR DE CAMPO 2 ".$v2."<br>";
echo 
"VALOR DE BOTON ".$v3."<br>";
?>
</body>
</html>
Espero que te sirva, si necesitas algo más dame un toque.
Un saludo.
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 23:28.