Yii - Oturumlar

Oturumlar, çeşitli sayfalarda verilere erişim sağlar. Bir oturum, sunucuda tüm oturum değişkenlerinin depolandığı geçici bir dizinde bir dosya oluşturur. Bu veriler, söz konusu kullanıcının ziyareti sırasında web sitenizin tüm sayfalarında mevcuttur.

Bir oturum başladığında aşağıdakiler olur -

  • PHP, bu belirli oturum için benzersiz bir kimlik oluşturur.

  • İstemci tarafında (tarayıcıya) PHPSESSID adlı bir çerez gönderilir.

  • Sunucu, tüm oturum değişkenlerinin kaydedildiği geçici klasörde bir dosya oluşturur.

  • Bir sunucu, değeri bir oturum değişkeninden almak istediğinde, PHP benzersiz oturum kimliğini otomatik olarak PHPSESSID tanımlama bilgisinden alır. Ardından, gerekli dosya için geçici dizinine bakar.

Bir seans başlatmak için şu numarayı aramalısınız: session_start()işlevi. Tüm oturum değişkenleri,$_SESSIONküresel değişken. Ayrıca şunu da kullanabilirsiniz:isset() oturum değişkeninin ayarlanıp ayarlanmadığını kontrol etme işlevi -

<?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;
?>

Bir oturumu yok etmek için session_destroy()işlevi. Tek bir oturum değişkenini yok etmek içinunset() işlev -

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

Yii'de Oturumları Kullanma

Oturumlar, verilerin kullanıcı isteklerinde saklanmasına izin verir. PHP'de bunlara şu yolla erişebilirsiniz:$_SESSIONdeğişken. Yii'de, oturum uygulama bileşeni aracılığıyla oturumlara erişebilirsiniz.

Step 1 - Ekle actionOpenAndCloseSession yöntemi 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();
}

Yukarıdaki kodda, oturum uygulama bileşenini alıyoruz, bir oturum açıyoruz, aktif olup olmadığını kontrol ediyoruz, oturumu kapatıyoruz ve sonunda onu yok ediyoruz.

Step 2 - Tür http://localhost:8080/index.php?r=site/open-and-close-session web tarayıcısının adres çubuğunda aşağıdakileri göreceksiniz.

Oturum değişkenlerine erişmek için kullanabilirsiniz set() ve get() yöntemler.

Step 3 - Bir ekle actionAccessSession yöntemi 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 - Git http://localhost:8080/index.php?r=site/access-session, aşağıdakileri göreceksiniz.