我的生產服務器上出現了一個奇怪的情況。但是,在我的本地開發環境中這不是問題。這是一個測試腳本,我可以複製的問題:PHP post_id()在POST後更改
<?php
session_start();
$_SESSION['test'] = 'test';
echo 'session_id(): '.session_id();
session_write_close();
?>
<form method="POST">
<input type="submit" value="Post to self" />
</form>
如果我在瀏覽器中加載該頁面,並刷新頁面(CTRL + R),我每次都顯示相同的session_id()
值。
但是,如果我再點擊提交按鈕,我得到兩個不同的結果:
- 發展:同
session_id()
值(預期結果)。 - 生產:a 不同
session_id()
值。
此外,在生產服務器上,如果我再重新載入頁面,我得到了原session_id()
值回。
如何讓生產服務器保留session_id()
值?任何建議將不勝感激。
謝謝!
詳情點評: 在我張貼的簡單的例子,它是這樣的:
array(5) {
["lifetime"]=> int(0)
["path"]=> string(1) "/"
["domain"]=> string(0) ""
["secure"]=> bool(false)
["httponly"]=> bool(false)
}
在實際生產中的代碼是這樣的:
array(5) {
["lifetime"]=> int(0)
["path"]=> string(1) "/"
["domain"]=> string(0) ""
["secure"]=> bool(true)
["httponly"]=> bool(true)
}
(我使用生產中的HTTPS)。
閱讀此問題並回答[http:// stackoverflow。COM /問題/ 7180559 /應-I-再生,會話ID上,每一個頁面(http://stackoverflow.com/questions/7180559/should-i-regenerate-session-id-on-every-page ) – 2015-10-15 17:08:21
'var_dump(session_get_cookie_params())'? – Federkun
@Federico - 在我發佈的基本示例中,如下所示: 'array(5){[「lifetime」] => int(0)[「path」] => string(1)「/」[在實際的生產代碼中,它是這樣的: 'array [0]「[」secure「] => bool(false)[」httponly「] => bool(false)}' (5){[「lifetime」] => int(0)[「path」] => string(1)「/」[「domain」] => string(0)「」[「secure」] => bool (true)[「httponly」] => bool(true)}' (我在生產中使用HTTPS)。 – user4024288