如何确定Zen Cart客户是否在结帐时以管理员身份登录?

时间:2011-11-03 18:19:41

标签: zen-cart

我需要查明客户(在结账时)是否也是当前以Zen Cart管理员身份登录的。目的是允许管理员代表客户下订单(例如通过电话)获得某些操作。

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

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

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

如果他们同时在管理区域内,我如何确定该客户是否会以管理员身份登录?

我在发送给托管的支付服务提供商之前正在完成结帐步骤。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

值得注意的是,如果您的管理员Cookie不受路径SESSION_USE_ROOT_COOKIE_PATH=True的限制,您只需检查Cookie zenAdminID即可。您可以通过查询zen_sessions来读取此cookie的内容,sesskey是zenAdminID中的值。

您必须对结果中的值进行base64_decode才能获得会话。它提供了一个序列化对象,但遗憾的是你无法在其上使用反序列化。您可以将其加载为当前$_SESSION,但这会覆盖您当前的。{/ p>

我只是这样做以获得admin_id:

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

$admin_matches[1] giving the admin id value.