2011-11-03 1 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

admin 쿠키가 SESSION_USE_ROOT_COOKIE_PATH=True 경로로 제한되지 않으면 쿠키 zenAdminID 만 확인하면됩니다. zess_sessions를 쿼리하여이 쿠키의 내용을 읽을 수 있습니다.이 값은 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.