php session跳轉(zhuǎn)失效的解決不過:1、查看“session.save_path”的訪問權(quán)限并進(jìn)行修改;2、修改“session.use_trans_sid”和“session.use_only_cookies”的設(shè)置問題。
推薦:《php視頻教程》
一般出現(xiàn)跨頁面session失效的情況,基本都跟php的配置有關(guān):
1、session.save_path訪問權(quán)限不夠,或者路徑有問題;
2、session.use_trans_sid和session.use_only_cookies的設(shè)置問題。
查看php.ini:
發(fā)現(xiàn)路徑正常,而且文件中也準(zhǔn)確記錄著session值,因此session.save_path沒問題。
接著查看session.use_trans_sid,發(fā)現(xiàn):
解釋一下,session的傳遞有兩種方式,一種是基于cookie傳遞,另一種是基于url傳遞。
cookie傳遞即通過cookie將session信息保存在客戶端,之后在向服務(wù)器發(fā)送請(qǐng)求時(shí)會(huì)自動(dòng)帶上cookie信息,以便服務(wù)器讀取。這是常用的方式。
url傳遞是在點(diǎn)擊跳轉(zhuǎn)的鏈接后自動(dòng)添加session信息,如a.php?sessid=…,之后在新頁面自動(dòng)$_get['sessid']來讀取。這個(gè)過程是自動(dòng)且隱藏的,跟用cookie傳遞一樣不知不覺。
而session.use_trans_sid表示是否使用url方式傳遞session,所以如果session.use_trans_sid值為0,而用戶瀏覽器又禁用了cookie,就會(huì)出現(xiàn)session跨頁面失效的情況。
但將session.use_trans_sid設(shè)為1后,session還是失效,就要檢查session.use_only_cookies,發(fā)現(xiàn):
session.use_only_cookies表示是否只用cookie傳遞session,所以如果設(shè)置為1,即使session.use_trans_sid=1,也還是不會(huì)用到url傳遞。
因此要將session.use_trans_sid=1,session.use_only_cookies=0,才能開啟url傳遞方式。