我想設置一個不同的會話ID取決於用戶在哪個文件夾。同樣的領域,不同的文件夾中的PHP會話
例如,我有一個具有文件夾/ APP1,/ APP2域https://example.com等。然後在每個應用程序文件夾中有多個文件。我想設置一個會話ID用於app1中的所有文件,另一個會話ID用於app2。
可以這樣做嗎?
我想設置一個不同的會話ID取決於用戶在哪個文件夾。同樣的領域,不同的文件夾中的PHP會話
例如,我有一個具有文件夾/ APP1,/ APP2域https://example.com等。然後在每個應用程序文件夾中有多個文件。我想設置一個會話ID用於app1中的所有文件,另一個會話ID用於app2。
可以這樣做嗎?
設置會話cookie的路徑與session_set_cookie_params
。當然session_start
之前。
u可以使用的想法,$_SESSION
變種是一個數組:
$_SESSION['app1'] = ...
$_SESSION['app2'] = ... //etc etc
是否有'-1'的原因? – Neal 2011-03-29 22:26:43
我正在使用數組來存儲不同的會話,但它的session_id總是被設置爲相同的ID,無論文件夾如何。 – 2011-03-29 22:33:31
我不確定我是否正確理解問題,但是您可以嘗試檢查路徑以查看它是否在app1,app2等中,然後獲取您感興趣的字符串部分並使用該字符串設置會話,例如使用$_SERVER['REQUEST_URI']
或$_SERVER['SCRIPT_NAME']
。
除非你已經這樣做,你的問題是它不會設置會話?
如果/app1
和/app2
包含完全無關的應用程序,你可以通過使用PHP的session_name()
,實行功能上都完全不相關的會議。通常,會話使用名爲PHPSESSID
的cookie。相反,在/app1
中,您可以運行session_name('session_app_1')
並在/app2
中運行session_name('session_app_2')
。現在這兩個應用程序中的會話將完全不相關。
警告: PHP的documentation說,session_name()
函數是昂貴的。也許在會話中使用更加繁忙的應用程序中的默認名稱,並只在更安靜的應用程序中重命名它。
'切換'session_name',這就解決了我的問題。我正在試驗兩個目錄,每個目錄都包含一個不同的應用程序,它們必須共享同一個會話。設置相同的會話保存路徑和相同的會話名稱。 – 2015-09-18 20:45:27
將session_save_path設置爲不同的目錄將用於您的目的。例如,您可以將其設置爲每個目錄中的子目錄,即。相對路徑。否則,共享目錄之間的會話將session_save_path設置爲相同的完整路徑。適用於我..
嗨,我試過:session_set_cookie_params(60 * 60 * 24 * 5,「app1」,「xxx.com」);但它沒有工作。它只是停止加載其餘的PHP腳本。我是否需要在php.ini中編輯某些內容? – 2011-03-29 22:31:04
...做到這一點:'session_set_cookie_params(60 * 60 * 24 * 5,「/ app1」);' – Neal 2011-03-29 22:35:55
如果'停止加載',你確定你不只是造成語法錯誤?另外,在路徑中添加一個前導'/'。如果這不起作用,請在'session_start'之前嘗試'ini_set('session.cookie_path','/ app1')'。注意:除非你試圖對它做一些特殊的事情,否則你不必聲明這個域(第三個參數)。 – Wrikken 2011-03-29 22:36:41