2014-11-24 122 views
0

我有一個基於模板的站點,它始終依賴於持久會話。最近我需要通過定義數據庫存儲的保存處理程序來擴展會話存儲。這在框架內的類的一般範圍內工作正常,但是當任何頁面發出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') 
); 

}

+0

腳本 - 這ouhtit Ajax請求單獨的文件或嵌入結構,你可能已經忘記了在session_start() – 2014-11-24 06:23:31

+0

的處理程序類是從索引頁面和ajax頁面調用的。在每個頁面上設置處理程序後調用session_start。會話不會保持持久性,每次調用session_start時都會重新生成id,這使得不能從ajax傳遞會話並在主類中保留它們。 – Finn 2014-11-24 06:37:23

+1

你能告訴我你是如何處理會議的嗎? – Tristup 2014-11-24 06:41:49

回答

0

我在php.ini文件中修改了一些變量,以查看是否有內容導致問題,現在它在數據庫中也能像基於文件一樣工作。保持相同的ID。

session.cookie_secure設置爲1 .ini文件,我改變了0

3

請檢查您是否已經與在session_start開始會話()。