UPDATE(新增的代碼,做讀/寫類)PHP會話只寫入部分信息表
更新:我已經註釋掉了在PHP行。 ini文件允許會話被寫入文件而不是數據庫,並且我將session_start()放在正確的位置上。所以我已經能夠排除其他地方的代碼。只有在使用數據庫存儲會話時纔會出現此問題,這是一項要求,所以如果有任何其他想法可以幫助我解決此問題,請告訴我。謝謝。
原貼: 我有困難,搞清楚發生了什麼事情就到這裏,希望有人能幫助我。
我一直在使用php,mysql將會話信息存儲在數據庫中。該應用程序只在本地主機,Vista上運行。在php.ini文件中,我註釋掉了「session.save_handler = files」這一行,並使用一個php類來處理會話的寫入/讀取等。
我的登錄過程是這樣的:通過登錄提交登錄憑證。 PHP。 login.php調用loginprocess.php。 loginprocess.php驗證用戶,如果有效開始一個新的會話並將數據添加到會話變量,那麼它將重定向到index.php。
這是問題所在。 loginprocess.php頁面有許多會話變量被設置爲$ _SESSION ['account_id'] = $ account_id;等等,但是當我去index.php並做一個var_dump($_SESSION)
它只是說「array()爲空」。但是,如果我在loginprocess.php中執行var_dump($_SESSION)
,那麼在重定向行header("Location: ../index.php");
之前,它會顯示會話變量中的所有數據。如果我查看存儲會話信息的數據庫,session_id字段,created_ts字段和expires字段中有數據,但session_data字段中沒有任何內容,過去,這是所有會話數據的字段被存儲。
我怎麼能夠在loginprocess.php中var_dump會話,但數據不存在於數據庫表中,它使用某種緩存?我清理了我的餅乾等等,但沒有改變。
爲什麼session_id被寫入表中,但實際的會話數據不是?
任何想法表示讚賞。謝謝。
我們將不得不更多地瞭解您用於保存會話數據的過程。你說你正在將它存儲在數據庫中 - 你的會話如何設置讀/寫處理程序? – Johrn 2010-05-18 18:06:02
我已經使用讀/寫的類對象更新了帖子。謝謝你的幫助。 – Ronedog 2010-05-18 20:16:07