![](/img/trans.png)
[英]Getting error while updating laravel from 5.5 to 5.7 (Undefined class constant 'HEADER_CLIENT_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.