我有一个基于模板的站点,它始终依赖于持久会话。最近我需要通过定义数据库存储的保存处理程序来扩展会话存储。这在框架内的类的一般范围内工作正常,但是当任何页面发出ajax请求时会重新生成会话ID,如果表单被提交,则前一个会话就会消失。
<?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')
);
}
答案 0 :(得分:3)
请检查您是否已使用session_start()启动会话。
答案 1 :(得分:0)
我改变了php.ini文件中的一些变量,看看那里的某些东西是否导致了问题,现在它在数据库中和基于文件一样好用。保持相同的ID。
<。> session.cookie_secure在.ini文件中设置为1,我将其更改为0.