0
我有一個PHP腳本,它將收據返回給在我的網站上購買的客戶。當他們收到收據時,我希望能夠開始新的會話。到目前爲止,我在腳本結尾處有一段代碼,它返回收據頁面。它是:PHP會話有時無法重新啓動
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(),
'',
time() - 42000,
$params["path"],
$params["domain"],
$params["secure"],
$params["httponly"]
);
}
session_destroy();
session_regenerate_id(true);
當我使用網站,並通過購買過程中,收到頁面送達後,會話ID保持不變。
然而,我把上面的代碼放在一個名爲'regenerate.php'的獨立腳本中。然後我在另一個腳本調用此,像這樣:
<?php
include("regenerate.php");
session_start();
echo("<br>id:".session_id());
include("regenerate.php");
session_start();
echo("<br>id:".session_id());
include("regenerate.php");
session_start();
echo("<br>id:".session_id());
include("regenerate.php");
session_start();
echo("<br>id:".session_id());
?>
當我運行此腳本,然後會話ID每一個重生的腳本運行時間變化。但是,在重新啓動會話之前,我正嘗試提供相同的代碼無法工作。
有什麼理由可以在一種情況下工作,而不是其他情況?我認爲這可能是因爲文本已經被寫出來輸出,但它發生在兩種情況下。