Saytınıza gələn bir ziyarətçinin IP ünvanı ilə onun haqqında çox şey öyrənə bilərsiniz - ölkə, şəhər, İnternet provayderinin adı və e-poçt ünvanı və s. Ancaq əsas dəyər, IP-nin server tərəfindəki skriptlər üçün ziyarətçi kimliyi rolunu oynaya bilməsidir. Aşağıda PHP-dən istifadə edərək IP ünvanını necə təyin edə biləcəyiniz izah olunur.
Vacibdir
PHP haqqında əsas biliklər
Təlimat
Addım 1
IP ünvanını brauzer tələbi serverinə göndərilən başlıqlardan çıxarmaq üçün getenv funksiyasından istifadə edin. Ətraf mühit dəyişənlərindən ona göstərilən dəyərləri oxuyur. Ziyarətçinin IP ünvanını saxlamaq üçün REMOTE_ADDR adlı dəyişən istifadə olunur. Bununla birlikdə, müştəri bir proxy server istifadə edə bilər, bu halda dəyişən istədiyiniz deyil, ünvanını ehtiva edəcəkdir. Veb sörfçünün HTTP_VIA adlı mühit dəyişəninə baxaraq orta IP istifadə etdiyini öyrənə bilərsiniz. Zəncirdə iştirak edən proxy serverlərin bütün ünvanları vergüllə ayrılmış şəkildə yerləşdirilir. Aralıq serverlər ziyarətçinin ünvanını HTTP_X_FORWARDED_FOR adlı dəyişənə yerləşdirməlidir, lakin bu, tamamilə proksi parametrlərindən asılıdır. Bu o deməkdir ki, mümkün qədər çox IP ünvanını müəyyənləşdirmək üçün ən azı üç dəyişənin tərkibini yoxlamalısınız: REMOTE_ADDR, HTTP_X_FORWARDED_FOR və tercihen
Addım 2
Hər üç dəyişənin yoxlanılmasını bir PHP kodunun bir sətirində birləşdirə bilərsiniz, məsələn, bu kimi:
$ ipAddr = getenv ('HTTP_CLIENT_IP') və ya $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') və ya $ ipAddr = getenv ('REMOTE_ADDR');
IP adresinin dəyərini bu şəkildə əldə etdikdən sonra onu mümkün təhriflərdən və lazımsız simvollardan təmizləmək məsləhətdir. Bunun üçün adi bir ifadə istifadə edə bilərsiniz:
$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
Addım 3
Hər iki kod xəttini bir funksiyaya birləşdirmək qalır:
funksiyası getIP () {
$ ipAddr = getenv ('HTTP_CLIENT_IP') və ya $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') və ya $ ipAddr = getenv ('REMOTE_ADDR');
return trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}