CodeIgniter 에서 Session 사용하기
원문참조 : https://www.codeigniter.com/user_guide/libraries/sessions.html
PHP 표준 방법으로 세션을 다루는 예
session_start();
$_SESSION['id'] = 'Smith'; // 세션에 'id' 란 키를 이용해서 값을 저장한다
$_SESSION['id'] = 'Andy'; // 세션에 'id' 란 키로 저장된 값을 업데이트한다
unset ( $_SESSION['id'] ); // 세션에 'id' 란 키로 저장된 값을 제거한다
if ( empty ( $_SESSION['id] ) ) // 세션에 'id' 란 키로 저장된 값이 있는지 확인한다
{
echo "로그인 후에 이용해 주세요";
)
콘트롤러 클래스 작성
application/controllers/ 아래에 다음과 같은 테스트용 클래스를 작성한다
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class SampleController extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('session'); // 생성자에서 세션을 초기화하면 이후 모든 페이지에서 사용가능
}
public function index()
{
$this->load->view('sample.php');
}
}
?>
위와 같이 콘트롤러에서 세션을 초기화하지 않고 뷰에서 초기화하는 경우 오류가 발생한다
콘트롤러에서 세션의 초기화 뿐만 아니라 세션 관련 다른 모든 작업이 가능하다
콘트롤러에서 연결할 뷰 작성
application/views/ 아래에 다음과 같은 뷰(sample.php)를 생성한다
<?php
// 콘트롤러에서 초기화된 세션은 아래처럼 사용가능
//$this->session;
// PHP에서 세션에 값을 저장하려면
$_SESSION['key'] = "value";
// CodeIgniter에서는 ...
$this->session->set_userdata('key', 'value');
// 세션에 배열을 저장하려면..
$data = array(
'id'=>'userid',
'name'=>'username',
'phone'=>'010-2547-9541'
);
$this->session->set_userdata($data);
foreach ($data as $key => $value) {
echo $key. " : ". $value."<br>";
}
//PHP에서 세션에 저장된 값을 제거하려면..
unset($_SESSION['key']);
//CI에서 키를 이용하여 세션의 값 제거
$this->session->unset_userdata('key');
// CI에서 세션에 저장된 배열을 제거
$this->session->unset_userdata($data);
// CI에서 세션에 저장된 값을 가져와서 사용하는 예
$data = array(
'id'=>'userid',
'name'=>'username',
'phone'=>'010-2547-9541'
);
$id = $this->session->userdata('id');
echo "이용자의 ID :".$id . "<br>";
?>
다른 페이지에서 로그인을 거쳤는지 확인하는 예
아래에서 사용된 base_url()함수는 url 헬퍼에 있으므로 콘트롤러에서 $this->load->helper('url'); 부분이 추가되어야 한다
<?php
if( empty($_SESSION['id']) ) {?>
<script>
alert('로그인 후에 이용할 수 있습니다');
location.href = '<?php echo base_url();?>logincontroller';
</script>
<?php
return;
}
?>
CodeIgniter 에서 실행 확인하기
웹브라우저에서 다음과 같이 요청한다
http://localhost/index.php/SampleController
http://localhost/index.php/sampleController
http://localhost/index.php/samplecontroller
요청 URL에서 콘트롤러 이름을 간결하게 사용하기
application/config/routes.php 파일의 끝에 다음과 같은 내용을 추가한다
route['sample'] = 'SampleController';
위와 같이 설정하면 웹브라우저에서 요청 URL은 다음과 같이 할 수 있다
http://localhost/index.php/sample
물론 원래의 URL도 사용할 수가 있다