簡體   English   中英

PHP使用session_set_save_handler

[英]PHP using session_set_save_handler

下面是直接從php手冊復制而來的,我不確定如何設置它,我只需要做兩件事。

  1. 會話被破壞時編寫一些代碼
  2. 將session_cache_expire設置為20分鍾-是在類中還是作為單獨的調用?

每當頁面上有session_start時,是否需要為每個實例運行sessionavehandler()? 如果有人可以概述使用該課程所需要采取的步驟,那就太好了。

<?php
 new SessionSaveHandler();
 ?>

 <?php

class SessionSaveHandler {
     protected $savePath;
     protected $sessionName;

    public function __construct() {
         session_set_save_handler(
             array($this, "open"),
             array($this, "close"),
             array($this, "read"),
             array($this, "write"),
             array($this, "destroy"),
             array($this, "gc")
         );
     }

    public function open($savePath, $sessionName) {
         $this->savePath = $savePath;
         $this->sessionName = $sessionName;
         return true;
     }

    public function close() {
         // your code if any
         return true;
     }

    public function read($id) {
         // your code
     }

    public function write($id, $data) {
         // your code
     }

    public function destroy($id) {
         // your code
     }

    public function gc($maxlifetime) {
         // your code
     }
 }

new SessionSaveHandler();

?> 

我不確定如何設置它,是否每次在頁面上都有session_start時都需要為每個實例運行sessionavehandler?

是的,您只需創建一個SessionSaveHandler的新實例 代替 調用session_start 之前

我也想更改sesison_cache過期,還是應該在該類中更改?

您只是覆蓋默認的存儲處理程序; 其余的保持不變。 因此,請像以前一樣使用session_cache_expire

如果有人可以概述使用該課程所需要采取的步驟,那就太好了。

如前所述,您只是在覆蓋PHP的默認會話存儲處理程序。 所以 代替 調用session_start 之前,請創建會話存儲處理程序SessionSaveHandler的新實例。 除此之外,使用PHP的默認會話處理程序沒有什么不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM