歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> ThinkPHP URL自己帶上參數PHPSESSID

ThinkPHP URL自己帶上參數PHPSESSID

日期:2017/2/28 16:13:13   编辑:Linux教程

碰到個問題,ThinkPHP項目程序本地測試沒問題,傳到服務器後第一次訪問,頁面的所有URL會自己帶上類似?PHPSESSID=28954583914413546c6e881cfa7c8117 這樣的參數,再點擊刷新下頁面後訪問才正常。

浏覽器並沒有禁止cookie,本地訪問正常也證實了這點,第一猜想是服務器的環境配置與項目代碼某些地方沖突所影響。

檢測了服務器的關於cookie的配置對比本地的,發現session.use_trans_sid這個項的配值是不同的,本地關閉,服務器是開著的。

PHP中的會話在默認情況下是使用客戶端的cookie來保存session_id的,所以當客戶端的cookie出現問題的時候就會影響會話了。其實會話不一定必須依賴cookie,當客戶端的cookie被禁用或出現問題時,PHP會自動把session_id附加在URL中,這樣再通過 session_id就能跨頁使用會話變量了。但這種自動的附加也是有一定條件的,首先,在php.ini文件中的session.use_trans_sid = 1或者編譯時打開了--enable-trans-sid選項,其次,運行PHP的服務器必須是UNIX/Linux系統,Windows操作系統不具備此項功能。

上面的引用就說明了這點,在linux系統下,在session.use_trans_sid開啟的時候,導致項目會自己加上PHPSESSID參數來達到跨頁會話。

最後解決是:ini_set('session.use_trans_sid', 0); //在項目代碼初始化的位置加入這句

其實還有個懷疑,可能項目某配置出現問題。待查。

Ps,這問題也反面教了件事,在處理跨頁會話跨域會話的時候,session.use_trans_sid或許能起到奇效。

Copyright © Linux教程網 All Rights Reserved