CI 묻고 답하기

제목 ci4 session 관련 질문입니다.
카테고리 CI 4 관련
글쓴이 ci늦둥이 작성시각 2021/03/21 16:17:46
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 7441   RSS

안녕하세요.

세션 관련해서 질문이 있습니다.

ci 버전은 v4.1.1 입니다.

 

로그인 컨트롤러 에서

사용자 인증 성공시

세션에 값을 담으려고 하고, view 에선 공통 header 에 session 값을 체크하려고 합니다.

 

먼저 로그인 컨트롤러 입니다. ( 생략 부분은 ... 으로 표현했습니다.)

 

public function login() {
  ...
  $_session = session();
  $_session->set('is_login', 1);
  $_session->set('userInfo', [
    'user_id' => $userId, 
    'user_name' => $userName,
    ....
  ]);
  ...
}

 

공통 header 입니다.

<?php 
session_start();
$is_login = 'is_login';
if( !(isset($_SESSION[$is_login]) && !empty($_SESSION[$is_login]) && intval($_SESSION[$is_login]) == 1) ) {
?>
<script>
    location.href = "<?= site_url('/auth/login'); ?>";
</script>
<?php } ?>

 

header 부분에선.. autoload 에서 session 사용방법을 몰라 제가 아는 방식대로 하였습니다.

 

로그인을 하면 컨트롤러에선 성공하는데

공통 헤더부분에선 세션정보가 다 빠져있더라구요.. 

계속 시도해보고, 구굴링을 해도 해결되지 않아 질문글을 올리게 되었습니다.

 

감사합니다.

 다음글 CI 스타일링은 보통 어떤 CSS라이브러리 혹은 JS프... (2)
 이전글 윈도우(PC)+ 비트나미(웹서버) = WAMP 사용할... (5)

댓글

빛그림 / 2021/03/21 16:22:45 / 추천 0
뷰에서 var_dump(session()->get('userinfo')) 으로 확인해보세요.
ci늦둥이 / 2021/03/21 16:55:18 / 추천 0
뷰에서 var_dump($_SESSION); 으로 확인했을때 "_ci_previous_url" 말고는 저장된 값이 없어서 질문글 올리게 되었습니다.
ci늦둥이 / 2021/03/22 15:35:14 / 추천 0

뷰나 컨트롤러 에서

$_SESSION 으로 사용하여 처리하였습니다.

컨트롤러에서 $session = session(); 을 사용하면 뭔짓을 해도 안들어가지네요...

제가 무엇을 뺴먹고, 무엇을 잘못했는지 잘 모르겠습니다..

변종원(웅파) / 2021/03/23 15:36:42 / 추천 0

session_start 때문에 그럴거 같네요.

저는 BaseController.php 생성자에서 아래와 같이 선언하고  헬퍼나 다른 곳에서 선언할때도 똑같이 선언했습니다. 이상없이 작동중입니다.

$this->session = \Config\Services::session();
ci늦둥이 / 2021/03/23 16:01:13 / 추천 0

변종원(웅파)님. 답변 감사합니다.

$_SESSION 으로 사용하다가 다른분께 도움 받아서 변종원(웅파)님이 알려주신 방법처럼 수정하여 사용중입니다.

답변 감사합니다!! 정말 감사합니다!