Maison > Article > développement back-end > Comment obtenir l'adresse IP du client en php
Comment obtenir l'adresse IP du client en php
1. Si un serveur proxy n'est pas utilisé
REMOTE_ADDR = IP client HTTP_X_FORWARDED_FOR = Aucune valeur ou non affiché (apprentissage recommandé : Tutoriel vidéo PHP)
$ip = $_SERVER['REMOTE_ADDR'];
2. Utiliser un proxy transparent
REMOTE_ADDR = Dernière IP du serveur proxy
HTTP_X_FORWARDED_FOR = IP réelle 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 véritable adresse IP du client à l'objet demandeur et ne pourra pas masquer la véritable adresse IP.
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
3. Utiliser un serveur proxy anonyme ordinaire
REMOTE_ADDR = Dernière IP du 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 passe par le serveur proxy accédé.
4. Utiliser un serveur proxy trompeur
REMOTE_ADDR = IP du serveur proxy
HTTP_X_FORWARDED_FOR = IP aléatoire (Quand en passant par plusieurs serveurs proxy, cette valeur est similaire : 220.4.251.159, 203.98.182.163, 203.129.72.215)
Le serveur peut identifier l'accès via le serveur proxy, mais la fausse IP envoyée au serveur cible est .
5. Utiliser un proxy à haut anonymat
REMOTE_ADDR = IP du serveur proxy HTTP_X_FORWARDED_FOR = Aucune valeur ou non affiché
Utilisez ceci Lorsque vous utilisez différents proxys, différents navigateurs et différents appareils renverront différentes informations d'en-tête IP, donc la valeur obtenue par PHP en utilisant $_SERVER["REMOTE_ADDR"] et $_SERVER["HTTP_X_FORWARDED_FOR"] peut être une valeur nulle ou un "inconnu". " valeur.
PHP obtient le code IP comme suit :
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配置信息 }
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!