Php 如何防止每次重新加载页面时将用户数据插入数据库?
我有这个功能,我检查用户是否可以加入一个频道,然后我将这个数据插入数据库。问题是每次我重新加载页面时它都会被插入。如何防止这种情况发生Php 如何防止每次重新加载页面时将用户数据插入数据库?,php,database,laravel,Php,Database,Laravel,我有这个功能,我检查用户是否可以加入一个频道,然后我将这个数据插入数据库。问题是每次我重新加载页面时它都会被插入。如何防止这种情况发生 Broadcast::channel('chat', function ($user) { $ip = Request::ip(); $time = now(); if (auth()->check()) { UserInfo::storeUser(); return [ 'id' =>
Broadcast::channel('chat', function ($user) {
$ip = Request::ip();
$time = now();
if (auth()->check()) {
UserInfo::storeUser();
return [
'id' => $user->id,
'ip' => $ip,
'name' => $user->name,
'joined' => $time
];
}
});
基本上,您需要任何模式来确定您已经存储了该用户的信息。 DB、session,甚至auth->user对象这一个取决于用例是否可以存储此数据 以会话为例:
Broadcast::channel('chat', function ($user) {
$ip = Request::ip();
$time = now();
if (auth()->check() && !session()->has('user_id')){
UserInfo::storeUser();
session()->put('user_id',$user->id);
return [
'id' => $user->id,
'ip' => $ip,
'name' => $user->name,
'joined' => $time
];
}
});
注销时:
session()->forget('user_id')
请记住,这是一个没有太多上下文的基本示例。在数据库中创建一个会话或活动状态,以检查是否插入了用户数据。如果有数据,则不要插入相同的数据data@Regolith你能给我举个例子吗?当你第一次插入数据insert 1时,在数据库中创建一个is_活动列。然后在每次重新加载页面时检查是否处于活动状态,如果为1,则不要插入。此外,当您注销或结束会话时,请将活动状态更改为0。如果在其他时间再次使用该函数,将允许您创建新记录