0

我需要查明客户(结帐期间)当前是否也以 Zen Cart 管理员身份登录。目的是允许管理员代表客户下订单(例如,通过电话)可以使用某些操作。

我的第一个想法是检查 $_SESSION['admin_id']。

然而,这似乎没有设置,而是 $_SESSION['customer_id'] 是。

我认为这是因为在管理和客户区域(zenAdminId 与 zenid)中选择了不同的会话名称。

我怎样才能知道这个客户是否会以管理员身份登录,如果他们同时在管理区域?

在发送到托管支付服务提供商之前,我正在处理结帐步骤。

编辑:商家以管理员身份登录,并在结帐屏幕中输入与管理员帐户不同的客户详细信息。这是一个客户不存在/MOTO 设置。

4

2 回答 2

1

你是对的 - $_SESSION['customer_id'] 已设置。客户表中没有任何内容表明此人是否是管理员。但是,如果他们的客户帐户和管理员帐户使用相同的电子邮件地址,您可以使用 $_SESSION['customer_id'] 在客户表中查找他们的电子邮件,然后将其与使用中的电子邮件中的 admin_email 字段匹配这是查找表“管理员”。

于 2011-11-04T00:36:55.120 回答
0

值得注意的是,如果您的 admin cookie 不受路径限制SESSION_USE_ROOT_COOKIE_PATH=True,您可以简单地检查 cookie zenAdminID。您可以通过查询 zen_sessions 来读取此 cookie 的内容,sesskey 是zenAdminID.

您必须对结果中的值进行 base64_decode 才能获取会话。它提供了一个序列化的对象,尽管不幸的是您无法对其使用反序列化。您可以将其加载为当前$_SESSION,但这会覆盖您当前的。

我只是这样做来获取 admin_id:

preg_match('/admin_id\|s:1:"([0-9]+?)"/', $admin_session, $admin_matches);

$admin_matches[1] giving the admin id value.
于 2014-10-23T05:39:14.203 回答