我有一个基于模板的站点,它始终依赖于持久会话。最近我需要通过定义数据库存储的保存处理程序来扩展会话存储。这在框架内的类的一般范围内工作正常,但是当任何页面发出ajax请求时,会话标识将被重新生成,并且如果表单被提交,则前一个会话不见了。Ajax和PHP会话
<?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')
);
}
脚本 - 这ouhtit Ajax请求单独的文件或嵌入结构,你可能已经忘记了在session_start() – 2014-11-24 06:23:31
的处理程序类是从索引页面和ajax页面调用的。在每个页面上设置处理程序后调用session_start。会话不会保持持久性,每次调用session_start时都会重新生成id,这使得不能从ajax传递会话并在主类中保留它们。 – Finn 2014-11-24 06:37:23
你能告诉我你是如何处理会议的吗? – Tristup 2014-11-24 06:41:49