영문페이지 세션 재질문

영문페이지 세션 재질문

QA

영문페이지 세션 재질문

본문

안녕하세요.

 

현재 같은 도메인 안에 

 

/ <- 국문페이지

/en <- 영문페이지

 

로 개발중에 있습니다.

 

국문페이지에서 관리자를 로그인 시, 

영문페이지도 관리자 권한을 유지하게 하려는 작업중인데,

 

common.php에 session_save_path 주석해제 후 경로 설정등을 해봐도 공유가 잘 되지 않습니다.

 

도움을 얻을 수 있을까요?

 

버전은 5.5x 버전 입니다.

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

도움주신대로 /config 와 /en/config 의 SESSION_PATH 값을 동일하게 맞춰 보았지만, 공유가 되지를 않습니다...

 

방법을 알 수 있을까요?

이 질문에 댓글 쓰기 :

답변 5

짐작에

국문 로그인

영문 페이지 열고

다시 국문으로 오면 로그인이 풀리지 않나요?

 

    // 차단된 회원이면 ss_mb_id 초기화, 또는 세션에 저장된 회원 토큰값을 비교하여 틀리면 초기화
    if( ($member['mb_intercept_date'] && $member['mb_intercept_date'] <= date("Ymd", G5_SERVER_TIME))
        || ($member['mb_leave_date'] && $member['mb_leave_date'] <= date("Ymd", G5_SERVER_TIME))
        || (function_exists('check_auth_session_token') && !check_auth_session_token($member['mb_datetime']))
        ) {
        set_session('ss_mb_id', '');
        $member = array();
    } else {

 

여기를

 

    // 차단된 회원이면 ss_mb_id 초기화, 또는 세션에 저장된 회원 토큰값을 비교하여 틀리면 초기화
    if( false)
        || ($member['mb_leave_date'] && $member['mb_leave_date'] <= date("Ymd", G5_SERVER_TIME))
        || (function_exists('check_auth_session_token') && !check_auth_session_token($member['mb_datetime']))
        ) {
        set_session('ss_mb_id', '');
        $member = array();
    }

 

이렇게 해서 로그인 유지가 된다면

if 문 안에 함수를 하나씩 조사?해 봐야겠네요.

긴 답변 꾸준하게 감사드립니다..

일단 국문 로그인 -> 영문을 들어가도 로그인은 풀리지 않습니다.

올려주신 첫번째 조건 false 로 변경시에도 현상태 그대로 유지가 되네요...

일단 해결은 했습니다...

도움주신 print_r($_SESSION) 으로 안에 값을 페이지 POST로 넘겨주는 방식으로 일단 대체는 했습니다...

좀 더 알아보고 해봐야 겠습니다 감사합니다,,!!

같은 도메인이면 별도 설정없이 세션이 공유되어야 정상인데

어떤 문제인지 잘 모르겠네요

https://www.php.net/manual/en/session.configuration.php#ini.session.cookie-path

부분도 확인해보세요

data/session

en/data/session

이 같아야 세션 공유가 됩니다.

==

도움주신대로 /config 와 /en/config 의 SESSION_PATH 값을 동일하게 맞춰 보았지만, 

==

해 보신 소스를 올려 보세요

 

 

 

 

 

/config 의 SESSION_PATH

define('G5_SESSION_PATH',  G5_DATA_PATH.'/'.G5_SESSION_DIR); (기본과 동일)

/en/config 의 SESSION_PATH

define('G5_SESSION_PATH',  '/home/homepage/public/inthetech/pg/data/'.G5_SESSION_DIR); (절대경로로 수정)

이렇게 변경했습니다.

/en/config 앞의 /home/homepage/public/inthetech/pg/data/ 의 경우 /config 의 G5_DATA_PATH 값과 동일합니다.

국문페이지에서 관리자를 로그인 시, 

영문페이지도 관리자 권한을 유지하게 하려는 작업중인데,

==

혹시 각각 사이트 주소가 다른 건 아니죠?

테마를 사용하고 있어서 theme/basic/index.php 에서 안그래도 방금 다시 확인했는데

/서버절대경로/data/session <- 기존
/서버절대경로/data/session <- 영문

둘다 동일하게 되어있습니다.

----------------------

작업했던 방식은
기존 그누보드 복사 후 /en 에 옮겨서 작업했습니다.

후에 session 공유 작업에 있던 참입니다.

국문 (로그인한 상태입니다.)
Array (
[ss_is_mobile] =>
[ss_mb_id] => admin
[ss_mb_key] => 키값
[ss_mb_token_key] => 키값
[HA::STORE] => Array ( )
[HA::CONFIG] => Array ( )
[sl_userprofile] =>
[social_login_redirect] =>
[ss_cart_id] => 2022101210162681
)

영문 (로그인 하지 않은 상태입니다.)
Array (
[ss_is_mobile] =>
[ss_bo_table] => contact_en
[ss_wr_id] => 0
[ss_captcha_count] => 0
[ss_captcha_key] => 키값
[ss_captcha_save] => 키값
)

현재 이렇게 나오고 있습니다. 관리자 로그인 자체를 거치지 않은거 같네요...

크롬 개발자 탭을 보시면 네트워크가 있고
각 URL을 클릭하면 오른쪽에 상세 정보가 또 나옵니다
여기서
[headers]에서
^Request headers 정보에
cookie가 있는데 이 문자열도 비교해 보세요.

그리고 마지막은

<?php echo session_id(); ?>
출력해서 같은 값이 나오는지도 살펴 보세요.

찾았습니다.

그누보드가 바뀌면서 변경된 부분이 있는데

common.php에서

 

    // 차단된 회원이면 ss_mb_id 초기화, 또는 세션에 저장된 회원 토큰값을 비교하여 틀리면 초기화
    if( ($member['mb_intercept_date'] && $member['mb_intercept_date'] <= date("Ymd", G5_SERVER_TIME))
        || ($member['mb_leave_date'] && $member['mb_leave_date'] <= date("Ymd", G5_SERVER_TIME))
        || (function_exists('check_auth_session_token') && !check_auth_session_token($member['mb_datetime']))
        ) {

 

$member['mb_datetime'] 이 값이 같아야 하네요.

phpmyadmin 등에서 값을 같게 하시거나

이 부분을 사용하지 않도록 소스를 수정해 보세요.

 

// 차단된 회원이면 ss_mb_id 초기화, 또는 세션에 저장된 회원 토큰값을 비교하여 틀리면 초기화
    if( ($member['mb_intercept_date'] && $member['mb_intercept_date'] <= date("Ymd", G5_SERVER_TIME))
        || ($member['mb_leave_date'] && $member['mb_leave_date'] <= date("Ymd", G5_SERVER_TIME))
        || (function_exists('check_auth_session_token') && !check_auth_session_token($member['mb_datetime']))
        ) {

여기서 마지막 조건
(function_exists('check_auth_session_token') && !check_auth_session_token($member['mb_datetime']))
만 거치지 않게 해도 되는 부분일까요?

마지막 조건을 제거하고 session 표출 결과입니다.

둘다 로그인 전 입니다.

----/----
Array ( [ss_is_mobile] => )

----/en----
Array ( [ss_is_mobile] => )

국문만 로그인 하고 입니다.

----/----
Array (
[ss_is_mobile] =>
[ss_mb_id] => admin
[ss_mb_key] => 값
[ss_mb_token_key] =>값
[HA::STORE] => Array ( )
[HA::CONFIG] => Array ( )
[sl_userprofile] =>
[social_login_redirect] =>
[ss_cart_id] => 2022101211164467 )

----/en----
Array ( [ss_is_mobile] => )

마지막 조건을 제거해도 이렇네요...ㅠ

답변을 작성하시기 전에 로그인 해주세요.
전체 17
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT