Meestal wordt het IP-adres van een sitebezoeker gebruikt om hem te identificeren. Maar daarnaast kunt u met IP veel aanvullende informatie over de bezoeker krijgen - bijvoorbeeld zijn internetprovider en geografische locatie achterhalen. In de praktijk worden server-side PHP-scripts meestal gebruikt om IP-adressen te extraheren uit de verzoekheaders die door de browser worden verzonden.
Het is nodig
Basiskennis van PHP
instructies:
Stap 1
Gebruik de ingebouwde getenv-functie van PHP om IP-adressen uit de superglobale omgevingsvariabele array te lezen. In het eenvoudigste geval is het voldoende om de variabele genaamd REMOTE_ADDR te lezen. Het corresponderende stukje PHP-code kan er als volgt uitzien: $ userIP = getenv ('REMOTE_ADDR');
Stap 2
Controleer naast de variabele REMOTE_ADDR die in het verzoek is verzonden, de variabelen HTTP_VIA en HTTP_X_FORWARDED_FOR. Als de bezoeker een proxyserver gebruikt, moet het tussenadres in beide variabelen worden vastgelegd - in zowel HTTP_VIA als REMOTE_ADDR. In dit geval kunt u proberen het echte IP-adres van de bezoeker te achterhalen via HTTP_X_FORWARDED_FOR - de proxyserver moet het originele adres erin invoeren. Dit wordt echter niet altijd gedaan en de gebruiker heeft de mogelijkheid om een "ondoorzichtige" proxyserver te selecteren die niet het oorspronkelijke IP-adres verzendt van de bezoeker die het verzoek heeft verzonden. In ieder geval moet u zoveel mogelijk manieren gebruiken om het oorspronkelijke IP-adres in uw code te krijgen door een vinkje toe te voegen voor de
Stap 3
Voeg in één regel PHP-code een sequentiële controle van drie omgevingsvariabelen samen, die het oorspronkelijke IP-adres van de bezoeker kunnen bevatten. Dit kan bijvoorbeeld als volgt worden gedaan: $ userIP = getenv ('HTTP_CLIENT_IP') OF $ userIP = getenv ('HTTP_X_FORWARDED_FOR') OF $ userIP = getenv ('REMOTE_ADDR');
Stap 4
Verwijder extra tekens en andere "vuilnis" uit de resulterende IP-waarde die in omgevingsvariabelen kan komen. Dit kan bijvoorbeeld met de ingebouwde PHP-functies TRIM en preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ gebruikersIP));
Stap 5
Combineer alle code in een aangepaste functie, zodat u ernaar kunt verwijzen in plaats van de regels voor controle en opschonen steeds opnieuw te herhalen in verschillende delen van uw PHP-scripts. Bijvoorbeeld als volgt: FUNCTIE getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') OF $ userIP = getenv ('HTTP_X_FORWARDED_FOR') OF $ userIP = getenv ('REMOTE_ADDR');
RETURN TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}