Rešeno: samo moj ip

Posljednje ažuriranje: 09/19/2023

Naravno, razumeo sam vaše zahteve. Evo kako bi mogao izgledati vaš članak o “PHP i IP adresama”:

Rad s IP adresama u svijetu web razvoja je uobičajena praksa, posebno kada se radi o praćenju korisnika, postavljanju autentifikacije zasnovane na IP adresi i mnogo čemu drugom. Programer zna da postoji više načina za dohvaćanje IP adrese klijenta, ali postoje neke složenosti kada se razvija iza proxyja, jer se može vratiti IP adresa servera, a ne IP adresa klijenta. Tu dolazi do izražaja snaga PHP-a, pružajući ugrađene funkcije za efikasno rješavanje takvih situacija.

Razumijevanje IP adresiranja i PHP-a

Adresa internet protokola (ili IP adresa) je jedinstveni niz brojeva odvojenih tačkama koji identificira svaki računar koji koristi internet protokol za komunikaciju preko mreže. U PHP-u, $_SERVER je superglobalna varijabla koja sadrži informacije o zaglavljima, lokaciji skripte i putanjama. Da biste dohvatili IP adresu sistema, možete direktno koristiti $_SERVER['REMOTE_ADDR'], ali to ne mora uvijek dati očekivani rezultat, posebno u slučajevima kada se klijent nalazi iza proxy servera.

Rešenje: Precizna detekcija IP adrese u PHP-u

Da bismo dobili tačnu IP adresu klijenta, čak i kada je iza proxy servera, možemo koristiti HTTP_CLIENT_IP i HTTP_X_FORWARDED_FOR zaglavlja koja sadrže originalnu IP adresu klijenta. Moramo prvo provjeriti ova zaglavlja kako bismo osigurali da zlonamjerni korisnik ne lažira IP adresu.

Ovdje je detaljna analiza rješenja PHP koda.

<?php
function getUserIP(){
    if(!empty($_SERVER&#91;'HTTP_CLIENT_IP'&#93;)){
        // IP address from shared Internet
        $ip = $_SERVER&#91;'HTTP_CLIENT_IP'&#93;;
    }elseif(!empty($_SERVER&#91;'HTTP_X_FORWARDED_FOR'&#93;)){
        // IP address from proxy server
        $ip = $_SERVER&#91;'HTTP_X_FORWARDED_FOR'&#93;;
    }else{
        // IP address from remote address
        $ip = $_SERVER&#91;'REMOTE_ADDR'&#93;;
    }
    return $ip;
}
$userIP = getUserIP();
echo "User's IP: " . $userIP;
?>

Objašnjenje PHP koda

Funkcija getUserIp u PHP-u ima za cilj da dobije IP adresu klijenta tako što prvo provjerava zaglavlje HTTP_CLIENT_IP. Ovo često sadrži originalnu IP adresu klijenta kada se koristi dijeljeni internet servis. Ako je ovo zaglavlje prazno, tada će se provjeriti zaglavlje HTTP_X_FORWARDED_FOR, koje također može sadržavati originalnu IP adresu klijenta koju je poslao proxy server.

  • Ako su oba zaglavlja prazna, vraća se na $_SERVER['REMOTE_ADDR'] koji vraća IP adresu servera.
  • Nakon što dobije IP adresu, kod ga zatim ispisuje sa echo naredbom.

Ova metoda je jedan od najpouzdanijih načina za dobijanje IP adrese korisnika u PHP-u. Međutim, zapamtite da ipak poduzmite mjere opreza za zaštitu od lažiranja IP-a. Uvijek očistite ili potvrdite IP adrese kao dio vašeg sigurnosnog protokola.

Slični postovi: