Php 带 get 或 post 的 exec()

Php exec() with get or post

嗨,我有这个问题

  1. 我将 ajax post 归档 insert.php
  2. 我在 insert.php 上执行 exec() 到 send.php

我需要使用 POST 传递或使用 exec() 从 insert.php 到 send.php

获取数据

这是我的代码,但没有传递任何内容

$data = array(
    'user' => '1001',
    'area' => 'any',
    'type' => 'any',
    'max' => '100'
  );
  $query = http_build_query($data);
  shell_exec("php " . ROOT . "/send.php  " . $query . " &> /dev/null &");

在 send.php 我收到了一个简单的电子邮件,用于接收信息 print_r($_REQUEST);但我只是收到 helloArray ()

请帮忙解决任何问题

在@barmar 的帮助下

$data = array(
    'user' => '1001',
    'area' => 'any',
    'type' => 'any',
    'max' => '100'
  );
  $query = escapeshellarg(http_build_query($data));
  exec("php " . ROOT . "/mail.php  " . $query . " &> /dev/null &");

在 send.php

 parse_str($argv[1], $data);
    $data['user'];
    $data['area'];
    $data['type'];
    $data['max'];

您需要转义 $query,因为它可能包含一些对 shell.

具有特殊含义的字符
$query = escapeshellarg(http_build_query($data));

send.php中,使用$argv[1]得到$query的值。您可以使用 parse_str($argv[1], $data) 将参数值从中提取到 $data 数组中,然后您可以使用 $data['area'] 获取该参数。