基本上我有一个具有基本会话功能的登录系统,并且它在浏览器关闭时超时。我一直在接受投诉,所以我希望能够点击记住勾号,并让他们的会话持续30天。实现“记住我”功能
回答
例如,在设置$_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
在DB中USER_ID列。
然后,设置$_SESSION['user_id']
与cookie的用户保存,所以他们没有以正常的方式签署:
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
}
}
也许是明智的作品更好的安全性?
只记得在用户注销时删除cookie – NewInTheBusiness 2012-08-12 02:35:22
也许,* if * the服务器理解,信任和膨胀到会话。 – 2012-08-12 02:35:44
所以我所要做的冒充你的网站上的用户是提交一个有效的用户ID的cookie? – 2012-08-12 02:37:58
如上所述,这可以通过cookie完成。有很多tutorials,但一个好方法是必要的安全。我仍然记得,在Orkut这个长期死去的社交网站上,你可以让用户运行一些脚本窃取他的cookies,并且即使用户已经注销,该帐户也是你的。
所以这里是最好的方法。
创建用户一个cookie,hashing一些盐的用户ID,呼叫 它的用户令牌。
在您的数据库中存储与其所属用户的令牌及其 到期日期。
现在,当他的饼干用户访问,只检查哈希是否有数据库和日志的游客。
当用户注销刚刚从数据库中删除该令牌。
嗯。可能(虽然实际的会话ID计算并不重要,除了它的复杂性和稀缺性)。这或多或少是一个会话标识符,所以我想知道当我们已经有一个内置的PHP时,为什么要创建一个并行会话标识符。 – 2012-08-12 03:05:39
因为essions不是持久性cookie吗? – Shubham 2012-08-12 03:10:42
因此,使用会话ID并将其保存在数据库表中。 – 2012-08-12 03:11:25
- 1. 如何实现记住我的功能?
- 2. 在ASP.NET中实现“记住我”功能
- 3. 使用Laravel实现“记住我”功能4
- 4. Android:OAuth2 - 如何实现记住我的功能?
- 5. 如何在rails3中实现记住我的功能
- 6. 如何在Rails 3中实现“记住我”功能?
- 7. 如何在Android活动中实现'记住我'功能?
- 8. Yii记住我的功能?
- 9. Recaptch2记住我功能吗?
- 10. ASP.Net记住我功能
- 11. 以记录形式“记住我”功能
- 12. Rails记住我的功能只是记住
- 13. REST API的“记住我”功能?
- 14. '记住我'功能的最佳做法?
- 15. Zend框架记住我的功能
- 16. FOSUser - 记住我的功能问题
- 17. 在会话间记住我的功能
- 18. Symfony2 ajax登录记住我的功能
- 19. Symfony 2和记住我功能
- 20. WCF/WIF STS记住我的功能
- 21. “记住我”功能与jsf 2.0
- 22. PHP会话记住我功能
- 23. 记住我的最佳做法功能
- 24. ExtJS的:与“记住我”的功能
- 25. 记住我的功能与MVC身份
- 26. PHP会话,COOKIES和记住我功能
- 27. 登录时记住我的功能
- 28. PHP记住我功能不起作用
- 29. 记住我登录页面的功能
- 30. 正确的方式实现记住我
http://php.net/manual/en/features.cookies.php – j08691 2012-08-12 02:32:01
设置cookie一拉@ j08691的链接(不是真的,不过,因为在大多数情况下, cookie由PHP生成,而不是由站点设置)。但是,如果用户关闭了浏览器并且浏览器设置为删除所有Cookie,那么在这种情况下您可以做的事情并不多。 – 2012-08-12 02:34:58
可能的[PHP Loginsystem:Remember Me]重复(http://stackoverflow.com/questions/3128985/php-loginsystem-remember-me) – 2012-08-12 02:37:51