Trong hành trình phát triển ứng dụng web với PHP, “Session” đóng vai trò vô cùng quan trọng, như một người hướng dẫn chứa đựng những bí mật cần thiết cho sự tương tác liên tục giữa người dùng và hệ thống.
Việc nắm vững Sessions không chỉ không chỉ giúp tối ưu hóa hiệu suất ứng dụng mà còn có khả năng xử lý dữ liệu người dùng một cách linh hoạt và an toàn. Trong bài viết này, hãy cũng SmartOSC Careers tìm hiểu kĩ từ A đến Z về Session trong PHP nhé!
Session là gì?
Trong PHP, “session” là một cơ chế giữ lại thông tin trạng thái (state information) giữa các trang web khác nhau hoặc giữa các lượt truy cập của cùng một người dùng. Session trong PHP thường được sử dụng để lưu trữ dữ liệu như biến, mảng, hoặc đối tượng trên máy chủ, và sau đó có thể được truy cập và sử dụng trên các trang web khác nhau trong quá trình người dùng duyệt web.
Cookies cũng là một cách để lưu trữ thông tin trạng thái giữa các yêu cầu của người dùng trên trang web, nhưng giữa Cookies và Session có những sự khác biệt quan trọng. Cookies sẽ lưu trữ thông tin trên máy tính người dùng, trong khi Session lưu trữ trên máy chủ. Cookies cũng bị giới hạn về mặt dung lượng lưu trữ, tối đa lên đến vài kilobytes, trong khi Session có dung lượng lưu trữ hơn hẳn do sử dụng máy chủ. Vì vậy, Cookies thích hợp để lưu trữ thông tin nhỏ, không cần bảo mật cao còn Session thích hợp lưu trữ thông tin lớn và nhạy cảm,
Cách khởi tạo một session
Để khởi tạo một Session trong PHP, bạn sử dụng hàm session_start(). Hàm này cần được gọi lên trước khi bạn thực hiện bất kỳ thao tác nào liên quan đến Sessions. Dưới đây là hướng dẫn cơ bản:
<?php
// Bắt đầu một Session
session_start();
// Tiếp tục với mã PHP và HTML ở đây
?>
Sau khi Session đã được bắt đầu, bạn có thể sử dụng biến $_SESSION để lưu trữ và truy xuất dữ liệu. Biến này là một mảng liên kết và có thể chứa mọi loại dữ liệu.
<?php
// Bắt đầu một Session
session_start();
// Gán giá trị cho biến Session
$_SESSION[‘user_id’] = 123;
$_SESSION[‘user_name’] = ‘john_doe’;
// Truy xuất giá trị từ biến Session
$userId = $_SESSION[‘user_id’];
$userName = $_SESSION[‘user_name’];
?>
Bạn có thể kiểm tra xem một Session đã được khởi tạo hay chưa bằng cách sử dụng hàm isset().
<?php
// Bắt đầu một Session
session_start();
// Kiểm tra tồn tại của một biến Session
if (isset($_SESSION[‘user_id’])) {
// Session tồn tại, thực hiện các thao tác khác ở đây
} else {
// Session không tồn tại, có thể thực hiện các thao tác mặc định
}
?>
Lưu ý rằng mỗi trang cần gọi session_start() để sử dụng và quản lý Session. Hàm này sẽ thiết lập hoặc sử dụng Session ID để xác định Session của người dùng và duy trì thông tin trạng thái giữa các yêu cầu. Vậy làm thế nào để tạo và quản lý session ID?
Hướng dẫn tạo và quản lý session ID
Session ID là một định danh duy nhất được tạo ra cho mỗi phiên làm việc của người dùng và được sử dụng để xác định phiên làm việc đó trên máy chủ. Cách Session ID được tạo và quản lý thường phụ thuộc vào cấu hình PHP.
Cách tạo:
Session ID thường được tạo bằng cách sử dụng một chuỗi ngẫu nhiên hoặc một giải thuật mã hóa mạnh mẽ. PHP tự động xử lý quá trình này khi session_start() được gọi.
Cách quản lý:
- Session ID thường được tự động chèn vào mỗi yêu cầu HTTP từ trình duyệt của người dùng. Nó có thể xuất hiện trong URL (nếu được cấu hình như vậy) hoặc trong header của yêu cầu HTTP.
- Bạn có thể tùy chỉnh cách PHP quản lý Session ID thông qua các thiết lập trong tệp cấu hình php.ini hoặc bằng cách sử dụng các hàm cấu hình session như session_id().
<?php
// Thiết lập Session ID bằng cách sử dụng hàm session_id()
session_id(“custom_session_id”);
// Bắt đầu một Session
session_start();
?>
Lưu ý rằng Session ID chủ yếu được sử dụng để liên kết với dữ liệu Session trên máy chủ, và quá trình này giúp duy trì thông tin trạng thái giữa các yêu cầu khác nhau từ người dùng.
Tham khảo thêm: Mảng (Array) và các hàm xử lý mảng trong PHP
Cách tối ưu hóa hiệu suất của session
- Đặt thời gian sống cho session: Khi xây dựng ứng dụng web với PHP, việc đặt thời gian sống cho Session là quan trọng để tối ưu hóa hiệu suất và bảo đảm an toàn thông tin. Thời gian sống xác định thời lượng mà Session sẽ tồn tại trên máy chủ trước khi bị xóa.
<?php
// Đặt thời gian sống cho Session là 30 phút
session_set_cookie_params(1800); // 1800 giây = 30 phút
// Bắt đầu một Session
session_start();
?>
Bằng cách này, bạn có thể kiểm soát việc thông tin Session được lưu trữ trong thời gian ngắn, giúp giảm áp lực cho máy chủ và cải thiện hiệu suất ứng dụng.
- Sử Dụng session_regenerate_id(): Để bảo vệ khỏi các tấn công session hijacking, bạn có thể sử dụng session_regenerate_id(). Hàm này tạo một Session ID mới, thường được gọi khi người dùng đăng nhập thành công hoặc thực hiện các hành động quan trọng khác.
<?php
// Bắt đầu một Session
session_start();
// Kiểm tra nếu đã đăng nhập thành công
if ($user_authenticated) {
// Tạo một Session ID mới
session_regenerate_id(true);
}
?>
Bằng cách này, kẻ tấn công sẽ gặp khó khăn khi cố gắng giành quyền kiểm soát Session ID, vì ID đã được thay đổi đột ngột. Điều này làm tăng cường bảo mật cho ứng dụng và giảm rủi ro từ các cuộc tấn công session hijacking.
Cách hủy một session trong PHP
Để hủy (xóa) một Session trong PHP, bạn có thể sử dụng hàm session_destroy(). Hàm này sẽ xoá hết tất cả các biến của Session và kết thúc phiên làm việc hiện tại. Dưới đây là cách bạn có thể thực hiện điều này:
<?php
// Bắt đầu một Session
session_start();
// Thực hiện các thao tác với Session
// Hủy (xóa) Session
session_destroy();
?>
Lưu ý rằng session_destroy() chỉ xoá thông tin Session trên máy chủ và không xóa Session ID trên máy tính người dùng. Để đảm bảo rằng người dùng cũng mất Session ID, bạn có thể thiết lập lại giá trị của các biến Session bằng cách gán chúng giá trị rỗng hoặc null, và sau đó gọi hàm session_unset():
<?php
// Bắt đầu một Session
session_start();
// Xóa giá trị của các biến Session
$_SESSION = array();
// Xóa Session ID trên máy tính người dùng
if (ini_get(“session.use_cookies”)) {
$params = session_get_cookie_params();
setcookie(
session_name(),
”,
time() – 42000,
$params[“path”],
$params[“domain”],
$params[“secure”],
$params[“httponly”]
);
}
// Hủy (xóa) Session
session_destroy();
?>
Việc thiết lập lại giá trị của biến Session có thể được thực hiện theo nhu cầu cụ thể của bạn.
Bài viết trên đã giúp chúng ta hiểu được những thông tin cơ bản và thiết yếu về Session trong PHP. Hi vọng các bạn đã thu thập được thêm nhiều thông tin bổ ích! Hiện tại SmartOSC Careers đang tuyển dụng nhiều vị trí IT khác nhau, trong đó có những vị trí sử dụng ngôn ngữ PHP, các bạn có thể tham khảo thêm tại việc làm IT, tuyển dụng Fresher.