Làm cách nào để sử dụng phiên trong bảng cơ sở dữ liệu với php và mysql?đặt phiên trong cơ sở dữ liệu trong php
Trả lời
Bạn sẽ cần phải tạo một đối tượng như vậy:
class SessionHandler
{
private static $lifetime = 0;
private function __construct() //object constructor
{
session_set_save_handler(
array($this,'open'),
array($this,'close'),
array($this,'read'),
array($this,'write'),
array($this,'destroy'),
array($this,'gc')
);
}
public function start($session_name = null)
{
session_start($session_name); //Start it here
}
public static function open()
{
//Connect to mysql, if already connected, check the connection state here.
return true;
}
public static function read($id)
{
//Get data from DB with id = $id;
}
public static function write($id, $data)
{
//insert data to DB, take note of serialize
}
public static function destroy($id)
{
//MySql delete sessions where ID = $id
}
public static function gc()
{
return true;
}
public static function close()
{
return true;
}
public function __destruct()
{
session_write_close();
}
}
Sau đó, trước khi session_start khởi lớp này!
include 'classes/sessionHandlerDB.php';
$session = new SessionHandler();
$session->start('userbase');
$_SESSION['name'] = 'Robert Pitt'; //This is sent to SessionHandler::write('my_id','Robert Pitt')
echo $_SESSION['name']; //This calls SessionHandler::read($id)//$id is Unique Identifier for that
http://php.net/manual/en/function.session-set-save-handler.php
Bạn có thể cho tôi biết làm cách nào để sử dụng mã này để đặt phiên không? Có sự khác biệt nào với cài đặt phiên bình thường không? – shin
Cơ bản bạn sử dụng $ _SESSION ... Điều này sẽ truy vấn SessionHandler, có nghĩa là trình xử lý phiên là người trung gian, nó tạo dữ liệu và trả về dữ liệu, Nếu bạn áp dụng trình xử lý của riêng mình, bạn có thể lưu trữ theo cách bạn muốn, DB, File etc Thực hiện điều này sẽ cho PHP biết rằng khi bạn sử dụng Session để truy vấn lớp này cho dữ liệu. aslong như bạn bao gồm các tập tin này và tạo ra một thể hiện của nó tất cả mọi thứ khác bạn làm sẽ không thay đổi chấp nhận phương pháp lưu trữ sẽ được DB. Ive cập nhật bài viết của tôi, xin vui lòng xem xét – RobertPitt
Ngoài ra mã này là hoàn toàn ví dụ, tôi sẽ mở rộng nó để có một đối tượng lưu trữ để bạn giảm các cuộc gọi đến db, cũng nhìn vào MemCached! – RobertPitt
Bạn kiểm soát điều này trong php.ini
theo chỉ thị session_handler
. Kiểm tra http://www.tonymarston.net/php-mysql/session-handler.html để dễ dàng đi qua (sử dụng nó trước đó).
Bạn cần sử dụng session_set_save_handler
để viết các chức năng thu thập, mở, đọc, ghi, hủy và thu gom rác tùy chỉnh.
Xem mã github của tôi đoạn PHP5.4-DB-Session-Handler-Class cho một cơ sở dữ liệu điều khiển lớp quản lý phiên trong PHP 5.4.
- 1. Phiên PHP trong Cơ sở dữ liệu
- 2. php: phiên so với cơ sở dữ liệu
- 3. Cơ sở dữ liệu phiên mã Code
- 4. Phiên cơ sở dữ liệu là gì?
- 5. Cấu hình cơ sở dữ liệu Symfony2 trong tệp PHP
- 6. Tomcat: Lưu trữ phiên trong cơ sở dữ liệu
- 7. Cơ sở dữ liệu rỗng trong MySQL và PHP?
- 8. Store datetime php trong cơ sở dữ liệu mysql
- 9. Cài đặt cơ sở dữ liệu Joomla
- 10. Tôi có nên sử dụng Phiên cơ sở dữ liệu hoặc Phiên tệp PHP gốc không?
- 11. Cơ sở dữ liệu phiên bản trong các ứng dụng đã cài đặt bằng Delphi
- 12. Đặt cơ sở dữ liệu hiện tại trong MySQL Script
- 13. Đặt tên cột boolean trong bảng cơ sở dữ liệu
- 14. Đặt khóa chính trong cơ sở dữ liệu rất lớn
- 15. Các phương pháp hay nhất để lưu trữ dữ liệu phiên PHP trong cơ sở dữ liệu là gì?
- 16. Heroku không đặt cơ sở dữ liệu
- 17. mangento trong cơ sở dữ liệu hoặc cơ sở oracle?
- 18. Cách đặt UTF-8 trong hàm tạo lớp PDO cho cơ sở dữ liệu PHP PgSQL
- 19. Tạo dữ liệu thử nghiệm trong cơ sở dữ liệu
- 20. PROJECTION trong cơ sở dữ liệu vertica
- 21. Nhiều cơ sở dữ liệu trong Rails
- 22. Cách di chuyển dữ liệu và cài đặt từ cơ sở dữ liệu này sang cơ sở dữ liệu khác?
- 23. Lỗi khi kéo cơ sở dữ liệu mysql trong cơ sở dữ liệu mysql cục bộ
- 24. Đặt Rails lên trên cơ sở dữ liệu hiện có
- 25. Kiểm soát phiên bản cơ sở dữ liệu
- 26. Cách: phiên bản cơ sở dữ liệu với maven2?
- 27. Django: dọn dẹp bảng cơ sở dữ liệu phiên
- 28. Cập nhật các phiên bản cơ sở dữ liệu sqlite?
- 29. Cách tìm phiên bản tệp cơ sở dữ liệu SQLITE
- 30. Không thể khôi phục Cơ sở dữ liệu, Cơ sở dữ liệu đang được sử dụng theo phiên
Bạn có thể cung cấp thêm thông tin cho chúng tôi không? Chính xác thì bạn sẽ làm gì với các phiên? – 2ndkauboy
Bạn có thể muốn tìm kiếm trên Google trước tiên. Một trong những liên kết đầu tiên mà nó sẽ cung cấp cho bạn là điều này, ví dụ: http://www.devshed.com/c/a/PHP/Storing-PHP-Sessions-in-a-Database/ – nico
Thông thường phiên được lưu trữ trong các tệp tạm thời trong máy chủ. Tôi muốn lưu trữ phiên trong bảng cơ sở dữ liệu. – shin