8768 sujets

Développement web côté serveur, CMS

Bonjour,
Pour détecter l'IP d'un utilisateur en PHP, c'est "$_SERVER['REMOTE_ADDR']" ou "$_SERVER['HTTP_X_REAL_IP']" ? Il y a une différence ?

Pour certains utilisateurs ça affiche une IP du genre "2a01:cb12:81b7:3e70:7c2b:3488:6c51:7bae" et pour d'autre du genre "168.212.226.204" ! Comment passer de la première à la seconde méthode (en PHP de préférence ou autrement) ?

Merci !
Modérateur
Bonjour,

js_html a écrit :
Pour détecter l'IP d'un utilisateur en PHP, c'est "$_SERVER['REMOTE_ADDR']" ou "$_SERVER['HTTP_X_REAL_IP']" ? Il y a une différence ?

C'est $_SERVER['REMOTE_ADDR'] qu'il faut utiliser, et s'il y a un proxy entre l'utilisateur et le serveur, ça renverra l'adresse du proxy.

Eventuellement, certains s'amusent avec d'autres données ($_SERVER['HTTP_CLIENT_IP'], $_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['HTTP_X_REAL_IP'], etc.), mais aucune n'est fiable à 100% (par forcément remplies, ne contenant pas forcément ce qu'on attend), et surtout elles peuvent contenir du code permettant à un attaquant de rentrer : à manier avec précaution.

js_html a écrit :
Pour certains utilisateurs ça affiche une IP du genre "2a01:cb12:81b7:3e70:7c2b:3488:6c51:7bae" et pour d'autre du genre "168.212.226.204" ! Comment passer de la première à la seconde méthode (en PHP de préférence ou autrement) ?

La 1re est une adresse ipv6 et la deuxième une adresse ipv4. On ne peut pas transformer la 1re en la 2e. Il s'agit de 2 choses différentes.

Amicalement,
Bonjour,

a écrit :
C'est $_SERVER['REMOTE_ADDR'] qu'il faut utiliser, et s'il y a un proxy entre l'utilisateur et le serveur, ça renverra l'adresse du proxy.
Merci ! Smiley merci

Pour le deuxième point, "2a01:cb12:81b7:3e70:7c2b:3488:6c51:7bae" est chiffrée, c'est ça ?
Comment le déchiffrer ou le faire apparaître sous la forme de nombres séparés par un point (ex : 168.212.226.204.59.75) ?
Pourquoi certains ont des adresses ipv6 et d'autres des ipv4 ?

Merci !
Modérateur
Bonjour,

js_html a écrit :
Pour le deuxième point, "2a01:cb12:81b7:3e70:7c2b:3488:6c51:7bae" est chiffrée, c'est ça ?
Comment le déchiffrer ou le faire apparaître sous la forme de nombres séparés par un point (ex : 168.212.226.204.59.75) ?
Pourquoi certains ont des adresses ipv6 et d'autres des ipv4 ?

Ce n'est pas chiffré. C'est juste écrit en hexadécimal (pour les adresses ipv6, l'habitude est de les écrire sous forme de 8 nombres en hexadécimal séparés par des ":"). A priori, on laisse ça comme ça, car il y a pas mal de fonctions dans différents langages qui attendent ce format.

EDIT: certains ont des adresses ipv6 parce qu'ils ont des adresses ipv6 !!! Smiley smile Dans quelques dizaines d'année, peut-être qu'il n'y aura plus que des adresses ipv6.

Amicalement,
Modifié par parsimonhi (18 Mar 2021 - 11:59)
Merci !
a écrit :
Ce n'est pas chiffré. C'est juste écrit en hexadécimal (pour les adresses ipv6, l'habitude est de les écrire sous forme de 8 nombres en hexadécimal séparés par des ":"). A priori, on laisse ça comme ça, car il y a pas mal de fonctions dans différents langages qui attendent ce format.
Pour ipv4, il y a 4 nombres, et pour ipv6, il y en a 8 ? C'est ça ?


a écrit :
EDIT: certains ont des adresses ipv6 parce qu'ils ont des adresses ipv6 !!! Smiley smile Dans quelques dizaines d'année, peut-être qu'il n'y aura plus que des adresses ipv6.
Et sauriez-vous pourquoi mon PHP me donne pour un utilisateur, une IP comme "2a01:e0a:7da:6170:1d08:a608:2dff:6e2d" et pour le même utilisateur, IPLogger en donne une sous le format "80.142.2.14" ? Le même utilisateur a une ipv4 et ipv6 ?

Merci !
Modérateur
Bonjour,

IPLogger doit bricoler d'une manière différente de ton php. Il faudrait analyser tout ça de manière plus détaillée pour répondre correctement à la question.

Peut-être que dans un cas, tu as en fait l'IP d'un proxy, et dans l'autre l'IP du client.

EDIT: pour l'ipv4 et l'ipv6, oui, il y a dans un cas 4 nombres (codés chacun sur 8 bits, donc entre 0 et 255), soit 32 bits en tout, et dans l'autre 8 nombres (codés chacun sur 16 bits), soit 128 bits en tout.

Amicalement,
Modifié par parsimonhi (18 Mar 2021 - 17:59)
Effectivement, d'après https://ip-api.com/, l'ipv4 de IPLogger n'est pas celle de l'utilisateur, car elle n'est pas située au bon endroit, contrairement à l'ipv6...
Bien vu !

Merci !
Modifié par js_html (04 Apr 2021 - 16:33)
Meilleure solution