Yii-세션

세션을 통해 다양한 페이지에서 데이터에 액세스 할 수 있습니다. 세션은 모든 세션 변수가 저장되는 임시 디렉토리의 서버에 파일을 생성합니다. 이 데이터는 특정 사용자가 방문하는 동안 웹 사이트의 모든 페이지에서 사용할 수 있습니다.

세션이 시작되면 다음이 발생합니다.

  • PHP는 특정 세션에 대한 고유 ID를 생성합니다.

  • PHPSESSID라는 쿠키가 클라이언트 측 (브라우저로)에서 전송됩니다.

  • 서버는 모든 세션 변수가 저장된 임시 폴더에 파일을 생성합니다.

  • 서버가 세션 변수에서 값을 검색하려고 할 때 PHP는 자동으로 PHPSESSID 쿠키에서 고유 한 세션 ID를 가져옵니다. 그런 다음 임시 디렉토리에서 필요한 파일을 찾습니다.

세션을 시작하려면 session_start()함수. 모든 세션 변수는$_SESSION전역 변수. 당신은 또한 사용할 수 있습니다isset() 세션 변수가 설정되었는지 확인하는 기능-

<?php
   session_start();
   if( isset( $_SESSION['number'] ) ) {
      $_SESSION['number'] += 1; }else { $_SESSION['number'] = 1;
   }
   $msg = "This page was visited ". $_SESSION['number'];
   $msg .= "in this session."; echo $msg;
?>

세션을 삭제하려면 다음을 호출해야합니다. session_destroy()함수. 단일 세션 변수를 삭제하려면unset() 기능-

<?php
   unset($_SESSION['number']);
   session_destroy();
?>

Yii에서 세션 사용

세션을 통해 사용자 요청에 걸쳐 데이터를 유지할 수 있습니다. PHP에서는 다음을 통해 액세스 할 수 있습니다.$_SESSION변하기 쉬운. Yii에서는 세션 응용 프로그램 구성 요소를 통해 세션에 액세스 할 수 있습니다.

Step 1 − 추가 actionOpenAndCloseSession 방법 SiteController.

public function actionOpenAndCloseSession() {
   $session = Yii::$app->session;
   // open a session
   $session->open(); // check if a session is already opened if ($session->isActive) echo "session is active";
   // close a session
   $session->close(); // destroys all data registered to a session $session->destroy();
}

위의 코드에서 우리는 세션 응용 프로그램 구성 요소를 가져 와서 세션을 열고 활성 상태인지 확인하고 세션을 닫은 다음 마지막으로 제거합니다.

Step 2 − 유형 http://localhost:8080/index.php?r=site/open-and-close-session 웹 브라우저의 주소 표시 줄에 다음이 표시됩니다.

세션 변수에 액세스하려면 다음을 사용할 수 있습니다. set()get() 행동 양식.

Step 3 − 추가 actionAccessSession 방법 SiteController.

public function actionAccessSession() {

   $session = Yii::$app->session;
	
   // set a session variable
   $session->set('language', 'ru-RU'); // get a session variable $language = $session->get('language'); var_dump($language);
		  
   // remove a session variable
   $session->remove('language'); // check if a session variable exists if (!$session->has('language')) echo "language is not set";
		  
   $session['captcha'] = [ 'value' => 'aSBS23', 'lifetime' => 7200, ]; var_dump($session['captcha']);
}

Step 4 − 이동 http://localhost:8080/index.php?r=site/access-session, 다음이 표시됩니다.