0

你好我有这个问题

  1. 我将 ajax 发布到文件 insert.php
  2. 我在 insert.php 上执行 exec() 到 send.php

我需要使用 exec() 从 insert.php 传递 POST 或 GET 数据到 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'];
4

1 回答 1

1

您需要 escape $query,因为它可能包含一些对 shell 具有特殊含义的字符。

$query = escapeshellarg(http_build_query($data));

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

于 2021-04-16T19:51:12.657 回答