基本上,我有一个具有基本会话功能的登录系统,它在浏览器关闭时超时。我一直收到关于这方面的投诉,所以我希望能够让一些人点击“记住”,并让他们的会话持续30天。
发布于 2012-08-12 10:34:25
例如,在设置$_SESSION['user_id']的同时设置cookie。如下所示:
$token = hash('md5',$_SESSION['user_id'] . time() . 'salt');
setcookie('token', $token, time() + (3600 * 24 * 30));
setcookie('user_id', $_SESSION['user_id'], time() + (3600 * 24 * 30)); // Cookie expires in 30 days将$token保存在数据库中的user_id行中。
然后为保存了cookies的用户设置$_SESSION['user_id'],这样他们就不必以正常方式登录:
if (!isset($_SESSION['user_id']) {
if (isset($_COOKIE['user_id']) && isset($_COOKIE['token']) {
$saved_token = SELECT token FROM users table WHERE userID = $_COOKIE['user_id'];
if ($_COOKIE['token'] == $saved_token) {
$_SESSION['user_id'] = $_COOKIE['user_id'];
} else log out
}
} else log out
}
}也许这在安全性方面效果更好呢?
发布于 2012-08-12 10:52:05
如上所述,这可以通过cookie来完成。虽然有很多tutorials,但对于安全性来说,一个好的方法是必要的。我还记得,在Orkut,一个已经消亡很久的社交网站,你可以让用户运行一些脚本,窃取他的cookies和viola,即使用户已经注销,帐户也是你的。
所以这里是一个最好的方法。
https://stackoverflow.com/questions/11919254
复制相似问题