Как отправить заголовки HTTP на включенную страницу в php? - PullRequest
0 голосов
/ 28 марта 2011

Мне нужно включить URL в php. Я использовал следующий код:

<? include 'http://my_server.com/some_page.jsp?test=true'; ?>

Проблема в том, что страница some_page.jsp действует по-разному в зависимости от заголовка запроса user-agent, который, как представляется, не отправляется с помощью вышеуказанного оператора include ...

Итак, как я могу заставить браузер отправлять заголовки запроса тоже на включенную страницу?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 28 марта 2011

Это плохой шаблон для использования, если он находится на вашем собственном сервере, вы должны просто включить его через относительный путь (зачем вызывать HTTP), а если это не так, вы в основном передаете ключи своему сайту черезв другой домен.

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

Не продолжать, только в ознакомительных целях ...

Если вы должны запустить полученный PHP-код (и я настоятельно советую вам этого не делать, а самое главное почему? ), вы можете eval() получить ответ.

Обновление

Вам необходимо allow_url_include включить, чтобы включить URL, и по умолчанию оно отключено.Если вы включите его, вы можете затем установить пользовательский агент с опцией user_agent.

Если вы делаете это, чтобы присоединиться к сайту php и jsp вместе, вы должны попытаться придерживаться только отправляет данные между ними, а не код для другого, чтобы работать по HTTP.

0 голосов
/ 28 марта 2011

Я бы настоятельно рекомендовал вам никогда не использовать свой код в реальной среде.Вместо этого используйте Client-URL .

Например, вы можете сделать это следующим образом:

$ch = curl_init();
// the website
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/path/to/webpage');
// this line sets up curl so the website contents will be returned
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// the user agent, for example firefox
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
$html = curl_exec($ch);

Если вам абсолютно необходимо выполнить код впоследствии, тогда выможет выполнить много проверок и eval(), но только если вам нужно.Лучшим подходом был бы какой-то словарь.

0 голосов
/ 28 марта 2011

Вы не можете установить все отправляемые заголовки HTTP, но вы можете установить отправляемую строку user-agent следующим образом:

<? 

ini_set("user_agent", $_SERVER["HTTP_USER_AGENT"]);
include 'http://my_server.com/some_page.jsp?test=true'; 

?>

Значение user_agent по умолчанию равно NULL, чтопочему вы сейчас не видите ничего отправляемого.

Это должно сработать.Обратите внимание, что если файл .jsp возвращает html-контент, а не php, вы должны использовать readfile, а не include.

0 голосов
/ 28 марта 2011

Заявление:

<? include 'http://my_server.com/some_page.jsp?test=true'; ?>

не будет действовать так, как вы ожидаете.

Выезд: HttpClient

http://scripts.incutio.com/httpclient/

Есть руководство пользователя и пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...