使用PHP和UUID跟踪动态网页状态

时间:2012-03-15 09:04:46

标签: php mysql authentication uuid status

我正在从头开始构建电子商务,用户可以在不登录的情况下执行许多操作(将项目添加到购物车,创建自己的自定义产品)。为了解决这个问题,我生成了一个包含UUID的cookie,将UUID存储在MySQL表“Users”中,并将每个信息与该UUID相关联。当用户最终注册帐户时,我将昵称,哈希,盐和电子邮件存储在与原始UUID相关联的“Registered_Users”表中(我甚至可以使用具有NULL字段的单个表,但这不是重点)如果不在未注册时检索有关用户的信息,那就变得毫无用处。

如果用户删除Cookie会怎样? UUID是否适合完成这项任务?

请注意,整个电子商务将落后于SSL。

1 个答案:

答案 0 :(得分:1)

您选择的系统对我来说很好。关于你的问题“如果用户删除cookie会怎么样”,它有两个后果。

首先,用户丢失了他的购物车和个别产品。但这是某种预期的行为,所以我不担心。如果您真的担心用户在未注册时不应丢失所有有价值的数据,请考虑其他存储UUID的方法,例如localStorage或Flash Cookie。有关所有可能性的列表(其中许多可能不适用于您的应用程序),请参阅http://samy.pl/evercookie/

其次,具有UUID和其他数据的数据库表将随着时间的推移而增长。因此,您需要不时删除用户未注册帐户的旧条目。您的两个表格使得识别未注册的用户变得相对微不足道。以下是如何使用SQL完成旧条目的清理:

DELETE FROM Users WHERE date_created < '2012-01-01' AND 
  UUID NOT IN (SELECT UUID FROM Registered_Users);

我在这里选择了固定日期以避免DATEDIFF功能 在删除用户之前,您可能需要先删除其他数据。

如果UUID是数据库和性能方面的不错选择,请查看this article以形成您自己的意见。也许仅使用Users中的自动增量主键就足够了。