2010-08-05 17 views
45

¿Hay alguna manera de establecer un $_POST['var'] sin usar el campo relacionado con el formulario (sin tipo = 'oculto') y usando solo PHP? Algo así como Configuración de la variable POST sin usar el formulario

$_POST['name'] = "Denniss"; 

¿Hay una manera de hacer esto?

EDITAR: Alguien me pidió algo de elaboración sobre esto. Así, por ejemplo, tengo página con un formulario en él, la forma es como la siguiente

<form method='post' action='next.php'> 
<input type='text' name='text' value='' /> 
<input type='submit' name='submit' value='Submit'/> 
</form> 

Una vez que se hace clic en el botón de enviar, yo quiero que me redirige a next.php. ¿Hay alguna manera de establecer la variable $ _POST ['text'] a otro valor? ¿Cómo hago esto persistente para que cuando haga clic en otro botón de envío (por ejemplo) el $ _POST ['texto'] será lo que configuré en next.php sin usar un campo oculto.

Avíseme si todavía no está claro y gracias por su ayuda.

+3

¿Quiere decir en el código del servidor o del lado del cliente cuando un usuario accede a alguna página? –

+2

¿Puedes elaborar lo que estás tratando de hacer? cURL podría ser una opción, las sesiones quizás sean otra opción. Demasiado vago para dar una respuesta exacta. –

+0

¿Qué? ¿Y por qué no quieres usar un campo oculto? Para eso están para. –

Respuesta

64

Sí, basta con establecer que a otro valor:

$_POST['text'] = 'another value'; 

Esto anulará el valor anterior correspondiente a text tecla de la matriz. El $_POST es superglobal matriz asociativa y puede cambiar los valores como matriz PHP normal.

Precaución: Este cambio solo es visible dentro del mismo alcance de ejecución de PHP. Una vez que se completa la ejecución y se carga la página, se borra la matriz $_POST. Un nuevo envío de formulario generará una nueva matriz $_POST.

Si desea conservar el valor en envíos de formularios, tendrá que ponerlo en forma de etiqueta value atributo o recuperarlo de un almacén de datos.

+0

y se mantendrá cuando hago clic en otro botón de envío sin establecerlo en un campo oculto? – denniss

+0

@denniss: Anulará nuevamente si un campo se llama 'text' cuando envía el formulario. ¿Por qué no utilizar una sesión probablemente si desea conservar un cierto valor? – Sarfraz

+0

cierto, solo quería saber si hay una manera de hacerlo con POST – denniss

2

que puede hacerlo usando ajax o mediante el envío de cabeceras http + contenidos como:

POST /xyz.php HTTP/1.1 
Host: www.mysite.com 
User-Agent: Mozilla/4.0 
Content-Length: 27 
Content-Type: application/x-www-form-urlencoded 

userid=joe&password=guessme 
+0

¿Cómo "eco" los datos userid = joe & password = guessme? – Sydwell

+1

'parse_str (file_get_contents ('php: // input'));' – stillstanding

+0

Esto es genial. Parece que esto se puede usar como una alternativa a CURL para establecer valores publicados. ¿Estoy en lo correcto? – Sydwell

6

Si desea establecer $ _POST [ 'texto'] a otro valor, por qué no usar:

$_POST['text'] = $var; 

en next.php?

+1

La respuesta al "por qué no usar" viene dada precisamente por \t @deceze (con la posible excepción de pruebas de unidad de bajo nivel explicadas por @ Nathan Arthur). No "cambie" $ _POST y luego se pregunte por qué su cambio se ha desvanecido en el siguiente contexto de formulario. –

1

Puede hacerlo usando jQuery. Ejemplo:

<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script> 

<script> 
    $.ajax({ 
     url : "next.php", 
     type: "POST", 
     data : "name=Denniss", 
     success: function(data) 
     { 
      //data - response from server 
      $('#response_div').html(data); 
     } 
    }); 
</script> 
+5

Probablemente, si es lo suficientemente entusiasta, puede obtener una página web para cantar una canción de Billy Joel en jQuery, pero eso no significa que sea la mejor o la más elegante forma de hacerlo. jQuery es genial, pero desafortunadamente le ofreció al mundo cien maneras más de abusar de JavaScript. EDIT: pregunta original "¿Hay alguna manera de establecer $ _POST ['var'] sin usar el campo relacionado con el formulario (sin tipo = 'oculto') y usando solo PHP" No pregunto "¿hay otra forma de hacer algo en jQuery que se podría hacer mejor de otra manera " –

+1

@ WebelITAustralia-upvoter savage af –

Cuestiones relacionadas