【发布时间】:2019-08-20 10:10:41
【问题描述】:
我正在寻找最受支持/最安全的方法来捕获访问者的 IP 地址。
目前我可以通过以下方法保存访问者 IP
发出呼叫的路由。
Route::get('/','VisitorController@multidisplay');
在多显示功能中,我正在调用另一个控制器来捕获和存储访客 Ip like->
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要求。
【问题讨论】:
-
您是否有任何登录系统或任何将访问您网站的特定模块的人?
-
不,这是一个单页网站。访客只能以访客身份发送请求。
-
那就没问题了。您可以使用任何方式以您想要的方式存储访问者的 IP。您已经为单个项目使用了调用模型的非常好的方法。
-
根据stackoverflow.com/a/30365349从任何其他控制器中的一个控制器调用函数是一种不好的方法我在VisitorController@multidisplay中调用contranLogVisitIpController@store。我想使用一个雄辩的模型作为中间人 b/w 两个控制器或任何其他更好的方法,如 php trait。
标签: php laravel controller ip refactoring