2011-07-29 60 views
1

我有一個codeigniter/php網站和flex應用程序。CodeIgniter:當頁面重新加載時,會話cookie中存儲一箇舊的session_id。

我以用戶名「JHON」記錄和做的所有事情,而且越來越註銷。

然後如果我登錄從網站的用戶「鮑勃」,我設置一個新的會話DATAS喜歡的用戶名,用戶id,名字等,在笨會議。還記得codeIgniter session_id。

然後將用戶重定向到flex應用程序,當用戶「bob」從應用程序返回到網站時,默認情況下codeigniter從session-cookie中獲取session_id,這與我在將「bob」重定向到flex之前所看到的不同應用。

我注意到這個變化SESSION_ID是屬於用戶「JHON」。

我不使用$this->session->sess_destroy();註銷時,只需用解封使用unset_userdata()

所有的會話數據下面是我的config.php設置會話和餅乾。

config['sess_cookie_name']  = 'cisession'; 
$config['sess_expiration']  = 7200; 
$config['sess_encrypt_cookie'] = FALSE; 
$config['sess_use_database'] = TRUE; 
$config['sess_table_name']  = 'ci_sessions'; 
$config['sess_match_ip']  = FALSE; 
$config['sess_match_useragent'] = TRUE; 
$config['sess_time_to_update'] = 300; 


$config['cookie_prefix'] = ""; 
$config['cookie_domain'] = ""; 
$config['cookie_path']  = "/"; 

我正在使用數據庫和表「ci_sessions」來存儲會話。我主要在Chrome瀏覽器中看到這個問題,而且在系統重新啓動後也是如此。

意味着我登錄爲「JHON」,這樣做並...... 註銷.. Restrating我的系統.. 再次登錄爲「鮑勃」,重定向到Flex應用程序.. 未來回到codeigniter網站。 我收到登錄爲「JHON」 ......

問題是什麼?

+1

如果你想全自動這樣做,沒有摧毀所有會話數據(你可以保存一些重要的東西),你可以改變'$配置[「sess_time_to_update」]'更短的頻率,並且將值重新生成新的ID已申報。 – toopay

+0

其實我的問題是,在jhon的登錄中,它將會話'8346365934644'存儲在cookie中。我沒有註銷,但重新啓動瀏覽器,再次登錄'鮑勃',新的session_id生成'23823623492',但當我刷新頁面45秒後,它再次得到session_id'8346365934644'。來自哪裏?我不知道!。我認爲它是匹配來自'ci_sessions'表的ip地址和用戶代理數據。 –

+0

'從哪裏?我不知道!。我認爲它與'ci_sessions'表中的IP地址和用戶代理數據相匹配。「將它作爲錯誤提交,如果確實發生了,那麼它應該是錯誤的。會話類應該更新數據庫中的數據,因爲實際的Cookie正在更新。 – toopay

回答

0

的問題是,你不使用它$this->session->sess_destroy();kills the session_id from the database

+0

但是,如果某些用戶未註銷,關閉瀏覽器並重新啓動系統,則也會出現此問題。讓我們舉個例子,'jhon'已經登錄了,沒有做註銷,關閉瀏覽器,系統......'bob'出現在清晨,啓動sysetm,登錄到網站,當時新的'session_id'正在獲取生成,但是當它從應用程序返回到網站30秒後,codeigniter會自動獲取'jhon'的session_id。 –

相關問題