我无法获取确定其当前位置所需的客户端IP地址。
我使用了request-> ip(),$ _SERVER ['REMOTE_ADDR'],我总是得到127.0.0.1的结果,这不是我想要的。
我做错了什么?
答案 0 :(得分:4)
frame
将为您提供客户端IP。您正在获取request->ip()
,因为您尝试从同一台计算机访问本地项目。
答案 1 :(得分:3)
有时您的客户通过代理使用您的应用程序,因此您不应该依赖$ _SERVER ['REMOTE_ADDR']。
查看此链接(对证券有点关注):
How to get the client IP address in PHP?
答案 2 :(得分:0)
我找到了一种解决方法。但是请注意,在生产之前必须进行更改!
阅读此部分:https://laravel.com/docs/5.7/requests#configuring-trusted-proxies
现在只需添加:
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array
*/
protected $proxies = '*';
现在request()-> ip()为您提供正确的ip
答案 3 :(得分:0)
您可以尝试以下方法:
function get_ip() {
$keys = array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR');
foreach ($keys as $key) {
if (array_key_exists($key, $_SERVER) === true) {
foreach (explode(',', $_SERVER[$key]) as $ip) {
if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
return $ip;
}
}
}
}
}
答案 4 :(得分:-2)
此代码($_SERVER['REMOTE_ADDR']
)的在线项目中有客户端IP地址,它将成功运行。它会尝试..