Вирішено: тільки мій ip

Останнє оновлення: 09/19/2023
Автор: PHP Sourcetrail

Звичайно, я зрозумів ваші вимоги. Ось як може виглядати ваша стаття на тему «обробка PHP і IP-адрес»:

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

Розуміння IP-адресації та PHP

Адреса Інтернет-протоколу (або IP-адреса) — це унікальний рядок чисел, розділених крапками, який ідентифікує кожен комп’ютер, який використовує Інтернет-протокол для зв’язку через мережу. У PHP, $ _СЕРВЕР є суперглобальною змінною, яка містить інформацію про заголовки, розташування сценарію та шляхи. Щоб отримати системну IP-адресу, ви можете безпосередньо використовувати $_SERVER['REMOTE_ADDR'], але це не завжди може дати очікуваний результат, особливо у випадках, коли клієнт знаходиться за проксі-сервером.

Рішення: точне визначення IP-адреси в PHP

Щоб отримати точну IP-адресу клієнта, навіть якщо він знаходиться за проксі-сервером, ми можемо використовувати заголовки HTTP_CLIENT_IP і HTTP_X_FORWARDED_FOR, які містять оригінальну IP-адресу клієнта. Нам потрібно спочатку перевірити ці заголовки, щоб переконатися, що IP-адреса не підроблена зловмисником.

Ось покрокова розбивка рішення коду PHP.

<?php
function getUserIP(){
    if(!empty($_SERVER&#91;'HTTP_CLIENT_IP'&#93;)){
        // IP address from shared Internet
        $ip = $_SERVER&#91;'HTTP_CLIENT_IP'&#93;;
    }elseif(!empty($_SERVER&#91;'HTTP_X_FORWARDED_FOR'&#93;)){
        // IP address from proxy server
        $ip = $_SERVER&#91;'HTTP_X_FORWARDED_FOR'&#93;;
    }else{
        // IP address from remote address
        $ip = $_SERVER&#91;'REMOTE_ADDR'&#93;;
    }
    return $ip;
}
$userIP = getUserIP();
echo "User's IP: " . $userIP;
?>

Пояснення коду PHP

Функція getUserIp у PHP прагне отримати IP-адресу клієнта, спочатку перевіривши заголовок HTTP_CLIENT_IP. Це часто містить оригінальну IP-адресу клієнта під час використання спільної служби Інтернету. Якщо цей заголовок порожній, буде перевірено заголовок HTTP_X_FORWARDED_FOR, який також може містити вихідну IP-адресу клієнта, надіслану проксі-сервером.

  • Якщо обидва заголовки порожні, він повертається до $_SERVER['REMOTE_ADDR'], який повертає IP-адресу сервера.
  • Після отримання IP-адреси код роздруковує її з інструкцією echo.

Цей метод є одним із найбільш надійних способів отримати IP-адресу користувача в PHP. Однак пам’ятайте, що вживайте запобіжних заходів для захисту від IP-спуфінгу. Завжди дезінфікуйте або перевіряйте IP-адреси як частину вашого протоколу безпеки.

Схожі повідомлення: