Foros del Web » Programando para Internet » PHP »

Evitar ventana aviso reenvio post F5

Estas en el tema de Evitar ventana aviso reenvio post F5 en el foro de PHP en Foros del Web. Buenas tardes. Pienso q no se puede hacer, pero bueno. Ahí va. TODO LO Q EXPLICO A CONTINUACIÓN VA SOBRE UN MISMO ARCHIVO PHP!!!!!! 1- ...
  #1 (permalink)  
Antiguo 19/04/2012, 09:07
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años, 1 mes
Puntos: 2
Evitar ventana aviso reenvio post F5

Buenas tardes.

Pienso q no se puede hacer, pero bueno. Ahí va.

TODO LO Q EXPLICO A CONTINUACIÓN VA SOBRE UN MISMO ARCHIVO PHP!!!!!!

1- Tengo una página web con un formulario con 2 enlaces, los cuales son 2 botones input type="submit".

2- Dependiendo de cuál de los 2 enlaces clickee, quiero cargar contenido en un div de la misma página.

3- No hai problema, con los values lo consigo, pero, si pulso F5, me sale el aviso de q hai q volver a enviar la información POST.

4- Hay alguna manera de hacer q no se vea esa ventana? Y pido esto pq he intentado de mil formas controlar q sólo se envíe una vez mediante variables de control, la clase postBack y mil cosas más y nada.

5- Es lógico pq como cargo todo en una misma página, siempre vamos a tener las variables y se refrescarán.

6- No me sirve hacer la comprobación de los valores POST en otro archivo, pq no guardo nada en BD, sólo es para indicar q contenido hay q cargar en el div.

7- Lo tengo programado con GET sin problema, pero me gustaría intentarlo con POST para no mostrar nada en la barra del navegador.

8- Esto q estoy haciendo, se suele hacer con GET, POST o otro método?

Un saludo y gracias.
  #2 (permalink)  
Antiguo 19/04/2012, 09:17
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Evitar ventana aviso reenvio post F5

Utiliza ajax, para el envio de datos por post, sin que refresque, eso deberia obviarte el popup ese.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 19/04/2012, 09:30
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Evitar ventana aviso reenvio post F5

Podría ser una solución pero tendría q escribir mucho código y controlar la compatibilidad entre navegadores.

Más opciones?

Un saludo y gracias.
  #4 (permalink)  
Antiguo 19/04/2012, 09:36
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Evitar ventana aviso reenvio post F5

Que pasa si cambias los input por button?
  #5 (permalink)  
Antiguo 19/04/2012, 09:47
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Evitar ventana aviso reenvio post F5

Buenas, zalito12.

No entiendo la pregunta. Te refieres al tag <button></button> o a <input type="button" />?

De todas formas, tendré q hacer submit, no arreglaría nada,no?

Un saludo.
  #6 (permalink)  
Antiguo 19/04/2012, 09:59
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Evitar ventana aviso reenvio post F5

Cita:
Iniciado por LagoGZ Ver Mensaje
Podría ser una solución pero tendría q escribir mucho código y controlar la compatibilidad entre navegadores.

Más opciones?

Un saludo y gracias.
¿como es eso de la compatibilidad de Ajax con los navegadores?
Y lo de que es mucho código tampoco es cierto pero bueno... vayamos al caso con puro php
En resumen: usa un header.

Código PHP:
<?php

if( $_POST )
{
    
//hacer lo necesario en del submit
    //usar un header para evitar el reenvio de post
    
header('location:'.$_SERVER['PHP_SELF']);
}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="text" name="texto" value="" />
    <input type="submit" value="enviar" />
</form>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #7 (permalink)  
Antiguo 20/04/2012, 02:00
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Evitar ventana aviso reenvio post F5

Buenos días, IEKK.

Como ya comenté en el primer post y en mayúsculas. Lo tengo q hacer todo en la misma página. No existe una página donde hago las operaciones con el submit pq no hay nada q hacer, sólo cargar la página.

Voy a poner código:

-------------------index.php--------------------

if($_POST['A'])
{
$PaginaCargar = 'archivo_3.php';
}
else
{
$PaginaCargar = 'archivo_4.php';
}

require_once 'archivo_1.php';
require_once 'archivo_2.php';
require_once $PaginaCargar;

-----------------------archivo_1.php-------------------
<form action="index.php" method="post">
<input name="A" type=submit" value="Registro" />
</form>

-------------------------archivo_2.php-----------------------------
if($_POST)
{
header('Location:index.php');
}

<form action="index.php" method="post">
<input name="B" type=submit" value="Categoria 1" />
<input name="C" type=submit" value="Categoria 2" />
</form>

-----------------------archivo_3.php------------------------------------
Un formulario para registrarse.

------------------------archivo_4.php-----------------------------------
Lista de productos. Dependiendo de la categoría, se filtran.


Bien, pues lo q está pasando es q $PaginaCargar siempre vale 'archivo_4.php'. Es lógico, pq en cuanto se llega a archivo_2.php, al existir post, redirecciona de nuevo a la página principal, y al volver a comprobar $PaginaCargar, al no existir POST, la pone a 'archivo_4.php'.

Voy a intentar poner las comprobaciones el la página 'archivo_2.php', pero va a ser un lío de la hostia.

Un saludo y gracias.
  #8 (permalink)  
Antiguo 20/04/2012, 07:11
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Evitar ventana aviso reenvio post F5

Cita:
Iniciado por LagoGZ Ver Mensaje
Buenos días, IEKK.

Como ya comenté en el primer post y en mayúsculas. Lo tengo q hacer todo en la misma página.
Saludos ¿Has mirado que puse en el action del form?
La solución sigue usar un header, pero por supuesto al hacer un f5 o hacer un header location perderás que páginas tenía cargada el usuario... pero para algo están las variables de sessión ¿No?

No suelo hacer las cosas a los demás, pero bueno parece que no entendiste la idea.
Verás que así puedes hacer F5 sin problemas y que carga el archivo 3 y 4 dependiendo del botón y que aunque se refresque se mantiene en la opción elegida por el usuario.
Es un ejemplo. El resto te toca a ti desarrollarlo.

index.php:

Código PHP:
<?php
session_start
();

if( 
$_POST )
{
    
$_SESSION['cargar'] = ( isset($_POST['A']) ) ? 'archivo_3.php' 'archivo_4.php';
    
header('Location: '.$_SERVER['PHP_SELF']);
}
$cargar = ( isset($_SESSION['cargar']) ) ? $_SESSION['cargar'] : 'archivo_4.php';

include (
'archivo_1.php');
include (
'archivo_2.php');
include ( 
$cargar );

?>
archivo_1.php:
Código PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input name="A" type="submit" value="Registro" />
</form>
archivo_2.php:
Código PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input name="B" type="submit" value="Categoria 1" />
<input name="C" type="submit" value="Categoria 2" />
</form>
archivo_3.php:
Código PHP:
<?php echo 'esto es el archivo 3'?>
archivo_4.php:
Código PHP:
<?php echo 'esto es el archivo 4'?>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(

Etiquetas: formulario, post, reenvio, variables, ventanas, avisos
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 15:21.