-3

我当前的系统是这样工作的:

注册

  1. 用户输入他想要使用的电子邮件。
  2. 用户键入密码。
  3. 用户点击确定,然后电子邮件和密码将通过 javascript 通过电子邮件发送到我的电子邮件帐户
  4. 我检查了我的电子邮件,并找到了用户的电子邮件和密码。
  5. 我将电子邮件和密码放入我的 mysql 数据库。我还在我的数据库中输入了一个随机 ID

在登录

  1. 用户键入他的电子邮件和密码。
  2. 如果密码正确,用户会收到一封使用 javascript 发送给他的电子邮件。
  3. 该电子邮件包含一个链接,例如http://mywebsite.com/loggedin?id=INSERT_ID_HERE并且 ID 是我的 mysql 数据库中从第 5 步开始的随机 ID。
  4. 然后网站在 PHP 中存储一个 cookie,表明用户已登录。

这是一个好的系统吗?有没有办法让它变得更好?

4

2 回答 2

1

当您可以存储到数据库时为什么要发送电子邮件?仅当您发送确认链接以验证电子邮件地址时。这需要通过 PHP 而不是 JavaScript 来完成。

切勿存储纯文本密码。使用crypt ()对其进行散列以保持操作在资源上的开销(慢)。

为什么使用 ID 与 cookie?为什么 JavaScript 在等式中发送电子邮件?将会话哈希存储在 cookie 中。对照用户名、密码和盐进行验证。我还使用 UserAgent + IP 来杀死任何 XSS 尝试。如果有一个会话表来防止 MySQL 对许多行进行散列处理,那就太好了。这样,通过正确的索引,您可以拥有任意数量的用户,并且仍然可以快速查找和验证当前​​会话。

有很多方法可以处理用户身份验证和会话。它们都不匹配你的。

于 2013-06-16T22:03:56.337 回答
0

您需要执行以下操作:

  1. 有一个用户提交详细信息的 HTML 表单。
  2. 使用 php 验证输入
  3. 检查电子邮件地址是否已在数据库中
  4. 将新的详细信息插入数据库
  5. 使用 php 'mail' 功能向用户发送电子邮件确认(不是必需的,但很好的接触)

6 一旦他们登录,将 php 'session' 变量设置为 'logged in'

于 2013-06-16T22:02:32.120 回答