Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何防止每次重新加载页面时将用户数据插入数据库?_Php_Database_Laravel - Fatal编程技术网

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。如果在其他时间再次使用该函数,将允许您创建新记录