微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在laravel中获取客户的IP

如何解决在laravel中获取客户的IP

我是网站开发的新手。

我需要捕获客户端的IP地址。 我检查了类似的问题https://stackoverflow.com/questions/33268683/how-to-get-client-ip-address-in-laravel-5 但听不懂。

我使用了request()->ip(),但是每次访问网站时它都会为我提供Google Cloud的IP,而在本地则是127.0.0.1。 我想获得访问我网站的客户的ip()。 如何获得?

我使用了$myPublicIP = trim(shell_exec("dig +short myip.opendns.com @resolver1.opendns.com"));,它在本地为我提供了公共IP地址。当我将代码上传到Google Cloud上时,此功能有效吗 ?

还有人可以告诉我$myPublicIP = trim(shell_exec("dig +short myip.opendns.com @resolver1.opendns.com"));该命令如何工作吗?

解决方法

此行:

$myPublicIP = trim(shell_exec("dig +short myip.opendns.com @resolver1.opendns.com"));

不检查访问者IP。您正在从命令运行程序(又名您/您的服务器)检查IP。

现在,$request->ip()仅读取REMOTE_ADDR标头属性。

我还没有使用过Google Cloud,也不确定它的行为,但是如果您获得的是Google Cloud的IP而不是用户的IP,那一定是因为它正在充当代理并且没有转发真实用户IP。

我想应该有一种方法可以告诉Google Cloud根据请求转发访问者IP。

,

如果您使用的是Google Cloud的负载均衡器,我相信您可以从$_SERVER['X-Forwarded-For']访问转发的IP地址。

https://cloud.google.com/load-balancing/docs/https#x-forwarded-for_header

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。