PHP5: Какая функция PHP выводит IP-адрес пользователя, платформу и браузер? - PullRequest
4 голосов
/ 09 апреля 2011

Из всех этих функций, которые возвращают информацию о текущих посетителях / ip , только first one , похоже, выводит:

echo $_SERVER["REMOTE_ADDR"];

echo $_SERVER["HTTP_X_FORWARDED"];
echo $_SERVER["HTTP_X_CLUSTER_CLIENT_IP"];
echo $_SERVER["HTTP_FORWARDED_FOR"];
echo $_SERVER["HTTP_FORWARDED"];

Основной вопрос: Почему другие функции ничего не выводят?

Бонусный вопрос: Существуют ли другие интересные функции , например, функция, которая выводит посетителей, использующих браузер и платформу? Также было бы полезно узнать город посетителей, любимый напиток, любимый цвет в #RGB ... :) Спасибо за любые предложения!

Ответы [ 5 ]

5 голосов
/ 09 апреля 2011
  1. Это не функции, а члены массива.
  2. Это не IP-адрес они выводят, а HTTP-заголовки (в них примечание HTTP_)
  3. IP-адрес содержит только один адрес: $_SERVER["REMOTE_ADDR"]

Почему другие функции ничего не выводят?

Поскольку эти заголовки HTTP являются необязательными.

Есть ли другие интересные функции

Конечно

print_r($_SERVER);

покажет вам их все

Примечание get_browser() функция, которая помогает вам получить более структурированную информацию из заголовка User-Agent.

1 голос
/ 09 апреля 2011

Основной ответ: на сервере вы можете выводить только ту информацию, которую дал вам браузер.Поэтому, если браузер не отправил информацию «HTTP_X_CLUSTER_CLIENT_IP», сервер и, конечно же, php не смогут ее вывести.

Кроме этого, документация $ _SERVER не содержит ничегокак "HTTP_FORWARDED".

Бонусный ответ: Из-за того, что браузер не отправляет эту информацию по умолчанию, вы должны получить их через JS и отправить их своим включением, простокак это делают инструменты отслеживания (посмотрите на piwik, это открытый код) или извлеките их из другой информации, которую вы получаете, например, $ _SERVER ['HTTP_USER_AGENT'] (см. комментарий)

1 голос
/ 09 апреля 2011

Прежде всего, вы должны использовать что-то вроде этого:

var_dump($_SERVER);

чтобы узнать, что находится в переменной $_SERVER: там вы найдете множество полезных вещей среди заголовков HTTP, отправляемых браузером.

Как, например:

  • HTTP_USER_AGENT: указывает строку агента пользователя, отправленную браузером
    • Например, у меня Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.2.16) Gecko/20110323 Ubuntu/10.04 (lucid) Firefox/3.6.16
  • и HTTP_ACCEPT_LANGUAGE: указывает на языковые предпочтения, отправленные браузером
    • Например, мои: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3


Примечание: это только показания!

  • Они могут быть подделаны (и даже содержать вредоносные данные)
  • Их там быть не может.


Затем, когда дело доходит до нахождения IP-адреса пользователя:

  • REMOTE_ADDR это элемент, который обычно содержит эту информацию
  • Но это может быть другой элемент, как правило, когда пользователь запускает прокси-сервер - отсюда перенаправленные заголовки.
1 голос
/ 09 апреля 2011

просто попробуйте, и получите то, что вы хотите:

<code>echo "<pre>";
print_r($GLOBALS);
echo "
";
1 голос
/ 09 апреля 2011

Использование $ _SERVER ['HTTP_USER_AGENT'] даст вам что-то вроде:

Mozilla / 5.0 (Macintosh; U; PPC Mac OS ИКС; ru) AppleWebKit / 418 (KHTML, например Геккон) Сафари / 417.9.3

Который вы можете использовать для работы операционной системы и браузера.

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