您好我的问题是,如果最好在mySQL数据库中为没有通过电子邮件验证其帐户的用户提供一个temporary_users表。如果用户已经过验证,那么他的数据将被复制到用户表中。
否则,所有已验证或未验证的用户都将保存在用户表中,其中将有一个带有随机数的新列。验证用户后,该值将被删除,这意味着他可以登录。
将来我会创建一个忘记密码功能,其结构与您建议的相同。
最好的方法是什么?
答案 0 :(得分:4)
将所有用户存储在一个表中,并为每条记录存储验证/未验证状态。无论您是添加is_validated
列,还是仅存储唯一令牌并将其设置为null
,都可以由您自行决定。
为了添加单列数据而复制整个表格并不是一个很好的做法,而且它会很笨拙;您希望能够根据用户的登录凭据找到用户,并告诉他们他们的帐户尚未激活。要使用两个表执行此操作,将需要两个查询。
答案 1 :(得分:0)
最好使用主表中的列作为“已验证”和“未经验证”的标记。
当用户注册时,将他们的信息插入数据库,并将“已验证”的colunmn设置为“未经验证”的代表,如0。
验证完毕后,将该用户帐户的已验证列更新为“已验证”的代码,如1。
为临时用户创建一个全新的表格是浪费资源和额外的数据库查询,只需更新一个代表用户状态的列,如“已验证”。
您可以更进一步,而是为每个用户设置一个“状态”列。创建表示用户状态的值的键,例如:
0 - 已创建,未经验证 1 - 已验证 2 - 无效/已禁用帐户 3 - 禁止 等。
这可以通过使用一列来控制用户的状态来控制。当你可以使用记录本身上的一列来控制任意数量的状态时,绝对没有必要为一种状态设置一个单独的表。