Передача данных $ _GET или $ _POST в PHP-скрипт, который запускается с помощью wget - PullRequest
3 голосов
/ 24 декабря 2010

У меня есть следующая строка кода PHP, которая прекрасно работает:

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

u1.php выполняет различные виды обслуживания на моем сервере, и приведенная выше команда делает это в фоновом режиме.Никаких проблем там нет.

Но мне нужно передать переменные данные в u1.php перед его выполнением.Я бы предпочел передать данные POST, но мог бы разместить данные GET или SESSION, если POST не вариант.Как правило, тип передаваемых данных зависит от пользователя и зависит от того, кто вошел на сайт и вызвал приведенный выше код.Я попытался добавить данные GET в конец URL-адреса, но это не сработало.

Так как еще я могу отправить данные в u1.php?Данные POST предпочтительнее, данные SESSION также будут работать (но я попробовал это, и он не взял данные сеанса вошедшего в систему пользователя).ПОЛУЧИТЕ было бы последним средством.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 24 декабря 2010

Чтобы сделать это так, как вы, вы должны сделать это, вероятно, используя http_build_query

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

Однако мне было бы интересно узнать, почему вы решили использовать wgetчерез cURL или, если файл находится на том же сервере, вызывая его напрямую.Кажется немного неуклюжим использовать для этого wget.

1 голос
/ 24 декабря 2010

Почему вы не используете cURL (если это вариант)? Вы можете легко передавать данные POST.

curl -d "your=postdata&more=postdata" http://www.mydomain.com/u1.php
0 голосов
/ 24 декабря 2010

Почему бы не использовать реализацию 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);
...