簡體   English   中英

如何為同一服務器上托管的不同應用程序重置PHPSESSID cookie

[英]how to reset PHPSESSID cookie for different applications hosted on the same server

我在同一服務器上托管了兩個應用程序A和B。 實際上,B是A的子應用程序,位於A的子目錄中。

主應用程序(A)使用默認的php會話實現,而B應用程序在數據庫中實現會話。 僅供參考。

當我在新的瀏覽器中訪問應用程序B或訪問A之前,它的cookie設置就很好。

但是,當我第一次訪問A時,會設置一個PHPSESSID cookie。 現在,當我訪問B時,不會設置B的cookie。

對於為什么A設置的PHPSESSID cookie不允許B設置任何cookie,我一無所知。 反之則不成立。

cookie之所以沖突,是因為它們默認情況下是在完整域中設置的,路徑為/ 因此,當兩個應用程序都嘗試啟動會話時,將具有優先權。 您可以使用session_set_cookie_params()覆蓋默認路徑,從而消除沖突。 不過之后,您很可能需要在瀏覽器中手動刪除所有“舊” Cookie,因為它們會保持沖突,直到過期為止。

好的,此骯臟的修復程序可以解決該問題。

unset($_COOKIE[session_name()]);
session_destroy();
session_start();  

我稱其為“骯臟的修補程序”,因為您可能無法承受取消和破壞整個應用程序中的會話的負擔。 但是我只需要在身份驗證模塊(一個地方)上就可以了。

暫無
暫無

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

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