У меня есть сайт на основе шаблонов, который использует постоянные сессии. Недавно мне нужно было расширить хранилище сеансов, определив обработчик сохранения для хранилища базы данных. Это прекрасно работает в общей области классов в рамках, однако, когда любая из страниц делает запрос ajax, идентификатор сеанса восстанавливается, и если форма отправляется, предыдущий сеанс пропадает.
<?php
require_once('site-database.php');
require_once('site-config.php');class FileSessionHandler
{private $database;
private $life_time;public function FileSessionHandler(){$this->life_time = get_cfg_var("session.gc_maxlifetime");
$this->database = new database();
$this->database->newConnection(db_host,db_user_name,db_user_pass,db_user_database);session_set_save_handler(
array(&$this,'open'),
array(&$this,'close'),
array(&$this,'read'),
array(&$this,'write'),
array(&$this,'destroy'),
array(&$this,'gc')
);
}
Пожалуйста, проверьте, начали ли вы сеанс с помощью session_start ().
Я изменил несколько переменных в файле php.ini, чтобы посмотреть, не вызвало ли что-то там проблему, и теперь она работает так же хорошо в базе данных, как и на основе файлов. Держать тот же идентификатор.
Параметр session.cookie_secure был установлен на 1 в файле .ini, и я изменил его на 0.