Не способный отправить cookie с file_get_contents

14
задан Ikke 2 March 2012 в 12:06
поделиться

3 ответа

Во-первых, это - вероятно, просто опечатка в Вашем вопросе, но третьими аргументами file_get_contents () должен быть Ваш потоковый контекст, НЕ массив опций. Я запустил быстрый тест с чем-то вроде этого, и все работало как ожидалось

$opts = array('http' => array('header'=> 'Cookie: ' . $_SERVER['HTTP_COOKIE']."\r\n"));
$context = stream_context_create($opts);
$contents = file_get_contents('http://example.com/test1.txt', false, $context);
echo $contents;

Ошибка указывает, что сервер возвращает 404. Попытайтесь выбрать URL от машины, на которой PHP работает а не от Вашей рабочей станции/рабочего стола/ноутбука. Может случиться так, что Ваш веб-сервер испытывает затруднения при достижении сайта, локальная машина имеет кэшируемую копию или некоторую другую сетевую странность.

Убедитесь, что Вы повторяете свой точный запрос при запущении этого теста, включая cookie, который Вы отправляете (завихрение командной строки хорошо для этого). Совершенно возможно, что рассматриваемая страница может загрузиться прекрасный в браузере без cookie, но когда Вы отправляете cookie, сайт на самом деле возвращает 404.

Удостоверьтесь, что $ _SERVER ['HTTP_COOKIE'] имеет необработанный cookie, Вы думаете, что он делает.

Если Вы - анализ экранных данных, загрузите Firefox и копию расширения LiveHTTPHeaders. Выполните все необходимые шаги для достижения безотносительно страницы, это - Вы, хотят в Firefox. Затем с помощью вывода от LiveHTTPHeaders воссоздайте тот же самый запрос requence. Включайте каждый заголовок, не только cookie.

Наконец, Завихрение PHP существует по причине. Если вообще возможный, (я не спрашиваю!) используют его вместо этого.:)

29
ответ дан 1 December 2019 в 06:43
поделиться

Удостоверьтесь, что file1.php существует на сервере. Попытайтесь открыть его в своем собственном браузере для проверки!

0
ответ дан 1 December 2019 в 06:43
поделиться

Просто из любопытства, вы пытаетесь использовать file_get_contents на странице, на которой есть место? Я помню, как пытался использовать fgc с URL-адресом, в имени которого был пробел, и хотя мой веб-браузер прекрасно его разбирал, fgc этого не делал. В итоге мне пришлось использовать str_replace , чтобы заменить "" на "% 20".

Я думаю, что это должно было быть относительно легко заметить, поскольку это сообщало бы только половину имени файла. Кроме того, я заметил в одном из этих постов, что кто-то использовал \ r \ n при определении заголовков. Имейте в виду, что PHP не любит, когда они заключаются в одинарные кавычки, но они отлично работают в двойных.

1
ответ дан 1 December 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: