Як дізнатися ip відвідувача сайту

Як дізнатися ip відвідувача сайту

Найбільш часто IP-адреса відвідувача сайту використовують для його ідентифікації. Але і крім цього за допомогою IP можна отримати чимало додаткової інформації про відвідувача — наприклад, дізнатися його інтернет-провайдера та географічне місцезнаходження. На практиці найчастіше для вилучення IP-адрес із заголовків запитів, що присилаються браузером, використовують скрипти на серверній мові PHP.

Вам знадобиться

Базове знання мови PHP

Інструкція

  1. Використовуйте вбудовану функцію getenv мови PHP для читання IP-адрес з суперглобальні масиву змінних оточення. У самому простому випадку буде достатньо прочитати змінну з назвою REMOTE_ADDR. Відповідний фрагмент PHP-коду може виглядати так:

    $ UserIP = getenv (‘REMOTE_ADDR’);
  2. Перевірки крім надісланої у запиті змінної REMOTE_ADDR і змінні HTTP_VIA і HTTP_X_FORWARDED_FOR. Якщо відвідувач використовує проксі-сервер, то проміжний адреса має бути записаний в обидві змінні — і в HTTP_VIA, і в REMOTE_ADDR. У цьому випадку дізнатися реальний IP відвідувача можна спробувати через HTTP_X_FORWARDED_FOR — в неї проксі-сервер повинен поміщати вихідний адресу. Однак це робиться далеко не завжди, і користувач має можливість підбирати «непрозорий» проксі-сервер, який не передає вихідний IP надіслав запит відвідувача. У будь-якому випадку ви повинні задіяти у своєму коді максимум способів отримати вихідний IP-адресу, додавши ще й перевірку змінної HTTP_CLIENT_IP.
  3. Об’єднайте в один рядок PHP-коду послідовну перевірку трьох змінних оточення, які можуть містити вихідний IP-адреса відвідувача. Зробити це можна, наприклад, так:

    $ UserIP = getenv (‘HTTP_CLIENT_IP’) or $ userIP = getenv (‘HTTP_X_FORWARDED_FOR’) or $ userIP = getenv (‘REMOTE_ADDR’);
  4. Видаліть з отриманого значення IP зайві символи й інший «сміття», яке може потрапити в змінні оточення. Зробити це можна, наприклад, задіявши вбудовані PHP-функції trim і preg_replace:

    $ UserIP = trim (preg_replace (‘#^([^,]+)(,.*)?#’, ‘$ 1′, $ userIP));
  5. Об’єднайте весь код в користувача функцію, щоб мати можливість звертатися до неї, а не повторювати рядка перевірки і очищення заново в різних частинах PHP-скриптів. Наприклад, так:

    function getUserIP () {

     $ UserIP = getenv (‘HTTP_CLIENT_IP’) or $ userIP = getenv (‘HTTP_X_FORWARDED_FOR’) or $ userIP = getenv (‘REMOTE_ADDR’);

     return trim (preg_replace (‘#^([^,]+)(,.*)?#’, ‘$ 1′, $ userIP));

    }