Як дізнатися ip клієнта
категорія Faq
За IP-адресою відвідувача вашого сайту можна дізнатися про нього досить багато - країну, місто, назва і email-адреса інтернет-провайдера, і т.д. Але головна цінність в тому, що IP може служити ідентифікатором користувача для серверних скриптів. Нижче описано, яким чином можна визначити IP-адресу засобами мови PHP.
Відео: Пробиваємо людини | Дізнаємося ПІБ, номер телефону, адреса проживання ...
Вам знадобиться
- Базове знання мови PHP
Відео: Як дізнатися чужий ip адресу вконтакте Як визначити ip чужого комп`ютера вконтакте
Інструкція
1
Для вилучення IP-адреси з заголовків, які присилаються на сервер запитів браузера, слід використовувати функцію getenv. Вона читає з змінних середовища зазначені їй значення. Для зберігання IP-адреси відвідувача призначена змінна з ім`ям REMOTE_ADDR. Однак клієнт може використовувати проксі-сервер, а в цьому випадку в змінної буде міститися його адресу, а зовсім не той, який вам потрібен. Дізнатися, що веб-серфер використовує проміжний IP, можна з змінної оточення з ім`ям HTTP_VIA. У неї через кому поміщаються всі адреси задіяних в ланцюжку проксі-серверів. Адреса відвідувача проміжні сервери зобов`язані розміщувати в змінну з ім`ям HTTP_X_FORWARDED_FOR, проте це повністю залежить від налаштувань проксі. Значить, щоб охопити якомога більше можливостей визначення IP-адреси, треба перевіряти вміст як мінімум трьох змінних: REMOTE_ADDR, HTTP_X_FORWARDED_FOR і ще бажано HTTP_CLIENT_IP.
2
Відео: Як дізнатися чужий ip онлайн
Об`єднати перевірку всіх трьох змінних в один рядок 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)) -
$ 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
Відео: Як дізнатися чужий IP адреса?
Залишилося об`єднати обидві рядки коду в одну функцію:
function getIP () {
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));
}