如何在数据库中为用户设置令牌,即使在浏览器关闭后也不会过期


how to set the token in database for user never expire even after browser closed?

我一直在使用codeigner3。我想在数据库中设置cookie令牌。从而即使在浏览器关闭会话之后也不会过期。基于存储的令牌如何实现这一点?

  $cookie = array(
        'name' => 'token',
        'value' => generateRandomString() ,
        'expire' => '1209600',
        'domain' => domain() ,
        'path' => '/'
    );
    set_cookie($cookie);

正如评论中所说,您在cookie和会话之间是错误的;

  • 会话仅在服务器端,它们在浏览会话终止时结束
  • Cookie是机器存储的值,一直保存到您的时间限制

例如,如果您有以下代码:

session_start(); // Start the session
$_SESSION['username'] = "Sam Swift 웃"; // Set a value into the session
isset($_COOKIE['username']) ?: setcookie("username", $_SESSION['username'], 0); // A cookie that will last forever

当浏览器关闭时,$_SESSION['username']值将被销毁,因为服务器在浏览器打开时保存该值,而名称为username的cookie将永远保存,因为时间限制设置为0。

如果你使用谷歌浏览器,试着看看这个扩展,它可以让你查看为网站设置的cookie。

我希望这对你有帮助。

思考注意事项:

  • Cookie需要重新发送要由浏览器处理的数据,所以当你第一次设置Cookie时,将页面重新发送到服务器,它就会出现