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 - คุณจะเห็นข้อความดังที่แสดงในภาพต่อไปนี้