Клиенттің Ipін қалай білуге болады

Мазмұны:

Клиенттің Ipін қалай білуге болады
Клиенттің Ipін қалай білуге болады

Бейне: Клиенттің Ipін қалай білуге болады

Бейне: Клиенттің Ipін қалай білуге болады
Бейне: "Клиенттің" құқығын білесіз бе? 2024, Мамыр
Anonim

Сіздің сайтыңызға кірушінің IP-мекен-жайы бойынша сіз ол туралы көп нәрсе біле аласыз - ел, қала, Интернет-провайдердің аты және электрондық пошта мекен-жайы және т.б. Бірақ басты мәні IP-нің серверлік сценарийлер үшін келуші идентификаторы бола алатындығында. Төменде PHP көмегімен IP мекенжайды қалай анықтауға болатындығы сипатталған.

Клиенттің 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 = кесу (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));

3-қадам

Кодтың екі жолын да бір функцияға біріктіру қалады:

getIP () функциясы {

$ ipAddr = getenv ('HTTP_CLIENT_IP') немесе $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') немесе $ ipAddr = getenv ('REMOTE_ADDR');

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

}

Ұсынылған: