使用与HTTP_X_FORWARDED_FOR类似的方法在laravel中获取用户IP地址 - php

我需要获取用户的IP地址”。

我发现这篇文章How to get Client Ip Address in Laravel 5.1?

上面提到的文章使用Request::ip();

但是,此方法返回我的服务器IP地址。据我从其他来源了解到,这是在站点为localhost时发生的-但是站点是托管的,并且位于服务器上。

该站点是实时在线的,但它可能引用localhost,因为该站点可能位于其自己的服务器上(我没有服务器配置方面的经验,只能知道这是不是真的)。

当我连接到数据库主机时,我也使用localhost引用,而不是使用mysql.phpmyadmin.hosting.com作为数据库主机。因此,我的猜测是,Request::ip();返回服务器ip,因为该站点以某种方式位于localhost。

但是,如果我使用$ _SERVER ['HTTP_X_FORWARDED_FOR'];我得到正确的IP地址。

现在我的最后一个问题是:使用安全吗?还有使用Laravel函数发出此请求的另一种方法吗?

据我了解,$ _ SERVER ['HTTP_X_FORWARDED_FOR']; How to get the client IP address in PHP?表示可能有安全漏洞。

我可以放心使用$_SERVER['HTTP_X_FORWARDED_FOR'];而不用担心吗?如果没有,我可以采取其他方法安全地获得用户IP地址吗?

参考方案

X-Forwarded-For的风险在于,用户可以自己创建标头,从而传递他们希望的任何IP。

解决方案是仅在REMOTE_ADDR是受信任代理的标头时信任标头。有一个Laravel package可让您强制执行此限制。

Laravel Blade模板尝试获取非对象的属性时如何返回null而不是ErrorException - php

我正在编写一些Laravel Blade模板,并且我的模型可能包含空对象。我非常想尝试获取对象属性,如果有错误,则返回null。因此,不必编写以下代码:@if ($model->child_object_that_may_be_null) {{ $model->child_object_that_may_be_null->interesti…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

Laravel 5错误报告抑制 - php

在Laravel 4中,抑制E_NOTICE消息很容易;我似乎无法做到这一点,因为如果我添加error_reporting(E_ALL ^ E_NOTICE) 它只是被覆盖的任何地方。这似乎发生在这里:(index.php)$response = $kernel->handle( $request = Illuminate\Http\Request::…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP mysqli获取查询返回的第一行的值 - php

我正在使用mysqli从数据库中获取某些数据。我正在使用的查询已设置为仅从数据库返回一行。有没有一种方法可以在不使用while循环的情况下获取该行的值?我知道一个while循环对于返回多于一行的行很有用,但是如果不需要while循环,我想避免这种情况,因为不必要的代码是不好的编程。 参考方案 是的-您可以使用:$row = $result->fetch…