Par l'adresse IP d'un visiteur de votre site, vous pouvez en savoir beaucoup sur lui - pays, ville, nom et adresse e-mail du fournisseur d'accès Internet, etc. Mais la valeur principale est que l'adresse IP peut servir d'identifiant de visiteur pour les scripts côté serveur. Vous trouverez ci-dessous une description de la manière dont vous pouvez déterminer l'adresse IP à l'aide de PHP.
Il est nécessaire
Connaissances de base en PHP
Instructions
Étape 1
Pour extraire l'adresse IP des en-têtes envoyés au serveur de requête du navigateur, utilisez la fonction getenv. Il lit les valeurs qui lui sont spécifiées à partir des variables d'environnement. Une variable nommée REMOTE_ADDR est utilisée pour stocker l'adresse IP du visiteur. Cependant, le client peut utiliser un serveur proxy, auquel cas la variable contiendra son adresse, et non celle que vous souhaitez. Vous pouvez découvrir que l'internaute utilise une IP intermédiaire en regardant la variable d'environnement appelée HTTP_VIA. Toutes les adresses des serveurs proxy impliqués dans la chaîne y sont placées, séparées par des virgules. Les serveurs intermédiaires doivent placer l'adresse du visiteur dans une variable nommée HTTP_X_FORWARDED_FOR, mais cela dépend entièrement des paramètres du proxy. Cela signifie que pour couvrir autant de possibilités de détermination de l'adresse IP que possible, vous devez vérifier le contenu d'au moins trois variables: REMOTE_ADDR, HTTP_X_FORWARDED_FOR, et de préférence
Étape 2
Vous pouvez combiner la vérification des trois variables dans une seule ligne de code PHP, par exemple, comme ceci:
$ ipAddr = getenv ('HTTP_CLIENT_IP') ou $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') ou $ ipAddr = getenv ('REMOTE_ADDR');
Après avoir obtenu la valeur de l'adresse IP de cette manière, il est conseillé de l'effacer des éventuelles distorsions et des caractères inutiles. Vous pouvez utiliser une expression régulière pour cela:
$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
Étape 3
Il reste à combiner les deux lignes de code en une seule fonction:
fonction getIP() {
$ ipAddr = getenv ('HTTP_CLIENT_IP') ou $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') ou $ ipAddr = getenv ('REMOTE_ADDR');
return trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}