set_session 함수 질문입니다.

set_session 함수 질문입니다.

QA

set_session 함수 질문입니다.

본문

login.php에서 $is_member의 값이 선언된 부분을 따라 common.php로 이동했고

회원, 비회원 구분에서 $is_member 변수를 발견.

그 코드에 $member 변수도 나왔고 $member의 값을 확인하니

$member = $_SESSION['ss_mb_id'] === set_session('ss_mb_id', $mb['mb_id'])

이런식으로 값이 전달 되고 있었습니다.

그래서 저는 set_session 함수를 통해 회원 아이디의 값만 세션으로 전달되고 $member에 저장된 걸로 이해를 하고 넘어갔었는데

뭔가 이상한거 같아서 질문을 드립니다.

 

 set_session 함수에 value 값으로 아이디를 전달해서 세션변수를 생성했기 때문에 아이디만 저장된 줄 알았는데 $member 변수에서 mb_level이나 mb_dir 와 값은 다른 연관배열도 들어있었습니다.

 

그래서 set_session 함수가 어떤 내용을 저장하는지 알고 싶습니다.

이 질문에 댓글 쓰기 :

답변 2

조금 코드를 잘못보신것같습니다

$member = $_SESSION['ss_mb_id'] === set_session('ss_mb_id', $mb['mb_id'])

이러한 정의는 그누보드 어디에도 되어있지 않습니다.

 

이 로그인 세션이 어떻게 동작하는지 보실려면 common.php파일 393번째줄을 참고해주시길 바랍니다 여기에 해답이있는데요

if ($_SESSION['ss_mb_id']) { // 로그인중이라면

  $member = get_member($_SESSION['ss_mb_id']);

 

네 여기서 $member변수에 get_member함수를 통해 멤버정보를 담는것을 볼수있습니다

ss_mb_id세션은 로그인에 필요한 즉 get_member함수를 작동시키기 위한 정보인 mb_id만 담고있는게 맞습니다

$member = $_SESSION['ss_mb_id'] === set_session('ss_mb_id', $mb['mb_id'])
아 이건 제가 생각한 값의 흐름을 의미한 거지 코드가 아닙니다.
$_SESSION['ss_mb_id'] === set_session('ss_mb_id', $mb['mb_id'])
set session 에서 세션변수를 만든 값을 $_SESSION에서 받기 때문에 같은 값이라는 의미에서 ===으로 적어준것이고

그 값을 $member에 대입하기 때문에 =를 사용해서

값의 흐름을 저렇게 표현한 거였어요.

세션에 다른 정보가 있는게 아닌가하는 작성자분의 질문을 보고 $member = $_SESSION['ss_mb_id']로 정의를 하신것같아서 잘못되엇다고 짚어주기 위해 강조한것입니다
모든 회원의 정보는 member테이블 DB에 있기때문에 get_member에서 모두 가져옵니다
 정보를 가져오지 못하거나 부족한 정보가 있을때 $member 변수에 값을 넣어 주겠죠?mb_level을 1로 주는것은 비회원일경우 인것같네요 get_member로 정보를 못가져왔으니 말이죠

아 너무 어렵네요 ㅋㅋ
로직을 이해하면 할 수록 너무 복잡한거 같아요 ㅠ

id값만 담겨져 있는 세션변수를 가지고 get_member 를 통해 회원정보를 가져온다는 말씀 맞나요?

네 해당 ss_mb_id세션에는 mb_id정보만 가지고있어요 로그인이 성공했을때 set_session으로 mb_id값만 저장해놓고 get_meber함수를 통해 member DB에 있는 정보를 가져옵니다

회원이 로그인한 상태라면 세션값을 참조해서  회원정보를 $member 에 대입하는것이니깐 회원정보 배열이 들어가는게 맞습니다.

 

if ($_SESSION['ss_mb_id']) { // 로그인중이라면

    $member = get_member($_SESSION['ss_mb_id']);

 

https://github.com/gnuboard/gnuboard5/blob/de9ba8db5b5f047ed46039852da6ecf54173de39/common.php#L387

 

set_session() 함수는 세션을 만드는 기능만 합니다.

https://github.com/gnuboard/gnuboard5/blob/de9ba8db5b5f047ed46039852da6ecf54173de39/lib/common.lib.php#L117

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

회원로그인

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