Як дізнатися ip клієнта

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

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

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

Інструкція

1


Для вилучення IP-адреси з заголовків, які присилаються на сервер запитів браузера, слід використовувати функцію getenv. Вона читає з змінних середовища зазначені їй значення. Для зберігання IP-адреси відвідувача призначена змінна з ім`ям REMOTE_ADDR. Однак клієнт може використовувати проксі-сервер, а в цьому випадку в змінної буде міститися його адресу, а зовсім не той, який вам потрібен. Дізнатися, що веб-серфер використовує проміжний IP, можна з змінної оточення з ім`ям HTTP_VIA. У неї через кому поміщаються всі адреси задіяних в ланцюжку проксі-серверів. Адреса відвідувача проміжні сервери зобов`язані розміщувати в змінну з ім`ям HTTP_X_FORWARDED_FOR, проте це повністю залежить від налаштувань проксі. Значить, щоб охопити якомога більше можливостей визначення IP-адреси, треба перевіряти вміст як мінімум трьох змінних: REMOTE_ADDR, HTTP_X_FORWARDED_FOR і ще бажано HTTP_CLIENT_IP.
2
Об`єднати перевірку всіх трьох змінних в один рядок PHP-коду можна, наприклад, так:
$ IpAddr = getenv ( `HTTP_CLIENT_IP`) or $ ipAddr = getenv ( `HTTP_X_FORWARDED_FOR`) or $ ipAddr = getenv ( `REMOTE_ADDR`);
Отримавши таким способом значення IP-адреси, бажано його очистити від можливих спотворень і зайвих символів. Для цього можна використовувати регулярний вираз:
$ IpAddr = trim (preg_replace ( `# ^ ([^,] +) (,. *)? #`, `$ 1`, $ ipAddr)) -
3
Залишилося об`єднати обидві рядки коду в одну функцію:
function getIP () {

$ IpAddr = getenv ( `HTTP_CLIENT_IP`) or $ ipAddr = getenv ( `HTTP_X_FORWARDED_FOR`) or $ ipAddr = getenv ( `REMOTE_ADDR`);

return trim (preg_replace ( `# ^ ([^,] +) (,. *)? #`, `$ 1`, $ ipAddr));

}



Увага, тільки СЬОГОДНІ!


Оцініть, будь ласка статтю
Всього голосів: 167
Увага, тільки СЬОГОДНІ!