Команда GET дает два вида вывода, почему? - PullRequest
2 голосов
/ 20 апреля 2010

Я использую команду GET для получения содержимого страницы. Когда я пишу ту же команду в командной строке, это дает правильный результат, но когда я использую это в файле PHP, иногда это дает правильный результат, но иногда это дает только половину содержание, то есть только половина.

Я использую следующую команду в сценарии оболочки: -

GET http://www.abc.com/ -H "Referer:http://www.abcd.com/"

и следующие в PHP-файле: -

$data=exec('GET http://www.abc.com/ -H "Referer:http://www.abcd.com/"');
echo $data;

Теперь, пожалуйста, скажите, почему эта команда не дает полного содержимого страницы, когда я использую ее в файле php.

Ответы [ 3 ]

2 голосов
/ 20 апреля 2010

exec возвращает только последнюю строку из вывода команды. Чтобы вернуть полный вывод, передайте второй аргумент по ссылке:

exec('GET http://www.abc.com/ -H "Referer:http://www.abcd.com/"', &$data);

$data будет массивом с одним элементом на строку вывода

1 голос
/ 20 апреля 2010

Может быть проще:

$data = `GET http://www.abc.com/ -H "Referer:http://www.abcd.com/"`;
echo $data;

Предполагая, что функция shell_exec (это то, чем на самом деле является backtick) не отключена.

0 голосов
/ 20 апреля 2010

Альтернатива с чистым php:

<code>
$opts = array(
    'http'=>array(
        'method'=>"GET",
        'header'=>"Referer: <a href="http://www.abc.com/" rel="nofollow noreferrer">http://www.abc.com/</a>\r\n"
  )
);
$context = stream_context_create($opts);
$file = file_get_contents('<a href="http://www.abc.com/" rel="nofollow noreferrer">http://www.abc.com/</a>', false, $context);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...