php session跳轉失效的解決不過:1、查看「session.save_path」的存取權並進行修改;2、修改「session.use_trans_sid」和「session.use_only_cookies」的設定問題。
推薦:《PHP影片教學》
一般出現跨頁面session失效的情況,基本上都跟php的設定有關:
1、session.save_path存取權限不夠,或是路徑有問題;
2、session.use_trans_sid和
session.use_only_cookies的設定問題。
查看php.ini:
發現路徑正常,且檔案中也準確記錄session值,因此
session.save_path沒問題。接著檢視
session.use_trans_sid,發現:
解釋一下,session的傳遞有兩種方式,一種是基於cookie傳遞,另一種是基於URL傳遞。
cookie傳遞即透過cookie將
session訊息保存在客戶端,之後在傳送請求時會自動帶上cookie訊息給伺服器,以便伺服器讀取。這是常用的方式。URL傳遞是在點擊跳轉的連結後自動加入session訊息,如a.php?sessid=...,之後在新頁面自動$ _GET['sessid']來讀取。這個過程是自動且隱藏的,跟用cookie傳遞一樣不知不覺。
而session.use_trans_sid表示是否使用URL方式傳遞session,所以如果session.use_trans_sid值為0,而使用者瀏覽器又禁用了cookie,就會出現session跨頁面失效的狀況。
但將session.use_trans_sid設為1後,session還是失效,就要檢查session.use_only_cookies,發現:
##
# session.use_only_cookies表示是否只用cookie傳遞session,所以如果設定為1,即使session.use_trans_sid=1,還是不會用到URL傳遞。 # 因此要將session. use_trans_sid=1,session.use_only_cookies=0,才能開啟URL傳遞方式。
########################以上是php session跳轉失效怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!