繁体   English   中英

在 laravel 中获取客户的 IP

[英]Getting Client's IP in laravel

我是网站开发的新手。

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

我使用了request()->ip()但它每次都给了我谷歌云的 ip,因为网站在上面,在本地是 127.0.0.1。 我想获得访问我网站的客户的 ip()。 如何获得?

我用$myPublicIP = trim(shell_exec("dig +short myip.opendns.com @resolver1.opendns.com")); 在本地给我我的公共 IP 地址。 当我将我的代码上传到谷歌云时,这会起作用吗?

还有人可以告诉我$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 header 属性。

我没有使用过谷歌云,我不确定它的行为,但如果你得到的是谷歌云的 IP 而不是用户的 IP,那一定是因为它作为代理工作,它没有转发真实用户 IP .

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM