将$ _GET或$ _POST数据传递给使用wget运行的PHP脚本

时间:2010-12-24 17:01:12

标签: php post get wget

我有以下PHP代码行,效果很好:

  

exec('wget http://www.mydomain.com/u1.php> / dev / null&');

u1.php用于在我的服务器上执行各种类型的维护,上面的命令使它在后台运行。没问题。

但是我需要在执行之前将变量数据传递给u1.php。我想优先传递POST数据,但如果POST不是一个选项,则可以容纳GET或SESSION数据。基本上,传递的数据类型是特定于用户的,具体取决于登录到站点的用户并触发上述代码。我已经尝试将GET数据添加到URL的末尾,但这不起作用。

那么我怎样才能将数据发送到u1.php?首选POST数据,SESSION数据也可以正常工作(但我尝试了这个并且它没有获取登录用户的会话数据)。 GET将是最后的选择。

谢谢!

3 个答案:

答案 0 :(得分:2)

按照您的方式执行此操作,可能使用http_build_query

exec("wget --post-data 'a=b&c=d' http://www.mydomain.com/u1.php > /dev/null &");

但是,我很想知道你为什么选择在cURL上使用wget,或者如果文件在同一台服务器上,则直接调用它。使用wget似乎有点笨拙。

答案 1 :(得分:1)

为什么不使用cURL(如果它是一个选项)?您可以非常轻松地传递POST数据。

curl -d "your=postdata&more=postdata" http://www.mydomain.com/u1.php

答案 2 :(得分:0)

为什么不直接使用cURL实现?

$c = curl_init('http://www.mydomain.com/u1.php');
curl_setopt($c, CURL_POSTFIELDS, $post_data);
curl_exec($c);

编辑:要提交$post_data,您需要构建一个类似GET查询字符串的字符串:

$vData = array(
  'foo' => 'bar',
  'zoid' => 'frob',
  'slursh' => 'yargh',
);

$post_data = array();

foreach ($vData as $k => $v)
   {
       $post_data[] = urlencode($k) . '=' . urlencode($v);
   }

$post_data = implode('&', $post_data);