Bài 25: Section trong PHP

Trong hướng dẫn này, bạn sẽ tìm hiểu cách lưu trữ dữ liệu nhất định trên máy chủ tạm thời bằng cách sử dụng Section trong PHP.

Section trong PHP

Trong hướng dẫn này, bạn sẽ tìm hiểu cách lưu trữ dữ liệu nhất định tạm thời trên máy chủ bằng cách sử dụng Section trong PHP.

Section trong PHP
Section trong PHP

Section trong PHP là gì?

Section có nghĩa là Phiên.

Mặc dù bạn có thể lưu trữ dữ liệu bằng cookie nhưng nó có một số vấn đề bảo mật. Vì cookie được lưu trữ trên máy tính của người dùng, kẻ tấn công có thể dễ dàng sửa đổi nội dung cookie để chèn dữ liệu có hại trong website của bạn.

Ngoài ra, mỗi khi trình duyệt gửi một request URL đến máy chủ, tất cả dữ liệu cookie cho trang web sẽ tự động được gửi đến máy chủ trong request đó.

Điều này có nghĩa là nếu bạn đã lưu trữ 5 cookie trên hệ thống của người dùng, mỗi cookie có kích thước 4KB, trình duyệt cần tải thêm 20KB dữ liệu mỗi khi người dùng xem một trang, điều này có thể ảnh hưởng đến hiệu suất trang web của bạn.

Bạn có thể giải quyết cả hai vấn đề này bằng cách sử dụng Section trong PHP. Một phiên lưu trữ dữ liệu trên máy chủ thay vì máy tính của người dùng.

Trong mỗi phiên, mọi người dùng được xác định thông qua một số duy nhất được gọi là định danh phiên hoặc SID. Section ID duy nhất này được sử dụng để liên kết mỗi người dùng với thông tin của riêng họ trên máy chủ như email, bài đăng, v.v.

Note: ID phiên được tạo ngẫu nhiên bởi công cụ PHP gần như không thể đoán được. Hơn nữa, vì dữ liệu phiên được lưu trữ trên máy chủ, nên nó không cần phải gửi với request của user.

Các khởi tạo một phiên trong PHP

Trước khi bạn có thể lưu trữ bất kỳ thông tin nào trong các biến của phiên, trước tiên bạn phải bắt đầu khởi tạo một phiên.

Để bắt đầu một phiên mới, chỉ cần gọi hàm PHP session_start(). Nó sẽ tạo một phiên mới và tạo ID phiên duy nhất cho người dùng.

Đoạn mã PHP trong ví dụ dưới đây chỉ đơn giản là bắt đầu một phiên mới.:

<?php
  // Bắt đầu một phiên
  session_start();
?>

Hàm session_start() trước tiên kiểm tra xem liệu một phiên đã tồn tại chưa bằng cách tìm kiếm sự hiện diện của ID.

  • Nếu nó tìm thấy, tức là phiên đã bắt đầu, nó sẽ thiết lập các biến phiên
  • Nếu không, nó sẽ bắt đầu một phiên mới bằng cách tạo ID phiên mới.

Lưu ý: Bạn phải gọi hàm session_start() ở ngay đầu trang tức là trước bất kỳ đoạn mã nào, nó cũng giống như bạn làm trong khi thiết lập cookie với hàm setcookie().

Hướng dẫn lưu trữ và truy cập dữ liệu của Phiên

Bạn có thể lưu trữ tất cả dữ liệu phiên của mình dưới dạng các cặp key – value trong mảng supperglobal $ _SESSION[].

Dữ liệu được lưu trữ có thể được truy cập trong suốt thời gian tồn tại của phiên. Hãy xem xét đoạn mã sau, cách tạo ra một phiên mới và đăng ký hai biến phiên.

<?php
  // Starting session
  session_start();
 
  // Storing session data
  $_SESSION["firstname"] = "Php";
  $_SESSION["lastname"] = "DEV";
?>

Để truy cập dữ liệu phiên, chúng ta đã đặt trên ví dụ trước từ bất kỳ trang nào khác trên cùng một tên miền web – chỉ cần tạo lại phiên bằng cách gọi session_start() và sau đó chuyển key tương ứng vào mảng kết hợp $ _SESSION

<?php
  // Starting session
  session_start();
 
  // Accessing session data
  echo 'Hi, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"];
?>

Đoạn mã PHP trong ví dụ trên tạo ra kết quả như sau:

Hi, Php DEV

Note: Để truy cập dữ liệu phiên trong cùng một trang, không cần phải tạo lại phiên vì nó đã được bắt đầu trên đầu trang.

Hướng dẫn các Phá hủy Phiên

Nếu bạn muốn xóa dữ liệu nhất định của phiên, chỉ cần unset key tương ứng của mảng kết hợp $_SESSION, như trong ví dụ sau:

<?php
  // Bắt đầu phiên
  session_start();
 
  // Xóa dữ liệu của phiên
  if(isset($_SESSION["lastname"])){
      unset($_SESSION["lastname"]);
  }
?>

Tuy nhiên, việc unset không phá hủy hoàn toàn phiên.

Muốn hủy hoàn toàn một phiên, chỉ cần gọi hàm session_destroy(). Hàm này không cần bất kỳ đối số nào và một lệnh gọi sẽ hủy tất cả dữ liệu phiên.

<?php
  // Bắt đầu phiên
  session_start();
 
  // Phá hủy phiên
  session_destroy();
?>

Lưu ý: Trước khi hủy phiên với hàm session_destroy(), trước tiên bạn cần tạo lại môi trường phiên nếu nó chưa có ở đó bằng cách sử dụng hàm session_start(). Phải có thứ gì đó thì mới hủy được chứ, đúng không nào?

Mỗi phiên PHP có một giá trị thời gian chờ – thời lượng, được tính bằng giây – xác định thời gian một phiên sẽ tồn tại trong trường hợp không có bất kỳ hoạt động nào của người dùng. Bạn có thể điều chỉnh thời lượng hết thời gian này bằng cách thay đổi giá trị của biến session.gc_maxlifetime trong tệp cấu hình PHP (php.ini).

Lời kết

Như vậy qua bài này bạn đã biết Section (phiên) là gì, cách tạo một phiên, các truy cập phiênxóa / phá hủy dữ liệu của phiên.

Chúng ta sẽ còn sử dụng phiên để cá nhân hóa trải nghiệm cho người dùng rất nhiều. Bạn sẽ quen dần qua các bài tập sau này.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *