ID сессии php больше не существует - PullRequest
0 голосов
/ 17 января 2019

Я написал некоторую функцию для работы с сессиями php в mysql.

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. Однако в базе данных больше нет идентификатора для этого сеанса, поэтому сеанс никогда не найден. Мой вопрос заключается в том, откуда php получает идентификатор сеанса и как заставить метод write запустить или восстановить идентификатор сеанса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...