Saltar al contenido

Pasar parámetros $_GET al trabajo cron

Luego de consultar expertos en esta materia, programadores de diversas áreas y profesores hemos dado con la solución a la pregunta y la compartimos en esta publicación.

Solución:

los $_GET[] & $_POST[] las matrices asociativas solo se inicializan cuando su secuencia de comandos se invoca a través de un servidor web. Cuando se invoca a través de la línea de comando, los parámetros se pasan en el $argv arrayigual que c.

Contiene un array de todos los argumentos pasados ​​al script cuando se ejecuta desde la línea de comandos.

Su comando sería:

* 3 * * * /path_to_script/cronjob.php username=test password=test code=1234 

Luego usaría parse_str() para configurar y acceder a los parámetros:


  string(27) "/path_to_script/cronjob.php"
  [1]=>
  string(13) "username=test"
  [2]=>
  string(13) "password=test"
  [3]=>
  string(9) "code=1234"

*/

parse_str($argv[3], $params);

echo $params['code']; // 1234

No es una respuesta directa a su pregunta, pero creo que es una mejor solución:

Si desea que nadie, excepto cron, ejecute el script, simplemente colóquelo fuera de la raíz web. De esa manera no hay acceso a través del servidor web en absoluto.

Si también necesita ejecutar el comando como un usuario especial, no use GET pero tenga un inicio de sesión de usuario y verifique una sesión iniciada (una determinada variable de sesión establecida …) e incluya el script solo en esa página.

Su secuencia de comandos de acceso público sería algo como:

session_start();

if (isset($_SESSION['user']))

  include '/path/to/script/outside/of/web-root';

else

  die('No access.');

* 3 * * * /path_to_script/cronjob.php?username=test&password=test&code=1234

Esto no funcionará

* 3 * * * /path_to_script/cronjob.php username=test password=test code=1234

Esto funciona

Además, debe usar la función parse_str () y obtener valor

$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz

Sección de Reseñas y Valoraciones

Nos encantaría que puedieras dar difusión a este artículo si lograste el éxito.

¡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 *