【发布时间】:2013-12-21 08:20:56
【问题描述】:
我有两张桌子: Userlogindetails(用户名,通过) 用户详细信息(电子邮件、用户名*)
-加粗的是PK,星号是FK
我正在尝试使用 sql 语句创建忘记密码的 PHP 页面。 用户将输入他们的电子邮件地址,sql 语句将在 Userdetails 中检查电子邮件是否正确。 然后 Userdetails 中的用户名将与 Userlogindetails 匹配以找到密码。 我需要两个陈述吗?
谢谢
【问题讨论】:
-
首先需要去掉“匹配Userlogindetails找到密码的`”。切勿存储密码,除非您正在构建密码库。
-
如果用户和他们的登录名之间存在一对一的关系(似乎是因为这里没有其他字段),为什么不简单地有一个表?
-
@GolezTrol 存储密码是典型的做法。但是,如果您的意思是永远不应该存储明文/未加密的密码,我会同意您的看法。密码应始终经过某种形式的散列/加密进行存储。
-
@MikeBrant 散列,不加密。两者有很大的不同。加密意味着您可以解密它。除了尝试找到匹配的a(不一定是your)密码外,没有去散列这样的事情。您不应该存储密码,无论是否加密。只需存储一个哈希,让用户在忘记密码时设置一个新密码。
-
是的,Adobe 最近被烧毁了,因为他们使用加密而不是散列 slashdot.org/story/13/11/05/1655225/…