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

时间:2016-01-11 15:28:00

标签: php mysql codeigniter

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

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

    set_cookie($cookie);

1 个答案:

答案 0 :(得分:0)

正如评论中所说,你在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。

如果您使用谷歌浏览器,请尝试查看此extension,以便查看为网站设置的Cookie。

我希望这会对你有所帮助。

思考的注意事项:

  • Cookie会重新发送要由浏览器处理的数据,因此当您第一次设置它们时,请将该页面重新发送到服务器并显示