簡體   English   中英

session_regenerate_id正在執行…是嗎?

[英]session_regenerate_id executing… double?

我遇到一個奇怪的問題,這使我發瘋……我正在編寫自己的MVC框架,並且正在使用mysql進行會話管理,當時我注意到session_regenerate_id函數有時會從無處產生新的會話... 經過數小時的嘗試猜猜到底是怎么了,我最終跳過了所有代碼,並使用此簡單的php腳本運行了一個白頁:

<?php
if(!isset($_SESSION)){
session_start();
$_SESSION['user']='kikko68';
$_SESSION['name']='cristian';
$_SESSION['mail']='cri89@kij.com';
}
$old=session_id();
session_regenerate_id(true);
$new=session_id();
echo"OLD = ".$old."<br>NEW = ".$new;
?>

我已經在Web服務器上測試了此腳本結果如下:

---------------load page---------------------
OLD = ffa4e90763d61a2f733364fddb86bbf4
NEW = 7293a7268c77406075c78a38bc148c34
---------------refresh-----------------------
OLD = 7293a7268c77406075c78a38bc148c34
NEW = d21e6da87635fb2934b286679850c830
---------------refresh-----------------------
OLD = d21e6da87635fb2934b286679850c830
NEW = 9686e91f66565358bceaa4bac8d8a563

如您所見,每次刷新時,新ID都會變成舊ID。

在我的本地安裝(XAMPP)上 ,事情似乎有任何意義...

---------------load page---------------------
OLD = c1vgleb55j0tpeu21mr3l1rip5
NEW = dn2hfst79nuqtcegi91qikrv34
---------------refresh-----------------------
OLD = th1tk5dmaovdlrdka4frf07is0
NEW = s7a990magimfccc0qtnl66rfp0
---------------refresh-----------------------
OLD = hkpadq4pjtbtcmap3m3322al21
NEW = q17lh3asev8rkv3ld1f4mu2tk0

有人可以向我解釋為什么會這樣嗎? 謝謝。

服務器結果對我來說很有意義,而XAMPP結果卻沒有。 在XAMPP環境中,似乎似乎根本無法識別舊會話。 因此,session_start()創建一個具有新ID的全新ID(即ID更改#1),然后您的session_regenerate_id()調用創建另一個新ID(即ID更改#2)。

要進行測試,請在session_start()之后立即捕獲會話ID。 問題應該變成,不是“為什么我的腳本中生成了兩個ID?” 但是“為什么我的腳本無法在session_start()上找到並加載有效的會話?”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM