1. Si aucun serveur proxy n'est utilisé
REMOTE_ADDR = IP du client
HTTP_X_FORWARDED_FOR = Aucune valeur ou non affiché
$ip = $_SERVER['REMOTE_ADDR'];
2. Utiliser un proxy transparent
REMOTE_ADDR = Dernière IP du serveur proxy
HTTP_X_FORWARDED_FOR = vraie IP du client (lors du passage par plusieurs serveurs proxy, cette valeur est similaire : 221.5.252.160, 203.98.182.163, 203.129.72.215)
Ce type de proxy enverra également la vraie IP du client à la requête object , la véritable adresse IP ne peut pas être masquée.
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
3. Utiliser un serveur proxy anonyme ordinaire
REMOTE_ADDR = IP du dernier serveur proxy
HTTP_X_FORWARDED_FOR = IP du serveur proxy (Lors du passage par plusieurs serveurs proxy, cette valeur est similaire : 203.98.182.163, 203.98.182.163, 203.129.72.215)
Cela masque la véritable IP du client , mais le serveur saura que le client accède via le serveur proxy.
4. Utiliser un serveur proxy trompeur
REMOTE_ADDR = IP du serveur proxy
HTTP_X_FORWARDED_FOR = IP aléatoire (Lors du passage via plusieurs serveurs proxy, cette valeur est similaire : 220.4.251.159, 203.98.182.163, 203.129.72.215)
Le serveur peut s'identifier lors du passage du serveur proxy accédé, mais la fausse adresse IP envoyée au serveur cible.
5. Utilisez un proxy à haut anonymat
REMOTE_ADDR = IP du serveur proxy
HTTP_X_FORWARDED_FOR = Aucune valeur ou non affichée
Lors de l'utilisation de ce type de proxy, différents navigateurs et différents appareils renverront différentes informations d'en-tête IP, donc PHP utilise $_SERVER["REMOTE_ADDR"], $_SERVER [" HTTP_X_FORWARDED_FOR"] La valeur obtenue peut être une valeur nulle ou une valeur "inconnue".
Le code IP PHP est le suivant :
public function ip() { //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $ip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $ip = $_SERVER['REMOTE_ADDR']; } $res = preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : ''; echo $res; //dump(phpinfo());//所有PHP配置信息 }
Pour plus de connaissances sur PHP, veuillez visiter le Site Web PHP chinois !
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!