Php 这是一个好的登录系统吗?我能改进一下吗?

Php 这是一个好的登录系统吗?我能改进一下吗?,php,javascript,mysql,login,Php,Javascript,Mysql,Login,我当前的系统是这样工作的: 登记 用户输入他想要使用的电子邮件 用户键入密码 用户单击ok,然后用javascript将电子邮件和密码通过电子邮件发送到我的电子邮件帐户 我检查了我的电子邮件,找到了用户的电子邮件和密码 我把电子邮件和密码放入我的mysql数据库。我还将一个随机ID放入数据库 登录 用户键入他的电子邮件和密码 如果密码正确,用户将收到一封用javascript发送给他的电子邮件 该电子邮件包含一个链接,如,ID是步骤5中mysql数据库中的随机ID 然后网站在PHP中存储一个co

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

登记

  • 用户输入他想要使用的电子邮件
  • 用户键入密码
  • 用户单击ok,然后用javascript将电子邮件和密码通过电子邮件发送到我的电子邮件帐户
  • 我检查了我的电子邮件,找到了用户的电子邮件和密码
  • 我把电子邮件和密码放入我的mysql数据库。我还将一个随机ID放入数据库
  • 登录

  • 用户键入他的电子邮件和密码
  • 如果密码正确,用户将收到一封用javascript发送给他的电子邮件
  • 该电子邮件包含一个链接,如,ID是步骤5中mysql数据库中的随机ID
  • 然后网站在PHP中存储一个cookie,表示用户已登录

  • 这是一个好的系统吗?有什么办法可以让它变得更好吗?

    您需要执行以下操作:

  • 有一个用户提交详细信息的HTML表单
  • 使用php验证输入
  • 检查电子邮件地址是否不在数据库中
  • 将新的详细信息插入数据库
  • 使用php的“邮件”功能向用户发送电子邮件确认(不是必需的,但是很好的触摸)

  • 6登录后,将php“session”变量设置为“logged in”

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

    永远不要存储纯文本密码。对其进行哈希运算,以保持操作在资源方面的开销(缓慢)

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


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

    电子邮件和密码都是通过电子邮件发送的。
    坏为什么那么坏?我不understand@AwesomeCoder:“我不知道怎么做”——你听说过吗?第一百万次解释它真的毫无意义。这不是一个好的答案,你可以而且应该改进它。向社区提出这样的问题,并让自己暴露在随后的(建设性的和毫无意义的)批评中,这真是太好了。继续这样做,继续学习,不要拖延!我希望我们中有更多的人有这种态度。他应该做的事情还有很多