За последние 24 часа нас посетили 15697 программистов и 1543 робота. Сейчас ищут 914 программистов ...

Узнать адрес сайта при обращении file_get_contents

Тема в разделе "PHP для новичков", создана пользователем VLK, 31 май 2014.

  1. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Есть сайт, на нем есть скрипт, к этому скрипту обращаются другие (сторонние) сайты при помощи file_get_contents (берется контент результата выполнения этого скрипта).

    Вопрос, как можно узнать адреса сайтов обращающие за этим скриптом?
    $_SERVER я посмотрел, но там ни чего дельного нет.
     
  2. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Успешный возврат значения функцией file_get_contents с параметром filename указывающим на протокол (прим. http://) означает, что сервер после проверки разрешительных директив php произведёт запрос методом HTTP GET (в случае указания параметра filename ~ http:// site.com/test.php).

    Соответственно, адресант запроса может быть отслежен точно также, как и адресант любого другого GET-запроса на ваш сервер. Однако, важно учитывать, что ряд заголовков, которые вы, вероятно, ожидаете увидеть в массиве $_SERVER могут не быть переданы в результате вызова этой функции на одном хосте и прийти от другого. Последнее зависит от конфигурации php на хосте-адресанте. Чтобы понять какие заголовки и параметры запроса приходят от адресанта, а какие нет, можно просто посмотреть эти запросы на адресате.

    Помимо стандартных заголовков, в запрос могут быть включены и дополнительные параметры, к примеру user_agent (в случае настройки соответствующей директивы). Также, передав корректный последний параметр в функцию file_get_contents(), сформированный функцией stream_context_create(), можно использовать и свой поток, что доступно описано в мануале.