Trong CodeIgniter, thư viện Session giúp bạn dễ dàng lưu trữ và truy xuất thông tin về người dùng giữa các yêu cầu HTTP. Thư viện này hoạt động tương tự như các session trong PHP, nhưng cung cấp một số tính năng mở rộng giúp việc quản lý session an toàn và linh hoạt hơn.
Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng thư viện Session của CodeIgniter bao gồm các khái niệm, cách cài đặt, và các ví dụ cụ thể.
Mặc định, CodeIgniter sử dụng session theo kiểu Cookie-based, nghĩa là toàn bộ dữ liệu session được lưu trữ trong cookie của trình duyệt. Bạn cũng có thể cấu hình để lưu session vào cơ sở dữ liệu, điều này giúp dữ liệu session an toàn hơn và dễ quản lý hơn khi bạn muốn chia sẻ session giữa nhiều server.
/application/config/config.php
.Dưới đây là một số cài đặt cơ bản trong file config.php
:
sess_driver
sess_save_path
trong config.php
với tên bảng đã tạo:set_userdata()
Để truy xuất dữ liệu đã lưu trong session, bạn có thể sử dụng phương thức userdata()
.
unset_userdata()
Để xóa toàn bộ dữ liệu session và làm mới session, bạn có thể sử dụng phương thức sess_destroy()
.
set_flashdata()
Để truy xuất flashdata, bạn sử dụng phương thức flashdata()
.
keep_flashdata()
CodeIgniter có thể kiểm tra địa chỉ IP của người dùng để đảm bảo rằng session không bị chiếm dụng từ một địa chỉ IP khác. Điều này có thể được bật trong file config.php
:
memcached
Session thường được sử dụng để lưu trữ thông tin người dùng đã đăng nhập, chẳng hạn như ID người dùng, tên đăng nhập, và trạng thái đăng nhập (logged_in
).
../php/sessions
vne_session
:vne_session
Hoặc sử dụng cú pháp PHP để hủy session cookie:
sess_driver = 'files'
Lệnh trên sẽ tìm và xóa tất cả các file session cũ hơn 7 ngày trong thư mục /path/to/php/sessions
.
vne_session
)Sau khi thay đổi tên cookie session thành vne_session
, bạn có thể tiếp tục sử dụng session trong ứng dụng của mình như bình thường mà không ảnh hưởng đến hoạt động đăng nhập của người dùng. Tất cả các session liên quan đến người dùng sẽ được lưu trữ trong cookie vne_session
.
Bạn vẫn có thể lưu trữ thông tin đăng nhập người dùng trong session với cookie mới vne_session
:
vne_session
Bạn có thể kiểm soát thời gian session tồn tại bằng cách cấu hình sess_expiration
trong file config.php
. Điều này giúp giảm dung lượng file session lưu trữ trên server:
config.php
Bạn sẽ cần tạo một bảng session trong cơ sở dữ liệu như đã hướng dẫn ở trên.
Bằng cách thay đổi tên session cookie từ ci_session
thành vne_session
, bạn có thể tránh được việc session cookie mặc định làm đầy dung lượng hệ thống. Đồng thời, bạn cũng có thể quản lý session đăng nhập người dùng với tên cookie khác mà vẫn đảm bảo tính bảo mật và hiệu quả.
Ngoài ra, việc xóa cookie session cũ và định kỳ dọn dẹp file session trên server sẽ giúp bạn kiểm soát dung lượng tốt hơn, đặc biệt trong các hệ thống lớn với nhiều người dùng.