Maison > développement back-end > tutoriel php > php ne peut pas obtenir la vraie adresse IP

php ne peut pas obtenir la vraie adresse IP

王林
Libérer: 2023-04-07 13:52:02
original
4305 Les gens l'ont consulté

php ne peut pas obtenir la vraie adresse IP

1. Obtenez la véritable adresse IP de l'utilisateur

 public static function getClientIp()
 {
 if (getenv('HTTP_CLIENT_IP')) {
  $ip = getenv('HTTP_CLIENT_IP');
 }
 if (getenv('HTTP_X_REAL_IP')) {
  $ip = getenv('HTTP_X_REAL_IP');
 } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
  $ip = getenv('HTTP_X_FORWARDED_FOR');
  $ips = explode(',', $ip);
  $ip = $ips[0];
 } elseif (getenv('REMOTE_ADDR')) {
  $ip = getenv('REMOTE_ADDR');
 } else {
  $ip = '0.0.0.0';
 }

 return $ip;
 }
Copier après la connexion

Remarque :

$ La différence entre _SERVER et getenv est que getenv ne prend pas en charge php exécuté en mode isapi IIS. La fonction getenv("REMOTE_ADDR") peut obtenir l'adresse IP normalement sous Apache, mais n'a aucun effet sous iis. La fonction $_SERVER['REMOTE_ADDR'] peut obtenir avec succès l'adresse IP du visiteur sous Apache, mais également sous iis.

2. À propos de REMOTE_ADDR

Cette variable obtient l'adresse IP de la "source directe". La "source directe" fait référence au client qui demande directement. l'adresse IP de fin. Dans le cas d’un serveur unique, cette IP est très précise et ne peut être falsifiée. Bien sûr, tous les programmes ne doivent pas nécessairement être des serveurs uniques. Par exemple, lorsque l'équilibrage de charge est utilisé (comme l'utilisation de haproxy ou nginx pour l'équilibrage de charge), cette adresse IP est l'adresse IP de la machine de transfert, car le processus est client->Load. Équilibrage-> ; Côté serveur. Il s'agit du serveur directement accessible par l'équilibreur de charge au lieu du client.

3. Concernant HTTP_X_FORWARDED_FOR et HTTP_CLIENT_IP

Il est impossible d'obtenir l'IP du client en utilisant directement REMOTE_ADDR sous équilibrage de charge. Par conséquent, le côté équilibrage de charge est dérivé, qui ajoute l'adresse IP du client à HEAD et l'envoie au serveur, afin que le serveur puisse obtenir la véritable adresse IP du client. Bien entendu, ce que vous appelez une contrefaçon est produit. Après tout, à l'exception des données fixes du protocole HEAD, d'autres données sont personnalisables.

Tutoriel recommandé : Tutoriel vidéo PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal