php - 在 PHP 中识别登录用户

标签 php mysql session authorization

我一直在阅读有关登录、存储密码和用户名的内容。 在 cookie 中存储密码是强烈反对。 所以我选择只在 cookie 中存储用户名,我想这很好。我将它存储在 cookie 中,这样我就可以轻松访问它并处理“记住我”选项。 但是,如果我想通过 SELECT * FROM databse WHERE username='$_COOKIE[]' AND password=''

来识别用户,那么密码呢?

我在考虑SESSION。我可以在 session 中存储密码,不安全但很好。但问题是当用户关闭浏览器并重新打开它时会发生什么。他们将保持登录状态,但 session 将消失,所以每次我都必须检查是否设置了 SESSION[pass],如果没有,从数据库中选择它并设置它。

这是我的解决方案,有人可以建议我更合适的解决方案吗?

事实是,没有 super 安全的系统,如果有人真的想闯入,他们就会成功。

最佳答案

您可以有一个名为 remember_tokens 的表,其结构如下:

  id         |         user_id              |        created
------------------------------------------------------------------------
f129ea9c     |            1                 |     2-3-2013 12:31:51
e9ac8aa0     |            2                 |     2-4-2013 08:21:13

id 有一些唯一的 id,比如 UUID 或随机生成的字符串。 user_id 是要记住的用户的id。 created 是创建记录的时间(因此您可以在 X 时间后注销用户)。

现在,如果用户成功登录并希望被记住,您可以添加一条具有唯一id 和他的user_id 的新记录到remember_tokens。您还可以使用 setcookie() 创建一个新的 cookie,它将包含您刚刚插入的随机生成的 id

现在,当用户下次请求该站点时,您会看到他存储了 remember cookie。您获取该记录,检查它是否尚未过期并使用 user_id 列登录适当的用户。这样,您就不会在 cookie 中存储敏感信息。

希望对你有帮助

关于php - 在 PHP 中识别登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15701297/

相关文章:

c# - Silverlight 独立存储最佳实践?

php - session 可以在本地主机上运行,​​但不能在服务器上运行(Ipage 等..)

php - 更好的 Propel 查询

php - MySQL 对两列进行选择和排序

php - 使用 if 语句显示 JOIN 的多个结果

php - Mysql缓存设置: How to test on website

python - 如何在aiohttp中实现redis session过期

php - MySQL 语法错误 - 不确定问题

php - 如何在 PHP 中取消设置 cookie?

c# - Linq 和 Entity Framework 在非主键值上不同