เป็นวิธีที่ง่ายในการคงข้อมูลไว้สำหรับผู้ใช้ปัจจุบัน บทช่วยสอนนี้จะให้พื้นฐานการทำงานกับเซสชันใน Laravel
ใน Laravel เซสชันเป็นวิธีการจัดเก็บข้อมูล เพื่อจัดการคำขอที่ผู้ใช้ร้องขออย่างถูกต้อง เมื่อผู้ใช้เริ่มต้นแอปพลิเคชัน Laravel เซสชันจะเริ่มต้นโดยอัตโนมัติสำหรับผู้ใช้รายนั้น ข้อมูลเซสชันถูกจัดเก็บไว้ในเซิร์ฟเวอร์ และคุกกี้ขนาดเล็กที่มีตัวระบุเฉพาะจะถูกส่งไปยังเบราว์เซอร์ของผู้ใช้เพื่อระบุเซสชัน
คุณสามารถใช้เซสชันเพื่อจัดเก็บข้อมูลที่คุณต้องการใช้ในหลายๆ หน้าหรือหลายคำขอ ตัวอย่างเช่น คุณอาจใช้เซสชันสำหรับการตรวจสอบสิทธิ์ผู้ใช้หรือเก็บข้อมูลอื่นๆ ที่คุณต้องการใช้ระหว่างเซสชันบนแอปพลิเคชันของคุณ
หากต้องการใช้เซสชันใน Laravel คุณต้องเปิดใช้งานในไฟล์ก่อน config/session.php
ของการกำหนดค่า ในไฟล์นี้ คุณสามารถตั้งค่าพารามิเตอร์คอนฟิกูเรชันที่เกี่ยวข้องกับเซสชันได้ ตัวอย่างเช่น ระยะเวลาของเซสชัน โปรแกรมควบคุมที่ใช้สำหรับจัดเก็บข้อมูลเซสชัน และตำแหน่งที่เก็บข้อมูลเซสชัน
ด้านล่างนี้เป็นตัวอย่างของไฟล์ sessions.php
ด้วยระยะเวลาเซสชัน 120 วินาที การใช้งานไฟล์ที่จัดเก็บไว้ในไดเร็กทอรี framework/sessions
:
<?php
use Illuminate\Support\Str;
return [
'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => env('SESSION_CONNECTION', null),
'table' => 'sessions',
'store' => env('SESSION_STORE', null),
'lottery' => [2, 100],
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),
'path' => '/',
'domain' => env('SESSION_DOMAIN', null),
'secure' => env('SESSION_SECURE_COOKIE'),
'http_only' => true,
'same_site' => 'lax',
];
คุณยังสามารถกำหนดค่าเซสชันโดยใช้ตัวแปรสภาพแวดล้อมในไฟล์ .env
. ตัวอย่างเช่น หากต้องการใช้โปรแกรมควบคุมเซสชันฐานข้อมูลและจัดเก็บข้อมูลเซสชันในตารางเซสชัน ด้วยฐานข้อมูลประเภท MySQL คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้:
SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions
มีสามวิธีในการทำงานกับข้อมูลเซสชันใน Laravel:
helper
ของ global session
;Request instance
. ในกรณีทั้งหมดนี้ ข้อมูลที่คุณจัดเก็บไว้ในเซสชันจะพร้อมใช้งานในคำขอที่ตามมาซึ่งทำโดยผู้ใช้รายเดิมจนกว่าเซสชันจะหมดอายุหรือถูกทำลายด้วยตนเอง
ใน Laravel โดยใช้ฟังก์ชัน Global Session Helper
เป็นวิธีที่สะดวกในการเข้าถึงบริการเซสชันที่จัดทำโดยเฟรมเวิร์ก ช่วยให้คุณสามารถจัดเก็บและดึงข้อมูลจากเซสชันในแอปพลิเคชันของคุณ นี่คือตัวอย่างของวิธีการใช้ session helper
:
// Store data in the session
session(['key' => 'value']);
// Retrieve data from the session
$value = session('key');
// Remove data from the session
session()->forget('key');
// Clearing the Entire Session
session()->flush();
คุณยังสามารถส่งผ่านค่าล่วงหน้าได้definite เป็นอาร์กิวเมนต์ที่สองของฟังก์ชัน session
ซึ่งจะส่งคืนหากไม่พบคีย์ที่ระบุในเซสชัน:
$value = session('key', 'default');
Session Request
ใน Laravel อินสแตนซ์คำขอเซสชันหมายถึงวัตถุที่แสดงถึงคำขอ HTTP และมีข้อมูลเกี่ยวกับคำขอ เช่น วิธีการร้องขอ (GET, POST, PUT เป็นต้น) URL คำขอ ส่วนหัวของคำขอ และเนื้อหาคำขอ . นอกจากนี้ยังมีวิธีการต่าง ๆ ที่สามารถใช้เพื่อดึงและจัดการข้อมูลนี้
โดยทั่วไปแล้วคุณเข้าถึงอินสแตนซ์ของ Session Request
ผ่านตัวแปร $request
ในแอปพลิเคชัน Laravel ตัวอย่างเช่น เซสชันสามารถเข้าถึงได้ผ่านอินสแตนซ์คำขอโดยใช้ฟังก์ชันตัวช่วย session()
.
use Illuminate\Http\Request;
class ExampleController extends Controller
{
public function example(Request $request)
{
// Store data in the session using the put function
$request->session()->put('key', 'value');
// Retrieve data from the session using the get function
$value = $request->session()->get('key');
// Check if a value exists in the session using the has function:
if ($request->session()->has('key')) {
// The key exists in the session.
}
// To determine if a value exists in the session, even if its value is null:
if ($request->session()->exists('users')) {
// The value exists in the session.
}
// Remove data from the session using the forget function
$request->session()->forget('key');
}
}
ในตัวอย่างนี้ ตัวแปร $request
มันเป็นตัวอย่างของชั้นเรียน Illuminate\Http\Request
ซึ่งแสดงถึงคำขอ HTTP ปัจจุบัน ฟังก์ชั่น session
คำขออินสแตนซ์ส่งคืนอินสแตนซ์ของคลาส Illuminate\Session\Store
ซึ่งมีฟังก์ชันต่างๆ สำหรับการทำงานกับเซสชัน
Ercole Palmeri
เมื่อวันจันทร์ที่แล้ว Financial Times ได้ประกาศข้อตกลงกับ OpenAI FT อนุญาติให้ทำข่าวระดับโลก...
ผู้คนนับล้านชำระค่าบริการสตรีมมิ่ง โดยจ่ายค่าธรรมเนียมการสมัครสมาชิกรายเดือน เป็นความเห็นทั่วไปที่คุณ...
Coveware by Veeam จะยังคงให้บริการตอบสนองต่อเหตุการณ์การขู่กรรโชกทางไซเบอร์ต่อไป Coveware จะนำเสนอความสามารถในการนิติเวชและการแก้ไข...
การบำรุงรักษาเชิงคาดการณ์กำลังปฏิวัติภาคส่วนน้ำมันและก๊าซ ด้วยแนวทางเชิงรุกและนวัตกรรมในการจัดการโรงงาน...