'PHP/CI Session'에 해당되는 글 1건

  1. 2019.01.14 CI Session example
PHP/CI Session2019. 1. 14. 16:07

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도 사용할 수가 있다

Posted by cwisky