2011-11-03 39 views
0

我需要了解客戶(結帳時)是否也以Zen Cart管理員身份登錄。目的是允許管理員代表客戶下訂單(例如通過電話)可以採取某些行動。如何確定Zen Cart客戶是否在結帳時以管理員身份登錄?

我的第一個想法是檢查$ _SESSION ['admin_id']。

但是,這似乎沒有設置,而是$ _SESSION ['customer_id']是。

我認爲這是因爲管理員和客戶區域(zenAdminId vs zenid)中選擇了不同的會話名稱。

如何才能知道該客戶是否將以管理員身份登錄,並且他們是否同時在管理區域?

我正在將郵件發送給託管支付服務提供商之前的結帳步驟。

編輯:商家以管理員身份登錄,並在結帳屏幕中輸入與管理員帳戶不同的客戶詳細信息。這是客戶不在場/ MOTO設置。

回答

1

你是對的 - 設置了$ _SESSION ['customer_id']。客戶的表格中沒有任何內容表明該人員是否爲管理員。但是,如果他們爲其客戶帳戶和管理員帳戶使用相同的電子郵件地址,則可以使用$ _SESSION ['customer_id']在customers表中查找他們的電子郵件,然後將其與使用的電子郵件中的admin_email字段進行匹配這個查找表格「admin」。

+0

這是一個想法,斯科特,但我更願意進入客戶的電子郵件地址(這將是不同的,因爲我們是從一個輸入客戶的詳細信息如果可以的話,打電話訂購)。所有其他細節將是客戶自己的。我可能會將此用作短期修復,並在此輸入我們自己的管理員電子郵件。 –

+0

哦,好的。如何在登錄屏幕中添加第三個字段,如「Admin Login as Customer Password」,以及適當設置時,將登錄標記爲管理員代表客戶登錄。 –

+0

我可以看到工作。我現在選擇了管理員電子郵件地址解決方案。謝謝。希望能夠同時加載管理員和客戶會話,因爲這會更加優雅。 –

0

值得注意的是,如果您的管理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. 
相關問題