Obtenir l'adresse IP de l'utilisateur en PHP

Subodh Poudel 30 janvier 2023
PHP
  1. Utilisez $_SERVER['REMOTE_ADDR'] pour trouver l’adresse IP de l’utilisateur en PHP
  2. Utilisez $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] et $_SERVER['HTTP_X_FORWARDED_FOR'] pour trouver l’adresse IP de l’utilisateur
  3. Utilisez l’opérateur ternaire et la fonction isset() pour trouver l’adresse IP de l’utilisateur
Obtenir l'adresse IP de l'utilisateur en PHP

Nous allons introduire un moyen d’accéder à l’adresse IP de l’utilisateur depuis un serveur en PHP en utilisant la super variable globale $_SERVER avec REMOTE_ADDR comme seul élément du tableau. Il est utilisé comme $_SERVER['REMOTE_ADDR'].

Nous allons démontrer une autre façon d’accéder à l’adresse IP de l’utilisateur en PHP en utilisant l’expression conditionnelle pour vérifier si les adresses IP de l’utilisateur proviennent d’Internet partagé, d’un proxy ou est la véritable adresse IP. Cette méthode utilise des éléments de tableau comme HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR et REMOTE_ADDR.

Nous allons vous montrer une méthode abrégée pour obtenir l’adresse IP de l’utilisateur en PHP en utilisant l’opérateur ternaire et la fonction isset(). Cette méthode utilise également les éléments du tableau comme HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR et REMOTE_ADDR dans la super variable globale $_SERVER.

Utilisez $_SERVER['REMOTE_ADDR'] pour trouver l’adresse IP de l’utilisateur en PHP

Nous pouvons utiliser l’expression $_SERVER['REMOTE_ADDR'] pour trouver l’adresse IP à partir de laquelle l’utilisateur accède à la page courante. $_SERVER est la variable super globale en PHP, et elle prend une variété d’éléments de tableau comme arguments. Nous utilisons le REMOTE_ADDR comme élément de tableau dans la variable $_SERVER pour accéder à l’adresse IP réelle du client. Notez que $_SERVER['REMOTE_ADDR'] ne donne pas toujours l’adresse IP correcte du client dans tous les cas. Nous discuterons des autres cas ci-dessous. Assurez-vous que votre API serveur (SAPI) est bien configurée pour que l’expression ci-dessus renvoie la véritable adresse IP de la connexion.

Dans l’exemple ci-dessous, le localhost est utilisé comme serveur. Ainsi, il renvoie l’adresse IP de bouclage. Pour en savoir plus sur l’adresse de bouclage, veuillez vous reporter ici. Supposons que l’URL du script PHP suivant soit http://localhost/index.php. Il affiche l’adresse IP de la machine locale sous la forme ::1. ::1 est la représentation IPv6 du localhost.

Par exemple, assignez le $_SERVER['REMOTE_ADDR'] à une variable ip_addr. Ensuite, imprimez la variable en utilisant la commande echo.

Exemple de code:

# php 7.x
<?php
$ip_add = $_SERVER['REMOTE_ADDR'];
echo "The user's IP address is - ".$ip_add;
?>

Production:

The user's IP address is - ::1

Utilisez $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] et $_SERVER['HTTP_X_FORWARDED_FOR'] pour trouver l’adresse IP de l’utilisateur

On peut utiliser les éléments du tableau de la variable superglobale $_SERVER comme $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] et $_SERVER['HTTP_X_FORWARDED_FOR'] pour trouver l’adresse IP de l’utilisateur en PHP. Utilisez $_SERVER['REMOTE_ADDR'] pour trouver la véritable adresse IP de l’utilisateur. Utilisez $_SERVER['HTTP_CLIENT_IP'] pour trouver l’adresse IP lorsque l’utilisateur accède à la page à partir d’Internet partagé. Utilisez $_SERVER['HTTP_X_FORWARDED_FOR'] pour trouver l’adresse IP lorsque l’utilisateur utilise un proxy pour accéder à la page Web. Notez que les en-têtes comme HTTP_X_FORWARDED_FOR et HTTP_CLIENT_IP peuvent être usurpés car ils peuvent être définis par n’importe qui. Parfois, ils peuvent ne pas représenter la véritable adresse IP du client.

Par exemple, utilisez la fonction empty() pour vérifier si le $_SERVER['HTTP_CLIENT_IP'] contient quelque chose. S’il contient, affectez la valeur dans la variable $ip et imprimez i.
Encore une fois, effectuez un contrôle sur $_SERVER['HTTP_X_FORWARDED_FOR'] en conséquence et attribuez la valeur et imprimez-la si elle existe. Effectuez une opération similaire sur $_SERVER['REMOTE_ADDR'].

Dans l’exemple ci-dessous, $_SERVER['REMOTE_ADDR'] renvoie l’adresse IP car l’utilisateur n’utilise pas de proxies ou de connexion internet partagée. Consultez le Manuel PHP pour en savoir plus sur le tableau $_SERVER.

Exemple de code:

#php 7.x
<?php if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    echo $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    echo $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    echo $ip = $_SERVER['REMOTE_ADDR'];
}
?> 

Production:

 ::1

Utilisez l’opérateur ternaire et la fonction isset() pour trouver l’adresse IP de l’utilisateur

Nous pouvons utiliser une méthode abrégée pour trouver l’adresse IP de l’utilisateur en PHP en utilisant l’opérateur ternaire. Dans cette méthode, la méthode isset() vérifie si le tableau contient les éléments spécifiés ou les fichiers d’en-tête.

Par exemple, utilisez la fonction isset() pour vérifier si le tableau contient HTTP_CLIENT_IP. Si la condition est vraie, HTTP_CLIENT_IP est défini. Ensuite, si la condition échoue, la fonction isset() est utilisée pour vérifier si le tableau contient HTTP_X_FORWARDED_FOR. De même, si la condition est vraie, HTTP_X_FORWARDED_FOR est positionné, et REMOTE_ADDR est positionné lorsque la condition échoue.

Dans l’exemple ci-dessous, le client n’utilise pas de proxy ou d’Internet partagé. Par conséquent, le paramètre $_SERVER['REMOTE_ADDR'] est exécuté. Veuillez consulter les MSDN Web Docs pour en savoir plus sur l’opérateur ternaire.

Exemple de code:

#php 7.x
<?php
$ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
echo "The user IP Address is - ". $ip;
?>

Production:

The user IP Address is - ::1
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn