질문
Q #10237
세션처리 문제.
수야디벨
2012-12-26 17:20:25
안녕하세요~ 다들 크리스마스 잘 보내셨는지 모르겠네요 :)
만들고 있는 페이지에서 , 로그인 처리를 세션으로 관리해 줍니다.
로그인을 하면, view 화면에서 사용자의 대표 이미지를 한장 보여주는데요.
이때의 대표이미지를 유저정보 테이블에 저장시켜서 , 뽑아오는 형식으로 구현했습니다.
$session_id = $this->session->userdata('userid');
//로그인 정보를 넘기기 위해서.
$this->load->model('werail/login/login_model');
$query = $this->login_model->get_userinfo($session_id);
이렇게 세션아이디를 모델로 던져서 , 모델에서 세션 아이디에 해당하는 db를 검사한 후에,
같은 테이블에 있는 imgsrc 컬럼의 값을 뽑아오는 식입니다.
그래서 이 imgsrc를
foreach($query as $row):
$data['imgsrc'] = $row->imgsrc;
endforeach;
이렇게 받아서 view에서 imgsrc를 변수로 사용하여 대표이미지를 보여주는데요.
이번에
로그아웃 기능이라고 만들었는데, 단순히 로그아웃 기능은 세션을 제거해주는 기능이거든요~?
그래서 세션을 제거하면, 세션은 제거가 되는데 대표이미지는 계속 보이더라구요.
그래서 어떻게 된건고 짚어보니,
db가 동작을 하는거였습니다,
즉,
$this->load->model('werail/login/login_model');
$query = $this->login_model->get_userinfo($session_id);
이 DB가 세션이 없는데도($session_id 이 없는데도) 정상적으로 작동을 하더라는거지요.
(단, 위에서는 세션아이디에 해당하는 유저 한명만 값이 되돌아 왔다면 모든 유저정보가 되돌아 옵니다.)
이 되돌아온 유저 정보가
foreach($query as $row):
$data['imgsrc'] = $row->imgsrc;
endforeach;
이렇게 처리되기 때문에 마지막의 imgsrc 컬럼값이 변수에 저장이 되었던거지요
그래서 이상한 마음에 echo $session_id를 찍어봤는데, 분명이 값이 출력되지는 않거든요?
혹시 세션은 없지만 $ssession_id 에 빈문자열 '' 이라도 저장되나 싶어서
isset으로 체크해보려고 했는데, 구분이 되지도 않습니다.. 음 ..어떻게 해야 할까요?
우선 로그인 처리를 세션으로 하는게 맞는지는 모르겠습니다만,
문제는, 세션을 제거해도 세션을 받아주는 변수 $session_id 에 어떠한 값이 저장되는거 같다, 구분을 못한다, 이니까.
로그인을 하는 과정에서 정상적으로 성공하면 userid 값만 세션으로 저장시키거든요?
이때 , 특정 다른 세션을 동시에 저장시킵니다.
예를 들어서 세션 저장시킬때 , useridexit = 1 로 세션을 설정해두고,
로그아웃 해서 세션을 제거할때 useridexit = 0 으로 세션을 설정하여 ,
이 useridexit 세션 값으로 로그아웃을 제어해버렸습니다.
에휴 ..이게맞는지 잘모르겠네요