php会话ID不再存在

时间:2019-01-17 19:00:57

标签: php mysql session

我写了一些函数来处理mysql中的php会话。

function __construct() {
    parent::__construct();

    // Set handler to overide SESSION  
    session_set_save_handler(  
        array($this, "_open"),  
        array($this, "_close"),  
        array($this, "_read"),  
        array($this, "_write"),  
        array($this, "_destroy"),  
        array($this, "_gc")  
    );  

    session_start();

}

public function _read($id){ 
    //print("reading");
    $id=$this->sanitary_string($id);    

    $sql="SELECT * FROM session WHERE session_id=".$id; 
    ...

public function _write($id, $data){ 
    //print("writing");
    $w=array();
    $r=array();

    $w["id"]=$id;
    $w["data"]=$_SESSION["mid"];
    $w["date"]=date("Y-m-d G:i:s");

    if($w["data"]<>0){
        $r=$this->sanitary_string($w);
        $sql="INSERT INTO session (mid,session_id,datetime) VALUES (".$r["data"].",".$r["id"].",".$r["date"].")";
        $sql=$sql." ON DUPLICATE KEY UPDATE datetime=".$r["date"];

我遇到的问题是,在创建会话类的新实例时,将运行_read方法。但是,数据库不再具有该会话的ID,因此永远找不到该会话。我的问题是php从哪里获取会话ID,以及如何强制write方法运行或重新生成会话ID。

0 个答案:

没有答案