Les variables utilisées pour obtenir l'IP du client en PHP sont :
$_SERVER['HTTP_CLIENT_IP'] Ce header existe, mais il est rare, et pas nécessairement implémenté par tous les serveurs. Le client peut être truqué. (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)
$_SERVER['HTTP_X_FORWARDED_FOR'] a une définition standard et est utilisé pour identifier l'adresse IP du client après le proxy HTTP. : clientip, proxy1, proxy2. Voir http://zh.wikipedia.org/wiki/X-Forwarded-F... pour une explication détaillée. Le client peut être truqué.
$_SERVER['REMOTE_ADDR'] est fiable. C'est la dernière IP qui serre la main de votre serveur. Il peut s'agir du serveur proxy de l'utilisateur ou de son propre proxy inverse. Le client ne peut pas être falsifié.
Les paramètres pouvant être falsifiés par le client doivent être filtrés et vérifiés ! Beaucoup de gens pensent que le contenu de la variable $_SERVER est digne de confiance. En fait, ce n'est pas le cas. $_SERVER['HTTP_CLIENT_IP'] et $_SERVER['HTTP_X_FORWARDED_FOR'] proviennent tous deux de l'en-tête de la requête client.
Si vous souhaitez obtenir strictement la véritable adresse IP de l'utilisateur
Lorsque des anti-crawlers et des anti-votes sont utilisés, nous ne ferons confiance à rien de ce que le client peut falsifier. Ceci est strictement obtenu.
Il n'y a pas de CDN, les utilisateurs se connectent directement à notre serveur PHP
Dans ce cas, utilisez l'IP de négociation de la couche TCP, $_SERVER['REMOTE_ADDR']
Lors de l'utilisation de nginx pour réaliser un équilibrage de charge dans un cluster auto-construit
Dans ce cas, le serveur d'applications PHP ne peut pas être exposé au monde extérieur. Nous obtenons la véritable adresse IP dans nginx et. puis envoyez-le au serveur PHP.
location /{ proxy_set_header client-real-ip $remote_addr; }
client-real-ip peut être nommé comme vous le souhaitez. Nous transmettrons l'adresse IP de la poignée de main nginx dans la couche TCP à PHP.
Lors de l'utilisation de CDN, lors de la récupération de la source à partir du serveur PHP
CDN transmettra l'adresse IP de prise de contact du client. La stratégie de chaque entreprise est différente. Veuillez consulter la documentation CDN pour plus de détails.
Bien sûr, nous pouvons également lier l'entreprise qui nécessite une vérification stricte à un nom de domaine de deuxième niveau et utiliser notre propre serveur nginx séparément pour éviter le CDN.
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!