2011-11-06 11 views
6

¿Cómo se puede pasar una variable como el valor de la clave de matriz $ _POST en PHP? ¿O acaso no es posible?

$test = "test"; 
echo $_POST[$test]; 

Gracias

+2

Lo que demuestra debería funcionar, pero no estoy seguro de lo que está tratando de hacer? –

+0

Oh Dios, funciona. Otro pedazo de código lo estaba tirando. – Dietpixel

Respuesta

9
$_POST['key'] = "foo"; 
echo $_POST['key']; 

Si he entendido bien, que quieren establecer una clave $_POST.

4

Sí, sí se puede:

$postName = "test"; 
$postTest = $_POST[$postName]; 
$_POST["test"] == $postTest; //They're equal 
0

Obras tal como dijiste ...

Ejemplo:

// create an array of all the GET/POST variables you want to use 
$fields = array('salutation','fname','lname','email','company','job_title','addr1','addr2','city','state', 
       'zip','country','phone','work_phone'); 

// convert each REQUEST variable (GET, POST or COOKIE) to a local variable 
foreach($fields as $field) 
    ${$field} = sanitize($_POST[$field]); 
?> 

actualiza basándose en los comentarios y downvotes ....

no soy, como se sugiere a continuación en los comentarios bucleando todos los datos y agregando a una variable - bucle de lista predeterminada de variables y almacenándolos en variables ...

He cambiado el método para obtener la d ata

+1

Esto casi nunca debería hacerse, puedo inyectar fácilmente su código o cambiar las variables de su sistema y recopilar información del sistema modificando la cadena de consulta. – Fabrizio

+0

@Fabrizio Disculpa mi ignorancia, ¿cómo puedes inyectar mi código? ¿La matriz está en el lado del servidor? ¿Cómo es diferente de enumerar cada uno – ManseUK

+0

digamos que tiene una variable del sistema llamada '$ mysql_user', y paso en la consulta algo así como'? mysql_user = root', intentará conectarse a su servidor mysql utilizando el usuario 'root'. podría dar un error en la pantalla, brindándome incluso más información de la necesaria. Está intentando emular lo que 'register_global' solía hacer en PHP.hay una razón por la cual esto ahora está en desuso ;-) – Fabrizio

14

Si entiendo bien, quiere pasar una variable de un archivo php a otro a través de una publicación. Esto seguro es posible de varias maneras.

1. Con un formulario HTML-

<form action="target.php" method="post"> 
    <input type="text" name="key" value="foo" /> 
    <input type="submit" value="submit" /> 
</form> 

si hace clic en el botón de enviar, $_POST['key'] en target.php contendrá 'foo'.

2. Directamente desde PHP

$context = stream_context_create(array(
    'http' => array(
     'method' => 'POST', 
     'header' => "Content-type: text/html\r\n", 
     'content' => http_build_query(array('key' => 'foo')) 
    ), 
)); 
$return = file_get_contents('target.php', false, $context); 

Lo mismo que en 1. y $return contendrá todos los productos elaborados por target.php.

3. A través de AJAX (jQuery (JavaScript))

<script> 
$.post('target.php', {key: 'foo'}, function(data) { 
    alert(data); 
}); 
</script> 

Lo mismo que en 2., pero ahora data contiene la salida de target.php.