cakephp 會(huì)話(huà)管理
session 允許我們跨請(qǐng)求管理唯一用戶(hù),并為特定用戶(hù)存儲(chǔ)數(shù)據(jù)。會(huì)話(huà)數(shù)據(jù)可以在您有權(quán)訪(fǎng)問(wèn)請(qǐng)求對(duì)象的任何地方、任何地方訪(fǎng)問(wèn),即可以從控制器、視圖、助手、單元格和組件訪(fǎng)問(wèn)會(huì)話(huà)。
訪(fǎng)問(wèn)會(huì)話(huà)對(duì)象
可以通過(guò)執(zhí)行以下代碼來(lái)創(chuàng)建會(huì)話(huà)對(duì)象。
$session = $this->request->session();
寫(xiě)入會(huì)話(huà)數(shù)據(jù)
要在 session 中寫(xiě)東西,我們可以使用 write() session 方法。
session::write($key, $value)
上述方法將采用兩個(gè)參數(shù), value 和 key 下的值將被存儲(chǔ)。
示例
$session->write('name', 'virat gandhi');
讀取會(huì)話(huà)數(shù)據(jù)
要從 session 中檢索存儲(chǔ)的數(shù)據(jù),我們可以使用 read() session 方法。
session::read($key)
上述函數(shù)將只接受一個(gè)參數(shù),即 值的鍵,在寫(xiě)入會(huì)話(huà)數(shù)據(jù)時(shí)使用。一旦提供了正確的密鑰,函數(shù)就會(huì)返回它的值。
示例
$session->read('name');
當(dāng)您想檢查會(huì)話(huà)中是否存在特定數(shù)據(jù)時(shí),您可以使用 check() session 方法。
session::check($key)
上述函數(shù)將只接受 key 作為參數(shù)。
示例
if ($session->check('name')) { // name exists and is not null. }
刪除會(huì)話(huà)數(shù)據(jù)
要從 session 中刪除數(shù)據(jù),我們可以使用 delete() session 方法刪除數(shù)據(jù)。
session::delete($key)
上述函數(shù)將只獲取要從會(huì)話(huà)中刪除的值的鍵。
示例
$session->delete('name');
當(dāng)你想從 session 中讀取然后刪除數(shù)據(jù)時(shí),我們可以使用 consume() session 方法。
static session::consume($key)
上述函數(shù)將只接受鍵作為參數(shù)。
示例
$session->consume('name');
銷(xiāo)毀會(huì)話(huà)
我們需要銷(xiāo)毀一個(gè)用戶(hù)會(huì)話(huà),當(dāng)用戶(hù)從站點(diǎn)注銷(xiāo)并銷(xiāo)毀會(huì)話(huà)時(shí),使用 destroy() 方法。
session::destroy()
示例
$session->destroy();
銷(xiāo)毀會(huì)話(huà)將從服務(wù)器中刪除所有會(huì)話(huà)數(shù)據(jù),但不會(huì)刪除會(huì)話(huà) cookie。
續(xù)訂會(huì)話(huà)
如果您想續(xù)訂用戶(hù)會(huì)話(huà),我們可以使用 renew() session 方法。
session::renew()
示例
$session->renew();
完成會(huì)話(huà)
在 config/routes.php 文件中進(jìn)行更改,如以下程序所示。
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)建一個(gè) 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)建一個(gè)目錄 sessions,然后在該目錄下創(chuàng)建一個(gè)名為 write_session_data.php 的 view 文件。 b> 在該文件中復(fù)制以下代碼。
src/template/sessions/write_session_data.php
the data has been written in session.
在同一 sessions 目錄下創(chuàng)建另一個(gè)名為 retrieve_session_data.php 的 view 文件,并將以下代碼復(fù)制到該文件中。
src/template/sessions/retrieve_session_data.php
here is the data from session. name: <!--?=$name;
- CodeIgniter 錯(cuò)誤處理
- CodeIgniter 頁(yè)面重定向
- CodeIgniter 應(yīng)用程序分析
- CakePHP 視圖
- CakePHP 查看事件
- CakePHP 使用數(shù)據(jù)庫(kù)
- CakePHP 刪除記錄
- CakePHP 日志記錄
- CakePHP 創(chuàng)建驗(yàn)證器
- CakePHP 日期和時(shí)間
- FuelPHP 教程
- FuelPHP 安裝
- FuelPHP 視圖
- FuelPHP 事件
- Laravel 配置
- Laravel Blade模板
- Laravel 錯(cuò)誤和日志
- Laravel 本地化
- Laravel 錯(cuò)誤處理
- Laravel Facades