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ể.


1. Cấu hình thư viện Session trong CodeIgniter

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.

Các bước cấu hình:

  • Mở file /application/config/config.php.
  • Tìm đến cấu hình liên quan đến session.

Dưới đây là một số cài đặt cơ bản trong file config.php:

sess_driver
  1. Cập nhật cấu hình sess_save_path trong config.php với tên bảng đã tạo:
set_userdata()

3.2 Truy xuất dữ liệu session

Để truy xuất dữ liệu đã lưu trong session, bạn có thể sử dụng phương thức userdata().

unset_userdata()

3.4 Xóa tất cả dữ liệu session

Để 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()

4.2 Truy xuất Flashdata

Để truy xuất flashdata, bạn sử dụng phương thức flashdata().

keep_flashdata()

5. Cấu hình bảo mật cho session

5.1 Xác thực IP

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

6. Các tình huống sử dụng thư viện Session

6.1 Lưu trữ thông tin đăng nhập

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
  • Để thay đổi tên của session cookie, bạn chỉ cần thay đổi giá trị này thành một tên khác, chẳng hạn như 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.


3. Sử dụng Session đăng nhập với tên mới (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.

3.1 Thiết lập session đăng nhập

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

4. Quản lý Session an toàn và hiệu quả

4.1 Giới hạn thời gian tồn tại của 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.


5. Kết luậ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.