Maison  >  Article  >  développement back-end  >  Comment obtenir l'adresse IP du client en php ?

Comment obtenir l'adresse IP du client en php ?

青灯夜游
青灯夜游original
2019-10-15 13:45:383863parcourir

Comment obtenir l'adresse IP du client en php ?

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[&#39;REMOTE_ADDR&#39;];
    }
    $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!

Déclaration:
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