Laravel - เซสชัน

เซสชันใช้เพื่อจัดเก็บข้อมูลเกี่ยวกับผู้ใช้ในคำขอต่างๆ Laravel มีไดรเวอร์ต่างๆเช่นfile, cookie, apc, array, Memcached, Redis, และ databaseเพื่อจัดการข้อมูลเซสชัน โดยค่าเริ่มต้นโปรแกรมควบคุมไฟล์จะถูกใช้เนื่องจากมีน้ำหนักเบา สามารถกำหนดค่าเซสชันในไฟล์ที่เก็บไว้ที่config/session.php.

การเข้าถึงข้อมูลเซสชัน

ในการเข้าถึงข้อมูลเซสชันเราจำเป็นต้องมีอินสแตนซ์ของเซสชันซึ่งสามารถเข้าถึงได้ผ่านการร้องขอ HTTP หลังจากได้รับอินสแตนซ์แล้วเราสามารถใช้ไฟล์get() วิธีการซึ่งจะใช้อาร์กิวเมนต์เดียว “key”เพื่อรับข้อมูลเซสชัน

$value = $request->session()->get('key');

คุณสามารถใช้ได้ all() วิธีการรับข้อมูลเซสชันทั้งหมดแทนที่จะเป็น get() วิธี.

การจัดเก็บข้อมูลเซสชัน

ข้อมูลสามารถจัดเก็บในเซสชันโดยใช้ไฟล์ put()วิธี. put() method จะใช้อาร์กิวเมนต์สองตัวคือ “key” และ “value”.

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

การลบข้อมูลเซสชัน

forget()วิธีการใช้เพื่อลบรายการออกจากเซสชัน วิธีนี้จะใช้“key” เป็นอาร์กิวเมนต์

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

ใช้ flush() วิธีการแทน forget()วิธีการลบข้อมูลเซสชันทั้งหมด ใช้pull()วิธีการดึงข้อมูลจากเซสชันและลบทิ้งในภายหลัง จะใช้วิธีดึง () ด้วยkeyเป็นอาร์กิวเมนต์ ความแตกต่างระหว่างforget() และ pull() วิธีการก็คือ forget() วิธีการจะไม่คืนค่าของเซสชันและ pull() วิธีการจะส่งคืนและลบค่านั้นออกจากเซสชัน

ตัวอย่าง

Step 1 - สร้างตัวควบคุมที่เรียกว่า SessionController โดยดำเนินการคำสั่งต่อไปนี้

php artisan make:controller SessionController --plain

Step 2 - หลังจากดำเนินการสำเร็จคุณจะได้รับผลลัพธ์ต่อไปนี้ -

Step 3 - คัดลอกรหัสต่อไปนี้ในไฟล์ที่

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','Virat Gandhi');
      echo "Data has been added to session";
   }
   public function deleteSessionData(Request $request) {
      $request->session()->forget('my_name');
      echo "Data has been removed from session.";
   }
}

Step 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');

Step 5 - ไปที่ URL ต่อไปนี้เพื่อ set data in session.

http://localhost:8000/session/set

Step 6 - ผลลัพธ์จะปรากฏดังที่แสดงในภาพต่อไปนี้

Step 7 - ไปที่ URL ต่อไปนี้เพื่อ get data from session.

http://localhost:8000/session/get

Step 8 - ผลลัพธ์จะปรากฏดังที่แสดงในภาพต่อไปนี้

Step 9 - ไปที่ URL ต่อไปนี้เพื่อ remove session data.

http://localhost:8000/session/remove

Step 10 - คุณจะเห็นข้อความดังที่แสดงในภาพต่อไปนี้