Решено: само моят ip

Последна актуализация: 09/19/2023
Автор: PHP Sourcetrail

Разбира се, разбрах вашите изисквания. Ето как би могла да изглежда вашата статия за „PHP и обработка на IP адреси“:

Работа с IP адреси в света на уеб разработката е обичайна практика, особено когато се работи с проследяване на потребители, настройка на IP базирано удостоверяване и много други. Разработчикът знае, че има множество начини за извличане на IP адреса на клиент, но има някои сложности, свързани с разработването зад прокси, тъй като може да върне IP адреса на сървъра, а не IP адреса на клиента. Това е мястото, където силата на PHP влиза в игра, предоставяйки вградени функции за справяне с такива ситуации с ефикасност.

Разбиране на IP адресирането и PHP

Адресът на интернет протокола (или IP адрес) е уникален низ от числа, разделени с точки, който идентифицира всеки компютър, използващ интернет протокола за комуникация по мрежа. В PHP, $ _SERVER е суперглобална променлива, която съдържа информация за заглавки, местоположение на скрипта и пътища. За да извлечете системния 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 адреса, кодът го отпечатва с ехо израз.

Този метод е един от най-надеждните начини за получаване на IP адрес на потребител в PHP. Все пак не забравяйте да вземете предпазни мерки, за да се предпазите от IP спуфинг. Винаги дезинфекцирайте или проверявайте IP адресите като част от вашия протокол за сигурност.

Подобни публикации:

Оставете коментар