Tôi đã sử dụng hệ thống CodeIgniter trong một thời gian - nhưng it has là short comings. Tôi biết ơn vì những gì nó dạy tôi, nhưng bây giờ tôi cần một thư viện cho một dự án phi mã hóa mới và vì vậy tôi đang tìm kiếm các ý tưởng về thư viện nào có điều đúng và không. Tôi có lẽ sẽ phải lấy các mảnh từ một số thư viện để có được mọi thứ tôi cần.Thư viện tốt nhất cho phiên PHP
Tôi vừa xem thư viện Kohana PHP session và tôi thích cách nó trả về cách PHP nguyên gốc khi sử dụng siêu $ _SESSION thay vì buộc thay đổi thành $ this-> phiên này để truy cập dữ liệu.
Ở mức độ nào, tôi muốn biết liệu có các thư viện phiên tốt khác không, tôi có thể đang rối tung. Có rất nhiều thứ phải được xử lý trong một phiên bên cạnh chức năng CRUD.
- Hỗ trợ cho phiên dựa NON-cookie đi (ví dụ: Facebook hoặc uploaders Flash)
- "Flash dữ liệu" mà chỉ kéo dài tải trang tiếp theo và sau đó là tính năng tự động loại bỏ.
- Làm việc với $ _SESSION hoặc $ this-> session để các lập trình viên không phải thay đổi mã hiện có.
- Hỗ trợ đặt id phiên mới (tức là session_id ('id mới')) trong trường hợp bạn muốn thay đổi id giữa chừng trên trang.
- Lưu tất cả dữ liệu ở cuối yêu cầu trang thay vì thêm hoặc xóa dữ liệu mỗi lần (lưu các truy vấn DB bổ sung).
- Hỗ trợ sử dụng tệp, cookie hoặc Cơ sở dữ liệu để lưu trữ. (hoặc memcached sẽ được tốt đẹp)
- Cố gắng từ chối truy cập trong trường hợp có một phiên không tặc. (IP, useragent hoặc fingerprint)
Tôi đã dành một chút thời gian để thực hiện logic cho các thư viện phiên CodeIgniter và Kohana và tôi đã đưa ra những điều sau đây về cách bắt đầu và kết thúc phiên cho trang.
/**************
** Kohana Sessions
**************/
If not native file storage {
session_set_save_handler to the storage type (DB, cache, cookie...)
}
set the session_name() so php knows what cookie value to check
start session
/****** Saving ******/
session_write_close() which calls the given handler
/**************
** CI Sessions
**************/
Try to read_session() -> {
session = Get cookie (if using cookies will also contain data)
if(database) {
session .= pull data from database
}
checks if valid...
$this->userdata = session data
} else {
create a new one
}
/****** Saving ******/
session data is serialized either way
if(cookie) {
save cookie with serialized data and params like "last_activity"
}
if(database) {
save serialized data in db and session in cookie
}
+1. Điều này đã được trong tâm trí của tôi cho đôi khi bây giờ. Cảm ơn bạn đã trình bày chi tiết – andyk