Obtenir l'adresse ip de l'utilisateur dans le zend framework
Comment puis-je obtenir l'adresse IP du client dans le Zend-framework 2? Ce serait la variable $_SERVER['REMOTE_ADDR'] en pur PHP, mais peut-être est intelligent Zend fonction?
L'objet de demande(s) dans ZF2 a méthode nommée getServer. Cette méthode retourne un objet de la mise en œuvre de \Zend\Stdlib\ParametersInterface. Avec cet objet, vous pouvez obtenir tout ce à partir de la valeur de $_SERVER variable.
Voici deux exemples d'utilisation de la méthode et de l'objet:
<?php
//Getting the entire params object
$servParam = $request->getServer();
$remoteAddr = $servParam->get('REMOTE_ADDR');//Getting specific variable
$remoteAddr = $request->getServer('REMOTE_ADDR');?>
Les frais généraux produits par cette approche n'est rien, mais inutile. Pour une tâche simple comme juste obtenir la Télécommande, à l'aide de la $_SERVER tableau est tout simplement mieux. Je ne peux pas être plus d'accord avec vous. Mais le but de ce site est de donner des réponses à leurs questions. Et c'est ce que nous faisons. Nous parler d'un des conseils en tant que bien, et c'est à celui qui pose la question de décider quoi faire. Véritable point contenu, cependant j'ai l'habitude de suivre le principe que les utilisateurs ne savent pas ce qu'ils veulent et doivent donc être guidé dans la bonne direction. OMI ma réponse était absent de l'évocation de la getServer() ainsi que votre réponse est absent de la mention de frais - sans rancune tho 🙂 Ne vous en faites pas ;). Mon conseil est manquant, car je ne voulais pas conseillent de ne pas l'utiliser. En fait, je vous conseille de faire l'utilise depuis le \Zend\Stdlib\Parameters est un objet de valeur et j'encourage toujours à l'aide des objets de valeur au lieu des tableaux. Plus facile à tester, en particulier celui-ci permet de spécifier la valeur par défaut... comme une question de fait, je voudrais l'utiliser dans mes contrôleurs de moi-même si j'en ai besoin 🙂 Je conseille l'utilisation du Zend approche plus de $_SERVER, car il donne une plus grande flexibilité pour les tests, il est beaucoup plus facile d'injecter un Zend objet de demande de modifier vos variables globales dans les tests unitaires.
Pour permettre l'inspection de l'en-tête HTTP_X_FORWARDED_FOR, tourner sur setUseProxy():
$remote->setUseProxy()->getIpAddress();
Les frais généraux produits par cette approche n'est rien, mais inutile. Pour une tâche comme juste obtenir la Télécommande, à l'aide de la $_SERVER tableau est tout simplement mieux. Cette classe ne regardez pas seulement à REMOTE_ADDR mais éventuellement vérifie l'ip du proxy et éventuellement filtre de confiance des procurations. Si votre configuration de serveur est telle que vous ne pouvez pas compter sur remote_addr la "surcharge" d'un objet n'est rien par rapport aux gains. Il ne regarde REMOTE_ADDR, et le proxy cocher est désactivée par défaut. Mais c'est une fonctionnalité intéressante à connaître.
Le problème avec cela est que de $_SERVER['REMOTE_ADDR'] n'est pas toujours fiable. Que faire si l'utilisateur est derrière un proxy, et l'IP est illustré par HTTP_X_FORWARDED_FOR en-tête? Ne soyez pas aussi rapide pour condescendre. Si vous écoutez l'utilisateur en question peut-être vous n'avez jamais aswer. 🙂 Si vous vérifiez la date de cette question, que vous n'auriez jamais poster un commentaire stupide comme ça. La raison pour laquelle je ne suis pas supprimer ma réponse est parce que le gars ci-dessus vous a un commentaire gentil avec beaucoup de upvotes. Tout le monde est faux à la fois - c'était l'une des rares fois où j'ai donné une mauvaise réponse. Pas de honte à admettre que, c'est pourquoi il n'est pas supprimé. Facile en bas de l'homme! juste un commentaire!
L'objet de demande(s) dans ZF2 a méthode nommée
getServer
. Cette méthode retourne un objet de la mise en œuvre de\Zend\Stdlib\ParametersInterface
. Avec cet objet, vous pouvez obtenir tout ce à partir de la valeur de $_SERVER variable.Voici deux exemples d'utilisation de la méthode et de l'objet:
$_SERVER
tableau est tout simplement mieux.Je ne peux pas être plus d'accord avec vous. Mais le but de ce site est de donner des réponses à leurs questions. Et c'est ce que nous faisons. Nous parler d'un des conseils en tant que bien, et c'est à celui qui pose la question de décider quoi faire.
Véritable point contenu, cependant j'ai l'habitude de suivre le principe que les utilisateurs ne savent pas ce qu'ils veulent et doivent donc être guidé dans la bonne direction. OMI ma réponse était absent de l'évocation de la
getServer()
ainsi que votre réponse est absent de la mention de frais - sans rancune tho 🙂Ne vous en faites pas ;). Mon conseil est manquant, car je ne voulais pas conseillent de ne pas l'utiliser. En fait, je vous conseille de faire l'utilise depuis le
\Zend\Stdlib\Parameters
est un objet de valeur et j'encourage toujours à l'aide des objets de valeur au lieu des tableaux. Plus facile à tester, en particulier celui-ci permet de spécifier la valeur par défaut... comme une question de fait, je voudrais l'utiliser dans mes contrôleurs de moi-même si j'en ai besoin 🙂Je conseille l'utilisation du Zend approche plus de $_SERVER, car il donne une plus grande flexibilité pour les tests, il est beaucoup plus facile d'injecter un Zend objet de demande de modifier vos variables globales dans les tests unitaires.
OriginalL'auteur Stoyan Dimov
Vous pouvez utiliser le
Zend\Http\PhpEnvironment\RemoteAddress
classe pour obtenir l'adresse ip du client.Voir http://framework.zend.com/apidoc/2.1/classes/Zend.Http.PhpEnvironment.RemoteAddress.html.
Remarque:
Pour permettre l'inspection de l'en-tête
HTTP_X_FORWARDED_FOR
, tourner sursetUseProxy()
:$_SERVER
tableau est tout simplement mieux.Cette classe ne regardez pas seulement à REMOTE_ADDR mais éventuellement vérifie l'ip du proxy et éventuellement filtre de confiance des procurations. Si votre configuration de serveur est telle que vous ne pouvez pas compter sur remote_addr la "surcharge" d'un objet n'est rien par rapport aux gains.
Il ne regarde REMOTE_ADDR, et le proxy cocher est désactivée par défaut. Mais c'est une fonctionnalité intéressante à connaître.
OriginalL'auteur radnan
Grand Secret:
Ne réinventez pas déjà chose facile!
$_SERVER['REMOTE_ADDR']
n'est pas toujours fiable. Que faire si l'utilisateur est derrière un proxy, et l'IP est illustré parHTTP_X_FORWARDED_FOR
en-tête? Ne soyez pas aussi rapide pour condescendre.Si vous écoutez l'utilisateur en question peut-être vous n'avez jamais aswer. 🙂
Si vous vérifiez la date de cette question, que vous n'auriez jamais poster un commentaire stupide comme ça. La raison pour laquelle je ne suis pas supprimer ma réponse est parce que le gars ci-dessus vous a un commentaire gentil avec beaucoup de upvotes. Tout le monde est faux à la fois - c'était l'une des rares fois où j'ai donné une mauvaise réponse. Pas de honte à admettre que, c'est pourquoi il n'est pas supprimé.
Facile en bas de l'homme! juste un commentaire!
OriginalL'auteur Sam