所以我有SessionHandler類,那它放入像這樣(cfg_session.php)運動我的其他文件:SESSION_ID行爲古怪
use \Classes\MySessionHandler as Sessao;
$sessao = new Sessao();
// PHP < 5.4
session_set_save_handler(
array($sessao, 'open'),
array($sessao, 'close'),
array($sessao, 'read'),
array($sessao, 'write'),
array($sessao, 'destroy'),
array($sessao, 'gc')
);
register_shutdown_function('session_write_close');
session_start();
好吧,小不同的是,在我的localweb我使用:
session_set_save_handler($sessao)
因爲在我的localweb中,實際上PHP> 5.5。
它在我的localweb上運行得非常好,我刷新頁面,註銷,登錄,關閉標籤頁,打開標籤頁,再次登錄,一切正常,我的瀏覽器中的PHPSESSID等於創建的會話文件等。
編輯:我有一個PHP < 5.4的服務器,而我事實上,使用上面的代碼,意味着PHP < 5.4,但它仍然是怪怪的。刷新瀏覽器,它會創建另一個會話文件,但不會更改PHPSESSID。我第一次嘗試登錄時,過程如下所示:它創建會話文件,我將用戶重定向到某個頁面,該頁面在服務器上執行另一個請求,它只創建與PHPSESSID完全不同的另一個會話文件,當然,該應用程序將我註銷。這是奇怪的部分。
但是,然後,我嘗試再次正常登錄,它將我登錄,很好。每個請求都具有相同的ID,session_regenerate_id()工作正常,一切正常,PHPSESSID與創建的會話文件相匹配。
但是,如果我註銷,關閉該選項卡,打開一個新選項卡並嘗試登錄(或關閉選項卡而不註銷),它只是做同樣的事情:記錄我,創建會話文件,但然後,它再次更改de session_id並將我踢出去。
我真的被困在此。不能確定這是否因爲PHP < 5.4或其他。
注: - session_regenerate_id()正在使用在日誌中,上檢查如果有會議註銷(然後更新時間和調用regenerateId)和。
- cfg_session.php需要一次每一頁需要使用會話變量上。
我需要一些這方面的信息。我已經看到很多主題,但沒有很多信息或接近解決這種奇怪的行爲。提前致謝。
我編輯帖子,看看我是否更清楚,我認爲它錯過了信息。但事情是:我使用的服務器的PHP不到5.4,我使用上面的代碼在PHP中使用少於5.4,好嗎?但它仍然很怪異。 –
該功能不適用於5.4以下的php,如果功能不可用,那麼你如何使用它..... – Vineet1982