CakePHP - Oturum Yönetimi

Oturum, benzersiz kullanıcıları istekler arasında yönetmemize ve belirli kullanıcılar için verileri depolamamıza olanak tanır. Oturum verilerine her yerde, her yerde, istek nesnesine erişiminizin olduğu her yerde erişilebilir, yani oturumlara denetleyicilerden, görünümlerden, yardımcılardan, hücrelerden ve bileşenlerden erişilebilir.

Oturum Nesnesine Erişim

Aşağıdaki kod çalıştırılarak oturum nesnesi oluşturulabilir.

$session = $this->request->session();

Oturum Verilerinin Yazılması

Oturumda bir şeyler yazmak için, write() session yöntem.

Session::write($key, $value)

Yukarıdaki yöntem iki argüman alacaktır, value ve key altında, değerin saklanacağı.

Misal

$session->write('name', 'Virat Gandhi');

Oturum Verilerini Okuma

Depolanan verileri oturumdan almak için, read() session yöntem.

Session::read($key)

Yukarıdaki işlev yalnızca bir argüman alacaktır, yani the key of the value,oturum verileri yazılırken kullanılan. Doğru anahtar sağlandıktan sonra işlev, değerini döndürür.

Misal

$session->read('name');

Oturumda belirli verilerin bulunup bulunmadığını kontrol etmek istediğinizde, check() session yöntem.

Session::check($key)

Yukarıdaki işlev, bağımsız değişken olarak yalnızca anahtarı alacaktır.

Misal

if ($session->check('name')) {
   // name exists and is not null.
}

Oturum Verilerini Silin

Verileri oturumdan silmek için, delete() session verileri silme yöntemi.

Session::delete($key)

Yukarıdaki işlev, oturumdan silinecek değerin yalnızca anahtarını alacaktır.

Misal

$session->delete('name');

Oturumdaki verileri okumak ve silmek istediğinizde, consume() session yöntem.

static Session::consume($key)

Yukarıdaki işlev, bağımsız değişken olarak yalnızca anahtarı alacaktır.

Misal

$session->consume('name');

Bir Oturumu Yıkmak

Kullanıcı siteden çıkış yaptığında bir kullanıcı oturumunu yok etmemiz ve oturumu yok etmemiz gerekir. destroy() yöntem kullanılır.

Session::destroy()

Misal

$session->destroy();

Oturumu yok etmek, tüm oturum verilerini sunucudan kaldıracak, ancak oturum tanımlama bilgisini kaldırmayacaktır.

Oturumu Yenileyin

Kullanıcı oturumunu yenilemek istediğiniz bir durumda, renew() session yöntem.

Session::renew()

Misal

$session->renew();

Oturumu Tamamla

Değişiklik yapın config/routes.php dosya aşağıdaki programda gösterildiği gibi.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('/session-object',['controller'=>'Sessions','action'=>'index']);
   $builder->connect('/session-read',['controller'=>'Sessions','action'=>'retrieve_session_data']);
   $builder->connect('/session-write',['controller'=>'Sessions','action'=> 'write_session_data']);
   $builder->connect('/session-check',['controller'=>'Sessions','action'=>'check_session_data']);
   $builder->connect('/session-delete',['controller'=>'Sessions','action'=>'delete_session_data']);
   $builder->connect('/session-destroy',['controller'=>'Sessions','action'=>'destroy_session_data']);
   $builder->fallbacks();
});

Oluşturmak SessionsController.php dosya src/Controller/SessionsController.php. Aşağıdaki kodu denetleyici dosyasında kopyalayın

src/Controller/SessionsController.php

<?php
namespace App\Controller;
use App\Controller\AppController;
   class SessionsController extends AppController {
   public function retrieveSessionData() {
      //create session object
      $session = $this->request->getSession();
      //read data from session
      $name = $session->read('name');
      $this->set('name',$name);
   }
   public function writeSessionData(){
      //create session object
      $session = $this->request->getSession();
      //write data in session
      $session->write('name','Virat Gandhi');
   }
   public function checkSessionData(){
      //create session object
      $session = $this->request->getSession();
      //check session data
      $name = $session->check('name');
      $address = $session->check('address');
      $this->set('name',$name);
      $this->set('address',$address);
   }
   public function deleteSessionData(){
      //create session object
      $session = $this->request->getSession();
      //delete session data
      $session->delete('name');
   }
   public function destroySessionData(){
      //create session object
      $session = $this->request->getSession();
      //destroy session
      $session->destroy();
   }
}
?>

Bir dizin oluşturun Sessions -de src/Template ve bu dizinin altında bir View dosya çağrıldı write_session_data.php. Aşağıdaki kodu o dosyaya kopyalayın.

src/Template/Sessions/write_session_data.php

The data has been written in session.

Başka bir tane yarat View dosya çağrıldı retrieve_session_data.php aynı şekilde Sessions dizin ve aşağıdaki kodu o dosyaya kopyalayın.

src/Template/Sessions/retrieve_session_data.php

Here is the data from session.
Name: <?=$name;?>

Başka bir tane yarat View dosya çağrıldı check_session_data.ctp aynı Sessions dizini altında ve aşağıdaki kodu bu dosyaya kopyalayın.

src/Template/Sessions/check_session_data.ctp

<?php if($name): ?>
name exists in the session.
<?php else: ?>
name doesn't exist in the database
<?php endif;?>
<?php if($address): ?>
address exists in the session.
<?php else: ?>
address doesn't exist in the database
<?php endif;?>

Başka bir tane yarat View dosya çağrıldı delete_session_data.ctp, aynı Sessions dizini altında ve aşağıdaki kodu bu dosyaya kopyalayın.

src/Template/Sessions/delete_session_data.ctp

Data deleted from session.

Başka bir tane yarat View dosya çağrıldı destroy_session_data.ctp, aynı Sessions dizini altında ve aşağıdaki kodu bu dosyaya kopyalayın.

src/Template/Sessions/destroy_session_data.ctp

Session Destroyed.

Çıktı

Aşağıdaki URL'yi ziyaret ederek yukarıdaki örneği yürütün. Bu URL, oturumda veri yazmanıza yardımcı olacaktır.

http: // localhost / cakephp4 / oturum yazma

Aşağıdaki URL'yi ziyaret edin to read session data − http://localhost/cakephp4/session-read

Aşağıdaki URL'yi ziyaret edin to check session data - http: // localhost / cakephp4 / oturum denetimi

Aşağıdaki URL'yi ziyaret edin to delete session data - http: // localhost / cakephp4 / session-delete adresini ziyaret edin

Aşağıdaki URL'yi ziyaret edin to destroy session data - http: // localhost / cakephp4 / session-destroy