บทความ

เซสชันใน Laravel คืออะไร การกำหนดค่าและการใช้งานพร้อมตัวอย่าง

เซสชัน Laravel อนุญาตให้คุณเก็บข้อมูล และแลกเปลี่ยนระหว่างคำขอในเว็บแอปพลิเคชันของคุณ 

เป็นวิธีที่ง่ายในการคงข้อมูลไว้สำหรับผู้ใช้ปัจจุบัน บทช่วยสอนนี้จะให้พื้นฐานการทำงานกับเซสชันใน Laravel

เซสชัน Laravel คืออะไร

ใน Laravel เซสชันเป็นวิธีการจัดเก็บข้อมูล เพื่อจัดการคำขอที่ผู้ใช้ร้องขออย่างถูกต้อง เมื่อผู้ใช้เริ่มต้นแอปพลิเคชัน Laravel เซสชันจะเริ่มต้นโดยอัตโนมัติสำหรับผู้ใช้รายนั้น ข้อมูลเซสชันถูกจัดเก็บไว้ในเซิร์ฟเวอร์ และคุกกี้ขนาดเล็กที่มีตัวระบุเฉพาะจะถูกส่งไปยังเบราว์เซอร์ของผู้ใช้เพื่อระบุเซสชัน

คุณสามารถใช้เซสชันเพื่อจัดเก็บข้อมูลที่คุณต้องการใช้ในหลายๆ หน้าหรือหลายคำขอ ตัวอย่างเช่น คุณอาจใช้เซสชันสำหรับการตรวจสอบสิทธิ์ผู้ใช้หรือเก็บข้อมูลอื่นๆ ที่คุณต้องการใช้ระหว่างเซสชันบนแอปพลิเคชันของคุณ

การกำหนดค่าเซสชันใน Laravel

หากต้องการใช้เซสชันใน Laravel คุณต้องเปิดใช้งานในไฟล์ก่อน config/session.php ของการกำหนดค่า ในไฟล์นี้ คุณสามารถตั้งค่าพารามิเตอร์คอนฟิกูเรชันที่เกี่ยวข้องกับเซสชันได้ ตัวอย่างเช่น ระยะเวลาของเซสชัน โปรแกรมควบคุมที่ใช้สำหรับจัดเก็บข้อมูลเซสชัน และตำแหน่งที่เก็บข้อมูลเซสชัน 

ไฟล์มีตัวเลือกการกำหนดค่าต่อไปนี้:
  • คนขับรถ: ระบุไดรเวอร์เซสชันล่วงหน้าdefiพร้อมใช้. Laravel รองรับไดรเวอร์เซสชันหลายตัว: ไฟล์, คุกกี้, ฐานข้อมูล, apc, memcached, redis, dynamodb และอาร์เรย์;
  • ตลอดชีวิต: ระบุจำนวนนาทีที่เซสชันต้องถือว่าถูกต้อง
  • หมดอายุ_เมื่อ_ปิด: หากตั้งค่าเป็นจริง เซสชันจะหมดอายุเมื่อปิดเบราว์เซอร์ของผู้ใช้
  • การเข้ารหัสลับ: จริง หมายความว่าเฟรมเวิร์กจะเข้ารหัสข้อมูลเซสชันก่อนที่จะถูกจัดเก็บ
  • ไฟล์: หากใช้ไดรเวอร์เซสชันไฟล์ ตัวเลือกนี้จะระบุตำแหน่งที่เก็บไฟล์
  • การเชื่อมต่อ: หากใช้ไดรเวอร์เซสชันฐานข้อมูล ตัวเลือกนี้จะระบุการเชื่อมต่อฐานข้อมูลที่จะใช้
  • ตาราง: หากใช้ไดรเวอร์เซสชันฐานข้อมูล ตัวเลือกนี้จะระบุตารางฐานข้อมูลเพื่อใช้เก็บข้อมูลเซสชัน
  • หวย: อาร์เรย์ของค่าที่ใช้ในการสุ่มเลือกค่าคุกกี้ ID เซสชัน
  • คุกกี้: ตัวเลือกนี้ระบุชื่อของคุกกี้ที่จะใช้ในการจัดเก็บรหัสเซสชัน ตัวเลือกพาธ โดเมน ปลอดภัย http_only และ same_site ใช้เพื่อกำหนดการตั้งค่าคุกกี้สำหรับเซสชัน

ด้านล่างนี้เป็นตัวอย่างของไฟล์ 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

มีสามวิธีในการทำงานกับข้อมูลเซสชันใน 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

จดหมายข่าวนวัตกรรม
อย่าพลาดข่าวสารที่สำคัญที่สุดเกี่ยวกับนวัตกรรม ลงทะเบียนเพื่อรับพวกเขาทางอีเมล

บทความล่าสุด

ผู้จัดพิมพ์และ OpenAI ลงนามข้อตกลงเพื่อควบคุมการไหลของข้อมูลที่ประมวลผลโดยปัญญาประดิษฐ์

เมื่อวันจันทร์ที่แล้ว Financial Times ได้ประกาศข้อตกลงกับ OpenAI FT อนุญาติให้ทำข่าวระดับโลก...

30 2024 เมษายน

การชำระเงินออนไลน์: นี่คือวิธีที่บริการสตรีมมิ่งทำให้คุณชำระเงินตลอดไป

ผู้คนนับล้านชำระค่าบริการสตรีมมิ่ง โดยจ่ายค่าธรรมเนียมการสมัครสมาชิกรายเดือน เป็นความเห็นทั่วไปที่คุณ...

29 2024 เมษายน

Veeam มีการสนับสนุนแรนซัมแวร์ที่ครอบคลุมที่สุด ตั้งแต่การป้องกันไปจนถึงการตอบสนองและการกู้คืน

Coveware by Veeam จะยังคงให้บริการตอบสนองต่อเหตุการณ์การขู่กรรโชกทางไซเบอร์ต่อไป Coveware จะนำเสนอความสามารถในการนิติเวชและการแก้ไข...

23 2024 เมษายน

การปฏิวัติสีเขียวและดิจิทัล: การบำรุงรักษาเชิงคาดการณ์กำลังเปลี่ยนแปลงอุตสาหกรรมน้ำมันและก๊าซอย่างไร

การบำรุงรักษาเชิงคาดการณ์กำลังปฏิวัติภาคส่วนน้ำมันและก๊าซ ด้วยแนวทางเชิงรุกและนวัตกรรมในการจัดการโรงงาน...

22 2024 เมษายน

อ่านนวัตกรรมในภาษาของคุณ

จดหมายข่าวนวัตกรรม
อย่าพลาดข่าวสารที่สำคัญที่สุดเกี่ยวกับนวัตกรรม ลงทะเบียนเพื่อรับพวกเขาทางอีเมล

ติดตามเรา