[英]Laravel, What is best approach to capture Visitors Ip?
我正在寻找最好的支持/安全方法来捕获访问者的IP地址。
目前,我可以通过以下方法保存访问者IP
拨打电话的路线。
Route::get('/','VisitorController@multidisplay');
在多显示功能中,我正在调用另一个控制器来捕获和存储“访客IP”,例如->
public function multidisplay()
{
//calling log visitor controller
app()->call('App\Http\Controllers\LogVisitIpController@store');
return view('welcome')
->with('sliderimg', Sliderimage::all())
->with('postimg', PostImage::orderBy('created_at', 'desc')->take(3)->get())
;
}
最后是在LogVisitIpController中存储访问者的Ip的实际功能
public function store(Request $request)
{
$bla=$this->getIp();
$myvisitor = new LogVisitIp();
$myvisitor->visitorIp=$bla;
$myvisitor->save();
}
现在我有两个问题。
在其他控制器中使用像这样的控制器可以吗?
我是否应该使用另一种方法通过一个控制器捕获访问者IP?
注意:VisitorController用于将访问者的请求保存到数据库中并发送邮件,我可以收集IP并将其从访问者的请求中传递出去,但我的目的是在访问者打开我的网站或发出ping请求后立即捕获Ip。
即使您的代码实际可行,我也不建议您使用该技术。 这是您应该做的。
定义仅用于保存ips的类。 您将把真正记录IP的代码移到此处。
Class VisitIpLoggerService
{
public function storeIp(Request $request)
{
$myvisitor = new LogVisitIp();
$myvisitor->visitorIp=$request->ip();
$myvisitor->save();
}
}
然后,您将该服务注入到控制器的函数中,并像这样调用该函数。 这样,您的代码将更易于维护。
public function multidisplay(Request $request, VisitIpLoggerService $ipLogger)
{
//just call the service
$ipLogger->storeIp($request);
将此添加到您的控制器中...
'ip_address_variable' => \Request::ip();
对你来说
public function store(Request $request)
{
$bla=$this->getIp();
$myvisitor = new LogVisitIp();
$myvisitor->visitorIp=$request->ip();
$myvisitor->save();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.