在PHP中识别已记录的用户

时间:2013-03-29 10:17:26

标签: php mysql session authorization

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

识别用户,那么密码呢?

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

这是我的解决方案,任何人都可以建议我可能更合适的解决方案吗?

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

2 个答案:

答案 0 :(得分:3)

您可以拥有一个名为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时间之后注销用户)。

现在,如果用户成功登录并希望记住,则会添加一条新记录,其中包含唯一的iduser_idremember_tokens。您还可以使用setcookie()创建一个新Cookie,其中包含您刚刚插入的随机生成的id

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

希望这有帮助

答案 1 :(得分:1)