Как да разберете Ip на клиента

Съдържание:

Как да разберете Ip на клиента
Как да разберете Ip на клиента

Видео: Как да разберете Ip на клиента

Видео: Как да разберете Ip на клиента
Видео: как сменить IP АДРЕС В БРАУЗЕРЕ ОПЕРА 2024, Може
Anonim

Чрез IP адреса на посетител на вашия сайт можете да разберете доста много за него - държава, град, име и имейл адрес на интернет доставчика и т.н. Но основната стойност е, че IP може да служи като идентификатор на посетител за скриптове от страна на сървъра. По-долу е описано как можете да определите IP адреса с помощта на PHP.

Как да разберете ip на клиента
Как да разберете ip на клиента

Необходимо е

Основни познания по PHP

Инструкции

Етап 1

За да извлечете IP адреса от заглавията, изпратени до сървъра за заявки на браузъра, използвайте функцията getenv. Чете стойностите, посочени към него, от променливите на средата. Променлива с име REMOTE_ADDR се използва за съхраняване на IP адреса на посетителя. Клиентът обаче може да използва прокси сървър, като в този случай променливата ще съдържа адреса си, а не този, който искате. Можете да разберете, че уеб сърфистът използва междинен IP, като разгледате променливата на околната среда, наречена HTTP_VIA. Всички адреси на прокси сървърите, участващи във веригата, се поставят в нея, разделени със запетаи. Междинните сървъри трябва да поставят адреса на посетителя в променлива с име HTTP_X_FORWARDED_FOR, но това зависи изцяло от настройките на прокси сървъра. Това означава, че за да обхванете възможно най-много възможности за определяне на IP адреса, трябва да проверите съдържанието на поне три променливи: REMOTE_ADDR, HTTP_X_FORWARDED_FOR и за предпочитане

Стъпка 2

Можете да комбинирате проверката и на трите променливи в един ред на PHP код, например по следния начин:

$ ipAddr = getenv ('HTTP_CLIENT_IP') или $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') или $ ipAddr = getenv ('REMOTE_ADDR');

След като сте получили стойността на IP адреса по този начин, препоръчително е да го изчистите от възможни изкривявания и ненужни символи. Можете да използвате регулярен израз за това:

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

Стъпка 3

Остава да се комбинират двата реда код в една функция:

функция getIP () {

$ ipAddr = getenv ('HTTP_CLIENT_IP') или $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') или $ ipAddr = getenv ('REMOTE_ADDR');

връщане на изрязване (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));

}

Препоръчано: