J'ai utilisé $ _SERVER ['REMOTE_ADDR'] et il renvoie l'adresse IP du client (adresse IP à partir de laquelle l'utilisateur consulte la page en cours) mais à présent (et même code) il renvoie adresse IP de l'hôte (j'ai vérifié l'adresse IP avec l'adresse IP). problème est avec l'hôte ou quoi? merci.
Répondre
Vous devez d'abord demander HTTP_X_FORWARDED_FOR
et si elle n'est pas affectée, utilisez REMOTE_ADDR
.
j'utilise HTTP_X_FORWARDED_FOR à l'heure actuelle et il renvoie l'adresse IP correcte. mais pourquoi problème avec REMOTE_ADDR? – imez
Parce qu'il existe un proxy entre vous et le serveur et vous obtenez l'adresse du proxy en tant que REMOTE_ADDR. HTTP_X_FORWARDED_FOR est l'adresse IP du client utilisant le proxy. –
@imez: Comme @Rosh a déjà souligné qu'il doit y avoir un proxy entre vous et le serveur et si vous interrogez 'REMOTE_ADDR' vous obtiendrez l'adresse IP du serveur proxy. Si vous vérifiez d'abord 'HTTP_X_FORWARDED_FOR ', alors le proxy remplira la plupart du temps l'adresse IP' real'. – James
Je dois mentionner que la clé du tableau est sensible à la casse et doit être en majuscules:
var_dump($_SERVER['remote_addr']);
echo "\n";
var_dump($_SERVER['REMOTE_ADDR']);
Sortie:
Notice: Undefined index: remote_addr in /home/adam/public_html/2011/01/04/foo.php on line 3
NULL
string(15) "10.0.1.51"
je serais var_dump($_SERVER)
juste pour évaluer l'état de votre monde, et partir de là.
de @ James
Par défaut, le client IP est en $ _SERVER [ 'REMOTE_ADDR de']. Lorsque l'utilisateur entre votre site à l'aide d'un serveur PROXY (passerelle HTTP), il vous indique à qui il envoie un proxy (HTTP_X_FORWARDED_FOR) et lui donne son propre proxy IP dans $ _SERVER ['REMOTE_ADDR'].
Les proxies anonymes omettent HTTP_X_FORWARDED_FOR ou vous mentent simplement. Savoir que vous avez un vrai client IP n'est pas possible.
Je l'ai dit dans mon commentaire sur ma réponse. Ce n'est jamais une * garantie * que la vraie adresse IP est dans HTTP_X_FORWARDED_FOR mais comme je l'ai dit, la plupart du temps c'est. – James
@James: Vous êtes juste plus rapide que moi ;-) - et corrigez –
et si ça se passe sur localhost? comment sais-je que j'utilise proxy (que je n'utilise sûrement pas)? –
- 1. comment PHPUnit Test $ _SERVER [ 'REMOTE_ADDR']
- 2. Fiabilité de PHP $ _SERVER ['REMOTE_ADDR']
- 3. nginx prepare set_proxy_header pour php $ _SERVER ['REMOTE_ADDR']
- 4. soudainement $ _SERVER ['REMOTE_ADDR'] est retourné 10.10.10.10 php
- 5. est-il nécessaire de valider $ _SERVER ['REMOTE_ADDR']?
- 6. PHP -> $ _SERVER ['REMOTE_ADDR' et Octets
- 7. Peut-on faire confiance à $ _SERVER ['REMOTE_ADDR']?
- 8. php $ _SERVER [ 'REMOTE_ADDR'] ne fonctionne pas correctement sur Windows 7
- 9. Est-ce que $ _SERVER ['REMOTE_ADDR'] est digne de confiance?
- 10. "Garbage" adresse IP avec des deux-points dans $ _SERVER ['REMOTE_ADDR'] pour certains clients
- 11. $ _SERVER [ 'PHP_SELF'] Problème avec mode_rewrite .htaccess
- 12. CakePHP 1.3: $ _SERVER ['DOCUMENT_ROOT'] Problème
- 13. qui à utiliser: REMOTE_ADDR ou SERVER_ADDR
- 14. $ _SERVER ['argv'] avec le problème HTTP GET et CLI
- 15. Définition d'une valeur $ _SERVER Php ($ _SERVER ['something']) avec Apache .htaccess
- 16. remote_addr ne pas retourner l'adresse IPv4
- 17. Null Référence obtenue REMOTE_ADDR
- 18. PHP $ _SERVER [ 'REMOTE_HOST'] retourne :: 1
- 19. get $ _SERVER ['HTTP_X_REQUESTED_WITH'] avec iframe
- 20. Comment implémenter le service basé sur la localisation dans mon application Web? sauf $ _SERVER ['REMOTE_ADDR'] .. En PHP
- 21. PHP: $ _SERVER ['REDIRECT_URL'] vs $ _SERVER ['REQUEST_URI']
- 22. REMOTE_ADDR vide, non inclus dans le tableau SERVER
- 23. 404 Gestion des erreurs avec $ _SERVER ['REQUEST_URI']
- 24. $ _SERVER ['REQUEST_URI']
- 25. $ _SERVER question?
- 26. PHP REMOTE_ADDR et sessions sécurisées
- 27. Différence entre REMOTE_HOST et REMOTE_ADDR
- 28. $ _SERVER [QUERY_STRING] se copiant
- 29. ServerAlias influence $ _SERVER ['SERVER_NAME']?
- 30. $ _SERVER ['_'] équivalent sous Windows
Vous ne le visiteriez pas de votre hôte par hasard? – TJHeuvel
Utilisez-vous une sorte de proxy? – Gumbo
no. J'ai vérifié plusieurs fois. Je n'utilise pas de proxy – imez