我希望我的用户在能够登录之前激活他们的帐户。它们含激活链接,像这样的事情在注册后收到一封电子邮件:检查用户是否激活了他/她的帐户的最有效方法?
http://www.blabla.com/[email protected]&token=Aisd23uNMAu53932asdDasd82AS
当然,每当有人登录时,我不得不请检查是否或不是用户已经激活了他/她的账户。我能想到的2种方式来解决这个问题,无论是在我的“用户”表,其设置为空拥有一个额外的列,每当用户启动像这样:
-----------------------------------------------
| id | username | password | activation_token |
-----------------------------------------------
| 1 | user1 | blabla | |
-----------------------------------------------
| 2 | user1 | blabla | asd232DA34qADJs2 |
-----------------------------------------------
然后我提取activation_token与沿用户信息只要在用户登录或我可以只包含激活令牌一个单独的表,然后在“用户”表中加入每次用户登录:
--------------------------------------
| id | account_id | activation_token |
--------------------------------------
| 1 | 37 | dsad2428491dka98 |
--------------------------------------
| 2 | 2 | asd232DA34qADJs2 |
--------------------------------------
那么,哪一个会最高效?谢谢你的时间。
编辑:感谢所有伟大的响应
我会说,只要选择一个就可以了。规范化的版本会更容易实现。 – strager 2010-08-03 15:22:29
规范化的表格将节省数据库中的一些空间,但成本是更复杂的SQL查询。两种解决方案都可以工作,所以只需选择一个。 – 2010-08-03 15:24:58
正如其他人所说,因为这种激活只会发生在大多数情况下,任何帐户一次速度是微不足道的。 – Chris 2010-08-03 15:27:13