簡體   English   中英

在PHP中重置cookie壽命和會話ID

[英]Reset cookie life and session Id in PHP

當用戶登錄PHP時,我試圖重置會話cookie及其壽命。 聽起來很瑣碎,但我仍在努力使其正確。

加載頁面后,用戶可能會也可能不會擁有cookie。 如果他有一個,我想刪除它並重設sessionId,否則,我給他一個新的,並且壽命適當。 由於使用的是PHP版本,因此無法使用session_status()

這是我想出的,但是當用戶已經有一個會話cookie時,它將不起作用。

if (isset($_COOKIE[session_name()])) setcookie(session_name(), false);
session_set_cookie_params(2678400); // sets cookie life to one month
session_start();
// do stuff

用戶登錄后,通常會刪除舊的cookie,但session_start()不會傳遞新的cookie。 有沒有一種方法可以強制交付新的Cookie,而不必手動實現創建會話ID的邏輯?

非常感謝你的幫助

您不必在PHP端銷毀/重新啟動會話,只需向客戶端發送一個新的cookie。 只需再次調用setcookie() (使用現有的會話ID)即可。

您可以使用session_destroy()函數銷毀與當前會話關聯的所有數據,並可以使用setcookie()函數設置過去的cookie到期日期,以觸發瀏覽器中的刪除機制。

就像是:

if (isset($_COOKIE[session_name()])) setcookie(session_name(), false);
session_destroy();
setcookie(session_name(), "", time() - 3600);
);
session_start();
// do stuff

暫無
暫無

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

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