CakePHP 會話管理

cakephp 會話管理

 

session 允許我們跨請求管理唯一用戶,并為特定用戶存儲數(shù)據(jù)。會話數(shù)據(jù)可以在您有權(quán)訪問請求對象的任何地方、任何地方訪問,即可以從控制器、視圖、助手、單元格和組件訪問會話。

 

訪問會話對象

可以通過執(zhí)行以下代碼來創(chuàng)建會話對象。

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

 

寫入會話數(shù)據(jù)

要在 session 中寫東西,我們可以使用 write() session 方法。

session::write($key, $value)

上述方法將采用兩個參數(shù), valuekey 下的值將被存儲。

 

示例

$session->write('name', 'virat gandhi');

 

讀取會話數(shù)據(jù)

要從 session 中檢索存儲的數(shù)據(jù),我們可以使用 read() session 方法。

session::read($key)

上述函數(shù)將只接受一個參數(shù),即 值的鍵,在寫入會話數(shù)據(jù)時使用。一旦提供了正確的密鑰,函數(shù)就會返回它的值。

 

示例

$session->read('name');

當您想檢查會話中是否存在特定數(shù)據(jù)時,您可以使用 check() session 方法。

session::check($key)

上述函數(shù)將只接受 key 作為參數(shù)。

 

示例

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

 

刪除會話數(shù)據(jù)

要從 session 中刪除數(shù)據(jù),我們可以使用 delete() session 方法刪除數(shù)據(jù)。

session::delete($key)

上述函數(shù)將只獲取要從會話中刪除的值的鍵。

 

示例

$session->delete('name');

當你想從 session 中讀取然后刪除數(shù)據(jù)時,我們可以使用 consume() session 方法。

static session::consume($key)

上述函數(shù)將只接受鍵作為參數(shù)。

 

示例

$session->consume('name');

 

銷毀會話

我們需要銷毀一個用戶會話,當用戶從站點注銷并銷毀會話時,使用 destroy() 方法。

session::destroy()

 

示例

$session->destroy();

銷毀會話將從服務(wù)器中刪除所有會話數(shù)據(jù),但不會刪除會話 cookie。

 

續(xù)訂會話

如果您想續(xù)訂用戶會話,我們可以使用 renew() session 方法。

session::renew()

 

示例

$session->renew();

 

完成會話

config/routes.php 文件中進行更改,如以下程序所示。

config/routes.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();
});

src/controller/sessionscontroller.php 中創(chuàng)建一個 sessionscontroller.php 文件。 將以下代碼復(fù)制到控制器文件中

src/controller/sessionscontroller.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();
   }
}
?>

src/template 創(chuàng)建一個目錄 sessions,然后在該目錄下創(chuàng)建一個名為 write_session_data.php 的 view 文件。 b> 在該文件中復(fù)制以下代碼。

src/template/sessions/write_session_data.php

the data has been written in session.

在同一 sessions 目錄下創(chuàng)建另一個名為 retrieve_session_data.phpview 文件,并將以下代碼復(fù)制到該文件中。

src/template/sessions/retrieve_session_data.php

here is the data from session.
name: <!--?=$name;                
相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频