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-09-30 11:54:366094parcourir

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

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