2011-03-05 12 views

Respuesta

9

si quieres para llevar adelante sus datos a otro POST páginas (excepto la página action) a continuación, utilizar

session_start(); 
$_SESSION['post_data'] = $_POST; 
+0

Si el script en $ uri espera que los datos se pongan en $ _POST esto no funcionará. – zerkms

+0

Si controlas el script, * puedes * cambiarlo para verificar ambos. – Dre

2

De hecho, usted lata no peticiones POST redirección.

O bien, haga que su servidor proxy la solicitud (es decir, haga una solicitud de CURSOR al otro sitio) o cree otro formulario, llénelo con campos ocultos y envíelo con Javascript/deje que el usuario haga clic.

Alternativamente, como dice @diEcho, dependiendo de lo que intentes hacer: sesiones.

+0

+1. Más detalles en este enfoque aparecen aquí: http://stackoverflow.com/questions/5189450/whats-the-best-way-to-handle-something-like-a-login-page-on-top-of-zend- framewor/5194436 # 5194436 –

1

Si realiza una redirección, la publicación se perderá y se producirá un GET.

Se puede guardar la entrada en una sesión o codificarlo en el GET (como cadena de consulta)

1

Se puede guardar los datos de envío en la sesión, redirigir, y luego recuperarlo de vuelta de la sesión.

session_start(); 
$_SESSION['POSTDATA'] = $_POST; 
header('Location: ' . $uri); 

A continuación, en el archivo PHP para la nueva ubicación, recuperar los datos post como este:

$_POST = $_SESSION['POSTDATA']; 
+0

No funcionará si el $ uri es para un servidor completamente diferente. –

16

No usar $ _SESSION como le han sugerido. Los datos de sesión se comparten con todas las demás páginas, incluidas las abiertas en otras pestañas. Puede obtener un comportamiento impredecible si utiliza el mismo truco en varios lugares de su sitio web.

Un mejor código no probado sería algo como esto.

session_start(); 
$data_id = md5(time().microtime().rand(0,100)); 
$_SESSION["POSTDATA_$data_id"] = $_POST; 
header('Location: ' . $uri."?data_id=$data_id"); 

En la siguiente página se puede recuperar la entrada anterior como esto

session_start(); 
$post = array(); 
$data_key = 'POSTDATA_'.$_GET['data_id']; 
if (!empty ($_GET['data_id']) && !empty($_SESSION[$data_key])) 
{ 
    $post = $_SESSION[$data_key]; 
    unset ($_SESSION[$data_key]); 
} 

El código anterior no se ha probado, puede que tenga que hacer frente a algún error antes de que funciona.

+0

falta a) en la segunda línea? –

-2

Uso mi propio método simple.

¡Pienso que es muy lógico! Por ejemplo, si se utiliza un atributo de texto que desea mantener el valor de, puede utilizar:

<?php $textvalue = $_POST['textname']; ?> 
<input type="text" name="textname" value="<?php echo $textvalue; ?>" /> 

<br /> 

//And if you want to use this method for a radio button, you can use: 
<?php if(isset($_POST['radio1']){ 
    $selected = "selected"; 
} ?> 
<input type="radio" name="radio1" <?php echo $selected; ?> /> 
+0

Esta respuesta es incorrecta y miope. No vale la pena editarlo, porque no tiene sentido. – Sumurai8

Cuestiones relacionadas