Maison >développement back-end >tutoriel php >Comment obtenir la véritable adresse IP du client en PHP

Comment obtenir la véritable adresse IP du client en PHP

不言
不言original
2018-07-07 14:14:5462130parcourir

Cet article présente principalement la méthode d'obtention de la véritable adresse IP du client avec PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

. Manuel recommandé : manuel d'auto-apprentissage complet de php

php propose quatre méthodes pour obtenir l'adresse IP du client. Les cinq méthodes sont

REMOTE_ADDR
HTTP_CLIENT_IP
HTTP_X_FORWARDED_FOR
HTTP_VIA

REMOTE_ADDR est l'adresse IP lorsque votre client « prend la main » avec votre serveur. Si un "proxy anonyme" est utilisé, REMOTE_ADDR affichera l'IP du serveur proxy.

HTTP_CLIENT_IP est l'en-tête HTTP envoyé par le serveur proxy. S'il s'agit d'un "proxy super anonyme", la valeur "none" est renvoyée. De même, REMOTE_ADDR sera remplacé par l'IP de ce serveur proxy.

$_SERVER['REMOTE_ADDR']; //Fin d'accès (peut être un utilisateur, peut être un proxy) IP

$_SERVER['HTTP_CLIENT_IP'] //Fin du proxy (il peut exister) et peut être falsifié)

$_SERVER['HTTP_X_FORWARDED_FOR']; //Quelle adresse IP l'utilisateur utilise comme proxy (elle peut exister et elle peut également être falsifiée)

Recommandation d'article connexe : 1.
Comment obtenir l'adresse IP de l'utilisateur en php 2.
Comment obtenir l’adresse IP du client en PHP ?
Recommandations vidéo associées : 1.
Tutoriel vidéo Dugu Jiujian (4)_PHP

Trois La valeur la différence est la suivante :

1. Lorsqu'aucun serveur proxy n'est utilisé :

REMOTE_ADDR = votre IP

HTTP_VIA = Aucune valeur ou non affichée
HTTP_X_FORWARDED_FOR = Aucune valeur ou non affiché

2 Lors de l'utilisation de serveurs proxy transparents : Proxies transparents

REMOTE_ADDR = Dernière IP du serveur proxy

HTTP_VIA = Serveur proxy IP
HTTP_X_FORWARDED_FOR = votre véritable IP Lors du passage via plusieurs serveurs proxy, cette valeur est similaire à la suivante : 203.98.182.163, 203.98.182.163, 203.129.72.215.

Ce type de serveur proxy transmet toujours vos informations à la personne que vous visitez et ne peut pas atteindre l'objectif de cacher votre véritable identité.

3. Lors de l'utilisation de serveurs proxy anonymes ordinaires : Proxies anonymes

REMOTE_ADDR = Dernière IP du serveur proxy

HTTP_VIA = IP du serveur proxy
HTTP_X_FORWARDED_FOR = Serveur proxy IP, lors du passage via plusieurs serveurs proxy, cette valeur est similaire à la suivante : 203.98.182.163, 203.98.182.163, 203.129.72.215.

Cachez votre véritable IP, mais révélez à vos visiteurs que vous utilisez un serveur proxy pour y accéder.

4. L'utilisation de serveurs proxy trompeurs : distorsion des proxys

REMOTE_ADDR = IP du serveur proxy

HTTP_VIA = IP du serveur proxy
HTTP_X_FORWARDED_FOR = IP aléatoire, lors du passage via plusieurs serveurs proxy, cette valeur est similaire à la suivante : 203.98.182.163, 203.98.182.163, 203.129.72.215.

Dites au visiteur que vous utilisez un serveur proxy, mais inventez une fausse adresse IP aléatoire au lieu de votre véritable adresse IP pour le tromper.

5. Lors de l'utilisation de serveurs proxy à haut anonymat : proxys à haut anonymat (proxys Elite)

REMOTE_ADDR = IP du serveur proxy

HTTP_VIA = Aucune valeur ou non affiché
HTTP_X_FORWARDED_FOR = Aucune valeur ou non affiché. Lors du passage via plusieurs serveurs proxy, la valeur est similaire à la suivante : 203.98.182.163, 203.98.182.163, 203.129.72.215.

Remplace complètement toutes vos informations par celles du serveur proxy, tout comme vous utilisez ce serveur proxy pour accéder directement à l'objet.

6. Exemple d'obtention de la véritable adresse IP du client :

function get_real_ip()
{
    $ip=FALSE;
    //客户端IP 或 NONE 
    if(!empty($_SERVER["HTTP_CLIENT_IP"])){
        $ip = $_SERVER["HTTP_CLIENT_IP"];
    }
    //多重代理服务器下的客户端真实IP地址(可能伪造),如果没有使用代理,此字段为空
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
        if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
        for ($i = 0; $i < count($ips); $i++) {
            if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
                $ip = $ips[$i];
                break;
            }
        }
    }
    //客户端IP 或 (最后一个)代理服务器 IP 
    return ($ip ? $ip : $_SERVER[&#39;REMOTE_ADDR&#39;]);
}
Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile. à l'apprentissage de tous. Plus Veuillez prêter attention au site Web PHP chinois pour le contenu associé !


Recommandations associées :

Code php pour compresser et décompresser des fichiers

Utilisez la bibliothèque de classes PHP PHPqrCode pour générer 2 QR code

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