Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Cómo puedo limpiar las $_POST?

Estas en el tema de Cómo puedo limpiar las $_POST? en el foro de Frameworks JS en Foros del Web. Hola, que tal?? Tengo un gran problema. En mi página tengo 4 formularios de pedidos de productos, los 4 son distintos. Es un sitio en ...
  #1 (permalink)  
Antiguo 22/06/2010, 11:16
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 16 años, 6 meses
Puntos: 2
Exclamación Cómo puedo limpiar las $_POST?

Hola, que tal?? Tengo un gran problema. En mi página tengo 4 formularios de pedidos de productos, los 4 son distintos. Es un sitio en flash, y los formularios se abren con jQuery y se envían con $.ajax mediante POST.

El problema es que las variables POST quedan como en "buffer" (no se si ese sería el término exacto) y al cambiar de formulario y hacer otro pedido, me vuelve a enviar los datos del formulario anterior.

Estuve leyendo mucho, y vi varios métodos. Pero ninguno funcionó.

No puedo hacer header() desde el php porque el php lo ejecuto desde el ajax, el sitio es una sola página.

Probé con unset() y tampoco. Lo usé de manera general unset($_POST) e individual unset($_POST['var1'], $_POST['var2'], $_POST['var3']) y ninguna de las dos funciona.

También encontré el $_POST = array(); para vaciar el array del post, pero asi tampoco funciona.

Cómo puedo hacer para solucionarlo? A alguien se le ocurre algo?

Espero que me puedan ayudar, porque ya estaba a punto de terminarlo y me surgió esto!

Un abrazo a todos!!
__________________
Facundo
http://www.creactivo.com.ar
  #2 (permalink)  
Antiguo 22/06/2010, 12:39
Avatar de boby6killer  
Fecha de Ingreso: abril-2008
Mensajes: 81
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Cómo puedo limpiar las $_POST?

Lo mejor es hacer una limpieza con header no cache y date expiration, pero si tu no puedes entonces envia como parametro un numero aleatorio (no importa que no lo uses) como primer parametro. Eso me ha servido con get en actionscript + flash, con post no lo he intentado.
Prueba y postea para ver si te funciono
  #3 (permalink)  
Antiguo 22/06/2010, 14:20
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 19 años, 11 meses
Puntos: 145
Respuesta: Cómo puedo limpiar las $_POST?

xomo dice Boby6killer, para el tratamiento de formularios lo mejor es utilizar header no cache.

saludos.
__________________
http://chicho.ninja yiaaaa
  #4 (permalink)  
Antiguo 27/07/2010, 13:48
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 16 años, 6 meses
Puntos: 2
Pregunta Respuesta: Cómo puedo limpiar las $_POST?

Hola gente!! Como estan?? La verdad es que aun no he podido solucionar este problema.

Volví a probar lo de $_POST = array(); y no hubo caso, también probé de nuevo unset($_POST) y unset($_POST['var1'], $_POST['var2'], $_POST['var3']); y tampoco.

Lo que probé como nuevo fue lo que me recomendaron de enviar una variable aleatoria por la URL, pero tampoco tuvo éxito.

Lo que hice fue crear una variable aleatoria cada vez que se presiona el boton enviar:

Código:
var randomString = Math.floor(Math.random()*101);
y enviar a la url enviar.php?variablealeatoria=randomString:

Código:
url: "incluir/enviar.php?variablealeatoria="+randomString,

Y eso funciona bien, lo compruebo con FireBug en Firefox y siempre envía a la URL con una variable distinta.

Pero las variables $_POST se siguen guardando en algún lado.

Es un formulario ajax enviado con jQuery, por lo que no puedo "refrescar" la página usando header() en el enviar.php. En el primer mensaje de este post hay mas detalles del funcionamiento del formulario para ver si alguien me puede dar una mano con esto, porque me esta sacando de quicio.

Saludos y gracias!!
__________________
Facundo
http://www.creactivo.com.ar
  #5 (permalink)  
Antiguo 27/07/2010, 13:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Cómo puedo limpiar las $_POST?

y se puede saber que método de jQuery usas para hacer la petición??

...además repetiste lo mismo que en tu primer mensaje, ¿eres tartamudo o algo así??

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 27/07/2010, 13:59
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: Cómo puedo limpiar las $_POST?

acabo de probar también enviando por GET en vez de POST, y tampoco funciona bien.

Cuando mando el 2do formulario, me envía los datos del 1ro. Y si mando un tercero, tambien sigue enviando los del 1ro.

Espero que alguien sepa como ayudarme.

Saludos y gracias!!
__________________
Facundo
http://www.creactivo.com.ar
  #7 (permalink)  
Antiguo 27/07/2010, 14:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Cómo puedo limpiar las $_POST?

Cita:
Iniciado por fakulicious Ver Mensaje
acabo de probar también enviando por GET en vez de POST, y tampoco funciona bien.

Cuando mando el 2do formulario, me envía los datos del 1ro. Y si mando un tercero, tambien sigue enviando los del 1ro.

Espero que alguien sepa como ayudarme.

Saludos y gracias!!
bueno, es tu tercer mensaje y... ¿aún quieres que adivinemos tu código o que??

¿como saber que es lo que haces? ¿seguro que es un problema de PHP??

porque según entiendo, los problemas los tienes al usar jQuery...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 27/07/2010, 14:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Tema movido desde PHP a Frameworks y Plugins Javascript
  #9 (permalink)  
Antiguo 27/07/2010, 14:17
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 16 años, 6 meses
Puntos: 2
Pregunta Respuesta: Cómo puedo limpiar las $_POST?

Es bastante extenso el código, ya que son 4 formularios con muchos campos cada uno. Pero copio el funcionamiento jQuery y PHP de uno de los formularios, el resto se repite.

De todas formas como ya dije, uso FireBug y todas las variables se envían correctamente. El problema es que en el php toma las variables del envío anterior, no se actualizan con las nuevas variables que le estoy mandando.

jQuery
Código:
$(document).ready(function(){
	$('.cajaForm').hide();
	$('#mensajeAjo').hide();
	$('#mensajeCebolla').hide();
	$('input[type=checkbox],input[type=radio]').prettyCheckboxes();
	$('a.linkCerrarForm').click(function(){
		$('.cajaForm').hide('slow');
		return false;
	});
	
	$('#enviarAjo').click(function(){
		var randomString = Math.floor(Math.random()*101);
		$('.errorInput').removeClass('errorInput');
		var errores = 0;
		var compradorAjo = $('#compradorAjo').val();
		if(compradorAjo == ""){
			$('input#compradorAjo').addClass('errorInput');
			errores++;
		} else {
			$('input#compradorAjo').removeClass('errorInput');
		}

		var telefonoAjo = $('#telefonoAjo').val();

		var emailAjo = $('#emailAjo').val();
		if(emailAjo == ""){
			$('input#emailAjo').addClass('errorInput');
			errores++;
		} else {
			$('input#emailAjo').removeClass('errorInput');
		}

		var mercaderiaAjo = $('#mercaderiaAjo').val();
		if(mercaderiaAjo == "0"){
			$('select#mercaderiaAjo').addClass('errorInput');
			errores++;
		} else {
			$('select#mercaderiaAjo').removeClass('errorInput');
		}

		var variedadAjo = $('#variedadAjo').val();
		if(variedadAjo == "0"){
			$('select#variedadAjo').addClass('errorInput');
			errores++;
		} else {
			$('select#variedadAjo').removeClass('errorInput');
		}

		var tamanoAjo = new Array();
		$("input[name='tamanoAjo']:checked").each(function(){
			tamanoAjo.push($(this).val());
		});
		if(tamanoAjo.length == 0){
			$('td#CeldaTamanoAjo').addClass('errorInput');
			errores++;
		} else {
			$('td#CeldaTamanoAjo').removeClass('errorInput');
		}

		var envaseAjo = new Array();
		$("input[name='envaseAjo']:checked").each(function(){
			envaseAjo.push($(this).val());
		});
		if(envaseAjo.length == 0){
			$('td#CeldaEnvaseAjo').addClass('errorInput');
			errores++;
		} else {
			$('td#CeldaEnvaseAjo').removeClass('errorInput');
		}

		var kilosAjo = new Array();
		$("input[name='kilosAjo']:checked").each(function(){
			kilosAjo.push($(this).val());
		});
		if(kilosAjo.length == 0){
			$('td#CeldaKilosAjo').addClass('errorInput');
			errores++;
		} else {
			$('td#CeldaKilosAjo').removeClass('errorInput');
		}

		var cantidadAjo = $('#cantidadAjo').val();
		if(cantidadAjo == ""){
			$('input#cantidadAjo').addClass('errorInput');
			errores++;
		} else {
			$('input#cantidadAjo').removeClass('errorInput');
		}

		var fechaCargaAjo = $('#fechaCargaAjo').val();
		if(fechaCargaAjo == ""){
			$('input#fechaCargaAjo').addClass('errorInput');
			errores++;
		} else {
			$('input#fechaCargaAjo').removeClass('errorInput');
		}

		var destinoAjo = $('#destinoAjo').val();
		if(destinoAjo == ""){
			$('input#destinoAjo').addClass('errorInput');
			errores++;
		} else {
			$('input#destinoAjo').removeClass('errorInput');
		}

		var observacionesAjo = $('#observacionesAjo').val();

		if(errores > 0){
			return false;
		} else {
			$('div#mensajeAjo').html('<img src="images/loader.gif" alt="" width="16" height="16" align="absmiddle" /> Enviando...');
			$('div#mensajeAjo').slideDown("slow");
			
	var dataString = 'enviar=ajo' + '&comprador='+ compradorAjo + '&telefono='+ telefonoAjo + '&email=' + emailAjo + '&mercaderia=' + mercaderiaAjo + '&variedad=' + variedadAjo + '&tamano=' + tamanoAjo + '&envase=' + envaseAjo + '&kilos=' + kilosAjo + '&cantidad=' + cantidadAjo + '&fechaCarga=' + fechaCargaAjo + '&destino=' + destinoAjo + '&observaciones=' + observacionesAjo;
			
			$.ajax({  
				type: "GET",
				url: "incluir/enviar.php?variablealeatoria="+randomString,  
				data: dataString,  
				dataType: 'html',
				success: function(objeto_uno, data, objeto_dos) {  
					$('div#mensajeAjo').slideUp("slow", function(){
						$('div#mensajeAjo').html(objeto_uno);
					});
					$('div#mensajeAjo').slideDown("slow");
				}  
			});
			return false;
		}
	});

PHP
Código PHP:
    if($_GET['enviar'] == 'ajo' || $_GET['enviar'] == 'cebolla'){
        
$comprador $_GET['comprador'];
        
ValidarDatos($comprador);
        
$telefono $_GET['telefono'];
        
ValidarDatos($telefono);
        
$email $_GET['email'];
        
ValidarDatos($email);
        
$mercaderia $_GET['mercaderia'];
        
ValidarDatos($mercaderia);
        
$variedad $_GET['variedad'];
        
ValidarDatos($variedad);
        
$tamano $_GET['tamano'];
        
ValidarDatos($tamano);
        
$envase $_GET['envase'];
        
ValidarDatos($envase);
        
$kilos $_GET['kilos'];
        
ValidarDatos($kilos);
        
$cantidad $_GET['cantidad'];
        
ValidarDatos($cantidad);
        
$fechaCarga $_GET['fechaCarga'];
        
ValidarDatos($fechaCarga);
        
$destino $_GET['destino'];
        
ValidarDatos($destino);
        
$observaciones $_GET['observaciones'];
        
ValidarDatos($observaciones);
            
        
$to '[email protected]';
        
$fecha date("d/m/y a las H:i");
        
$asunto "Nota de pedido desde gispe.com.ar";
        
$headers "From: $comprador <$email>\r\n";
        
$headers .= "To: Gispe <$to>";
        
$mensaje="DATOS DEL PEDIDO:
    
Comprador: $comprador
Telefono: $telefono
E-Mail: $email

Mercaderia: $mercaderia
Variedad: $variedad
Tamano / Calibre: $tamano
Tipo de envase: $envase
Kilos: $kilos
Cantidad: $cantidad
Fecha aprox. de carga: $fechaCarga
Destino: $destino
Observaciones: $observaciones

Enviado el $fecha"
;
        
        
$enviar mail($to$asunto$mensaje$headers);
        
        if (!
$enviar){
            
$resultado '<div id="mensajeERROR">Ha ocurrido un error al enviar el mensaje. Intente nuevamente más tarde.</div>';
        } else {
            
$resultado '<div id="mensajeOK">Su mensaje ha sido enviado. Nos pondremos en contacto con Usted a la brevedad.</div>';
        }
        echo 
$resultado;

        
$_GET = array('');

    } 
__________________
Facundo
http://www.creactivo.com.ar
  #10 (permalink)  
Antiguo 02/08/2010, 04:45
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: Cómo puedo limpiar las $_POST?

en ie te queda cacheado?

usa el parámetro "cache" del método ajax en false
Código Javascript:
Ver original
  1. $.ajax({
  2.      cache:false

Etiquetas: limpiar, post
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 19:42.