Løst: bare min ip

Jada, jeg forsto kravene dine. Slik kan artikkelen din om "Håndtering av PHP og IP-adresser" se ut:

Arbeid med IP-adresser i en verden av webutvikling er vanlig praksis, spesielt når det gjelder brukersporing, konfigurering av IP-basert autentisering og mye mer. En utvikler vet at det er flere måter å hente en klients IP-adresse på, men det er noen kompleksiteter involvert ved utvikling bak en proxy, da den kan returnere serverens IP i stedet for klientens IP. Det er her kraften til PHP kommer inn i bildet, og gir innebygde funksjoner for å håndtere slike situasjoner med effektivitet.

Forstå IP-adressering og PHP

Internett-protokolladressen (eller IP-adressen) er en unik tallstreng atskilt med punktum som identifiserer hver datamaskin som bruker Internett-protokollen til å kommunisere over et nettverk. I PHP, $ _SERVER er en superglobal variabel som inneholder informasjon om overskrifter, skriptplassering og stier. For å hente systemets IP-adresse kan du direkte bruke $_SERVER['REMOTE_ADDR'], men det kan ikke alltid dukker opp det forventede resultatet, spesielt i tilfeller der en klient står bak en proxy-server.

Løsning: Nøyaktig IP-adressegjenkjenning i PHP

For å få den nøyaktige IP-adressen til klienten, selv når vi er bak en proxy-server, kan vi bruke HTTP_CLIENT_IP- og HTTP_X_FORWARDED_FOR-hodene som inneholder den opprinnelige IP-adressen til klienten. Vi må først sjekke disse overskriftene for å sikre at en IP-adresse ikke blir forfalsket av en ondsinnet bruker.

Her er en trinnvis oversikt over PHP-kodeløsningen.

<?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;
?>

Forklarer PHP-koden

GetUserIp-funksjonen i PHP har som mål å få klientens IP-adresse ved først å sjekke HTTP_CLIENT_IP-overskriften. Denne inneholder ofte klientens opprinnelige IP-adresse ved bruk av en delt Internett-tjeneste. Hvis denne overskriften er tom, vil den sjekke HTTP_X_FORWARDED_FOR-overskriften, som også kan inneholde klientens opprinnelige IP-adresse sendt av proxy-serveren.

  • Hvis begge overskriftene er tomme, faller den tilbake til $_SERVER['REMOTE_ADDR'] som returnerer serverens IP-adresse.
  • Etter å ha fått IP-adressen, skriver koden den ut med en ekkoerklæring.

Denne metoden er en av de mer pålitelige måtene å få en brukers IP-adresse i PHP. Husk likevel å ta forholdsregler for å beskytte mot IP-spoofing. Rengjør eller valider alltid IP-adresser som en del av sikkerhetsprotokollen din.

Relaterte innlegg:

Legg igjen en kommentar