我需要查明客户(在结账时)是否也是当前以Zen Cart管理员身份登录的。目的是允许管理员代表客户下订单(例如通过电话)获得某些操作。
我的第一个想法是检查$ _SESSION ['admin_id']。
然而,这似乎没有设置,而是$ _SESSION ['customer_id']。
我认为这是因为在管理员和客户区域中选择了不同的会话名称(zenAdminId vs zenid)。
如果他们同时在管理区域内,我如何确定该客户是否会以管理员身份登录?
我在发送给托管的支付服务提供商之前正在完成结帐步骤。
编辑:商家以管理员身份登录,并在结帐屏幕中输入客户的详细信息(与管理员帐户的详细信息不同)。这是客户不存在/ MOTO设置。
答案 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.