안녕하세요.
세션 관련해서 질문이 있습니다.
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 사용방법을 몰라 제가 아는 방식대로 하였습니다.
로그인을 하면 컨트롤러에선 성공하는데
공통 헤더부분에선 세션정보가 다 빠져있더라구요..
계속 시도해보고, 구굴링을 해도 해결되지 않아 질문글을 올리게 되었습니다.
감사합니다.
뷰나 컨트롤러 에서
$_SESSION 으로 사용하여 처리하였습니다.
컨트롤러에서 $session = session(); 을 사용하면 뭔짓을 해도 안들어가지네요...
제가 무엇을 뺴먹고, 무엇을 잘못했는지 잘 모르겠습니다..
session_start 때문에 그럴거 같네요.
저는 BaseController.php 생성자에서 아래와 같이 선언하고 헬퍼나 다른 곳에서 선언할때도 똑같이 선언했습니다. 이상없이 작동중입니다.
$this->session = \Config\Services::session();
변종원(웅파)님. 답변 감사합니다.
$_SESSION 으로 사용하다가 다른분께 도움 받아서 변종원(웅파)님이 알려주신 방법처럼 수정하여 사용중입니다.
답변 감사합니다!! 정말 감사합니다!