Saltar al contenido

¿Cómo puedo pasar parámetros desde la línea de comando a $_POST en un script PHP?

Salvador, parte de este equipo, nos ha hecho el favor de crear esta crónica ya que conoce a la perfección dicho tema.

Solución:

Simplemente inserte las siguientes líneas al comienzo de su script:

/* If started from the command line, wrap parameters to $_POST and $_GET */
if (!isset($_SERVER["HTTP_HOST"])) 
  parse_str($argv[1], $_GET);
  parse_str($argv[1], $_POST);

Este pequeño fragmento de código funciona (puedes decidir si quieres usar $_GET o $_POST o, como lo necesitaba yo, ambos).

Después de cambiar su script, puede llamarlo desde la línea de comando pasando sus argumentos:

php yourscript.php 'arg1=x&arg2=y'

Eso no es fácil de hacer. Puedes invocar el php-cgi binario y canalice una solicitud POST falsa. Pero deberá configurar una gran cantidad de variables de entorno CGI:

echo 'var1=123&var2=abc' | REQUEST_METHOD=POST  SCRIPT_FILENAME=script.php REDIRECT_STATUS=CGI CONTENT_TYPE=application/www-form-urlencoded php-cgi 

Nota: Insuficiente, no funciona así. Pero algo así…


Sin duda, es más fácil si solo parchea el script y deja que cargue el $_POST array de una variable de entorno predefinida.

$_POST = parse_url($_SERVER["_POST"]);

Entonces puedes invocarlo como _POST=var=123 php script.php por simplicidad.

curl --data "name=ii" "param1=value1¶m2=value2" http://test.com/sample.php

Puntuaciones y reseñas

Si aceptas, tienes la libertad de dejar una reseña acerca de qué te ha impresionado de esta división.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *