CI 묻고 답하기

제목 세션처리 문제.
글쓴이 수야디벨 작성시각 2012/12/26 17:20:25
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 19776   RSS

안녕하세요~ 다들 크리스마스 잘 보내셨는지 모르겠네요 :)


만들고 있는 페이지에서 , 로그인 처리를 세션으로 관리해 줍니다.

로그인을 하면, 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으로 체크해보려고 했는데, 구분이 되지도 않습니다.. 음 ..어떻게 해야 할까요?
 다음글 [초보] 항시 로그인을 체크해야할 때 (8)
 이전글 쿠키 사용에 대한 질문. (2)

댓글

수야디벨 / 2012/12/26 17:45:28 / 추천 0
편법으로 해결했습니다.

우선 로그인 처리를 세션으로 하는게 맞는지는 모르겠습니다만,

문제는, 세션을 제거해도 세션을 받아주는 변수 $session_id 에 어떠한 값이 저장되는거 같다, 구분을 못한다, 이니까.


로그인을 하는 과정에서 정상적으로 성공하면 userid 값만 세션으로 저장시키거든요?

이때 , 특정 다른 세션을 동시에 저장시킵니다.

예를 들어서 세션 저장시킬때 , useridexit = 1 로 세션을 설정해두고,
로그아웃 해서 세션을 제거할때 useridexit = 0 으로 세션을 설정하여 ,

이 useridexit 세션 값으로 로그아웃을 제어해버렸습니다.


에휴 ..이게맞는지 잘모르겠네요
니삼 / 2012/12/26 17:53:33 / 추천 0
view에 세션이 있을떄만 보여지는 영역을 만든다
안에 사진을 보여주는 페이지를 만든다.

일반적으론 이렇게 하지 않나요?

그리고 이건 좀 부가적인거지만

사진 띄우는건
<
img src="http://domain.com/picture/유저아이디">
뭐 이렇게 처리해서 따로 사진만 반환하는부분 만들어서 하는것두 좋은 방법인듯듯