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

Как да разберете Ip на клиента
Как да разберете Ip на клиента
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));

}

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