3

我可能从错误的角度来处理问题,所以如果我的技术有误,请纠正我。

我正在使用 php 在网站上创建来宾用户。当有人访问该网站时,会自动创建一个访客用户。但是,如果该人登录到“普通”帐户(非访客),那么该人在访客帐户中所做的任何事情都会转移到新帐户。

例如,有人未经身份验证就访问了一个网站,将商店中的产品添加到他的购物车中,然后登录。我需要将购物车中的物品从旧用户(客人)转移到新用户。

但是,在与来宾用户帐户链接的每个表中查找每个项目然后全部更改它们将太耗时(并且可能太耗费资源)。对?

但是我有限制!耶!如果我更新来宾用户 ID,所有约束都会改变。极好!但是如果我需要将它们分配给另一个用户 ID 怎么办?我该怎么做?

任何帮助是极大的赞赏。

4

2 回答 2

2

我正在使用会话数组来管理它,以前我是通过数据库表来做的,但是太繁琐了。

当用户将任何产品添加到购物车时,如果他已登录,则插入订单表,如果没有,则添加会话数组。现在,当客人登录系统时,检查会话数组,如果它不为空,则在用户订单表中添加所有条目。

于 2012-09-21T06:53:32.367 回答
0

您不能完全按照您的建议进行操作,因为用户行(对于登录用户)可能已经存在。唯一的选择是遍历每个表并在那里更新 UserID,就像你建议的那样。这样做的可行性取决于他们作为来宾用户可以做什么。如果只有一两张桌子,就这样吧。

但是,每个问题都可以通过另一层抽象来解决,对吧?在真实用户表和其他所有表之间放置另一个表(我将其称为“伪用户”)。将其他所有内容链接到这个新表,并使用“伪用户”链接到用户表。当来宾用户登录时,只需更改 pseudousers 表中的 UserID 即可。

我的意思是:

+---------+ +------------+ +--------+
| 用户|----|伪用户|----| 推车 |
+---------+ +------------+ +--------+
                   |            
                   | +-------+
                   |------------| ... |
                                +-------+

创建来宾用户时,会在用户和伪用户中创建一个新行。当他们登录时,更新 Pseudousers 中的 UserID 以指向该用户,然后您可以安全地删除 Users 中的来宾用户行(它不再使用)。

希望有人能想出一个比“伪用户”更好的名字。

于 2012-09-21T06:51:49.703 回答