Най-често за идентификацията му се използва IP адресът на посетител на сайта. Но освен това, използвайки IP, можете да получите много допълнителна информация за посетителя - например да разберете неговия доставчик на интернет и географското местоположение. На практика PHP скриптове от страна на сървъра най-често се използват за извличане на IP адреси от заглавките на заявките, изпратени от браузъра.
Необходимо е
Основни познания по PHP
Инструкции
Етап 1
Използвайте вградената функция на PHP getenv, за да четете IP адреси от масива от променлива среда на суперглобалната среда. В най-простия случай ще бъде достатъчно да прочетете променливата с име REMOTE_ADDR. Съответната част от PHP кода може да изглежда така: $ userIP = getenv ('REMOTE_ADDR');
Стъпка 2
В допълнение към променливата REMOTE_ADDR, изпратена в заявката, проверете променливите HTTP_VIA и HTTP_X_FORWARDED_FOR. Ако посетителят използва прокси сървър, тогава междинният адрес трябва да бъде записан и в двете променливи - и в двете HTTP_VIA и REMOTE_ADDR. В този случай можете да опитате да разберете истинския IP на посетителя чрез HTTP_X_FORWARDED_FOR - прокси сървърът трябва да постави оригиналния адрес в него. Това обаче не винаги се прави и потребителят има възможност да избере "непрозрачен" прокси сървър, който не предава оригиналния IP на посетителя, изпратил заявката. Във всеки случай трябва да използвате възможно най-много начини да получите оригиналния IP адрес във вашия код, като добавите проверка за променливата
Стъпка 3
Обединете в един ред PHP код последователна проверка на три променливи на средата, която може да съдържа оригиналния IP адрес на посетителя. Това може да се направи например по следния начин: $ userIP = getenv ('HTTP_CLIENT_IP') ИЛИ $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ИЛИ $ userIP = getenv ('REMOTE_ADDR');
Стъпка 4
Премахнете излишните символи и други "боклуци" от получената IP стойност, която може да попадне в променливите на околната среда. Това може да се направи, например, като се използват вградените PHP функции TRIM и preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
Стъпка 5
Комбинирайте целия код в персонализирана функция, така че да можете да се позовавате на него, вместо да повтаряте линиите за проверка и почистване отново и отново в различни части на вашите PHP скриптове. Например, по следния начин: FUNCTION getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') ИЛИ $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ИЛИ $ userIP = getenv ('REMOTE_ADDR');
ВРЪЩАНЕ НА ОТПРАВКА (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}