鍍金池/ 教程/ PHP/ Laravel會(huì)話(session)
Laravel操作數(shù)據(jù)庫
Laravel會(huì)話(session)
Laravel文件上傳
Laravel Cookie
Laravel Facades
Laravel應(yīng)用程序結(jié)構(gòu)
Laravel響應(yīng)
Laravel插入數(shù)據(jù)庫表數(shù)據(jù)
Laravel錯(cuò)誤處理
Laravel環(huán)境安裝配置
Laravel本地化
Laravel Ajax
Laravel路由
Laravel錯(cuò)誤和日志記錄
Laravel檢索查詢數(shù)據(jù)
Laravel更新數(shù)據(jù)
Laravel刪除數(shù)據(jù)
Laravel表單處理
Laravel中間件
Laravel控制器
Laravel驗(yàn)證
Laravel安全
Laravel請求
Laravel發(fā)送郵件
Laravel重定向
Laravel教程
Laravel配置
Laravel事件處理
Laravel視圖

Laravel會(huì)話(session)

會(huì)話用于存儲(chǔ)有關(guān)跨請求的用戶信息。Laravel提供了多種驅(qū)動(dòng)器,如 file, cookie, apc, array, Memcached, Redis 和 database 用來處理會(huì)話數(shù)據(jù)。默認(rèn)情況下,使用的文件驅(qū)動(dòng)程序,因?yàn)樗禽p量級的。會(huì)話可以在config/session.php 文件中進(jìn)行配置。

訪問會(huì)話數(shù)據(jù)

訪問會(huì)話數(shù)據(jù),我們需要通過HTTP請求來訪問會(huì)話的一個(gè)實(shí)例。獲得實(shí)例后,我們就可以使用get()方法,這需要一個(gè)參數(shù)-“鍵”,以獲取會(huì)話數(shù)據(jù)。

$value = $request->session()->get('key');
您可以使用 all() 方法來獲取所有的會(huì)話數(shù)據(jù)。

存儲(chǔ)會(huì)話數(shù)據(jù)

可以用put()方法被數(shù)據(jù)保存在會(huì)話中。put()方法有兩個(gè)參數(shù),“key”和“value”。

$request->session()->put('key', 'value');

刪除Session數(shù)據(jù)

forget() 方法用于刪除會(huì)話中的數(shù)據(jù)項(xiàng)。這個(gè)方法將“key”作為參數(shù)。

$request->session()->forget('key'); 

可使用flush()方法來刪除所有的會(huì)話數(shù)據(jù)。 使用 pull() 方法來檢索會(huì)話數(shù)據(jù),然后刪除它。pull()方法也將采用 “key” 作為參數(shù)。forget() 和 pull() 方法之間的差異是forget() 方法將不會(huì)返回會(huì)話的值,而 pull() 方法將返回并刪除會(huì)話值。

示例

第1步 -  通過執(zhí)行以下命令創(chuàng)建一個(gè)名為 SessionsController 的控制器。
php artisan make:controller SessionController
第2步 - 成功執(zhí)行后,您會(huì)收到以下輸出 -

第2步 - 成功執(zhí)行后,您會(huì)收到以下輸出 - app/Http/Controllers/SessionController.php.

app/Http/Controllers/SessionController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class SessionController extends Controller {
   public function accessSessionData(Request $request){
      if($request->session()->has('my_name'))
         echo $request->session()->get('my_name');
      else
         echo 'No data in the session';
   }
   public function storeSessionData(Request $request){
      $request->session()->put('my_name','Yiibai Yiibai');
      echo "Data has been added to session";
   }
   public function deleteSessionData(Request $request){
      $request->session()->forget('my_name');
      echo "Data has been removed from session.";
   }
}
第4步 - 添加以下行到文件 - app/Http/routes.php

app/Http/routes.php

Route::get('session/get','SessionController@accessSessionData');
Route::get('session/set','SessionController@storeSessionData');
Route::get('session/remove','SessionController@deleteSessionData');
第5步 - 請?jiān)L問以下網(wǎng)址來設(shè)置會(huì)話數(shù)據(jù)。

http://localhost:8000/session/set

第6步 - 輸出結(jié)果如下面的圖片所示。

第7步 - 請?jiān)L問以下網(wǎng)址獲取會(huì)話數(shù)據(jù)。

http://localhost:8000/session/get

第8步 - 輸出結(jié)果如下面的圖片所示。


第9步 - 訪問以下網(wǎng)址以刪除會(huì)話數(shù)據(jù)。

http://localhost:8000/session/remove

第10步 - 輸出結(jié)果如下面的圖片所示。