Jak Znaleźć Adres IP Klienta?

Spisu treści:

Jak Znaleźć Adres IP Klienta?
Jak Znaleźć Adres IP Klienta?

Wideo: Jak Znaleźć Adres IP Klienta?

Wideo: Jak Znaleźć Adres IP Klienta?
Wideo: Jak znaleźć adres IP kogoś + VPN 2024, Listopad
Anonim

Po adresie IP odwiedzającego Twoją witrynę możesz dowiedzieć się o nim całkiem sporo - kraj, miasto, nazwa i adres e-mail dostawcy Internetu itp. Ale główną wartością jest to, że adres IP może służyć jako identyfikator użytkownika dla skryptów po stronie serwera. Poniżej opisano, w jaki sposób można określić adres IP za pomocą PHP.

Jak znaleźć adres IP klienta?
Jak znaleźć adres IP klienta?

Czy to jest to konieczne

Podstawowa znajomość PHP

Instrukcje

Krok 1

Aby wyodrębnić adres IP z nagłówków wysyłanych do serwera żądań przeglądarki, użyj funkcji getenv. Odczytuje określone dla niego wartości ze zmiennych środowiskowych. Zmienna o nazwie REMOTE_ADDR służy do przechowywania adresu IP odwiedzającego. Jednak klient może użyć serwera proxy, w którym to przypadku zmienna będzie zawierać jego adres, a nie ten, który chcesz. Możesz dowiedzieć się, że internauta używa pośredniego adresu IP, patrząc na zmienną środowiskową o nazwie HTTP_VIA. Wszystkie adresy serwerów proxy biorących udział w łańcuchu są w nim umieszczane, oddzielone przecinkami. Serwery pośrednie muszą umieścić adres odwiedzającego w zmiennej o nazwie HTTP_X_FORWARDED_FOR, ale zależy to całkowicie od ustawień proxy. Oznacza to, że aby objąć jak najwięcej możliwości określenia adresu IP, należy sprawdzić zawartość co najmniej trzech zmiennych: REMOTE_ADDR, HTTP_X_FORWARDED_FOR, a najlepiej

Krok 2

Możesz połączyć sprawdzanie wszystkich trzech zmiennych w jedną linię kodu PHP, na przykład tak:

$ ipAddr = getenv ('HTTP_CLIENT_IP') lub $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') lub $ ipAddr = getenv ('REMOTE_ADDR');

Po uzyskaniu w ten sposób wartości adresu IP wskazane jest usunięcie go z ewentualnych zniekształceń i niepotrzebnych znaków. Możesz użyć do tego wyrażenia regularnego:

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

Krok 3

Pozostaje połączyć oba wiersze kodu w jedną funkcję:

funkcja getIP () {

$ ipAddr = getenv ('HTTP_CLIENT_IP') lub $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') lub $ ipAddr = getenv ('REMOTE_ADDR');

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

}

Zalecana: