php 立即释放session 去除其缓存,ThinkPHP关于session无法清除的一个小问题
首先,問題是這樣的,接觸ThinkPHP沒多久,在做用戶登錄以及注銷的時候遇到了一個小問題,那就是用戶可以正常登陸,但是點擊注銷鏈接后,理論上應該是session被清空,但是卻仍然還是自動跳轉到了首頁(登錄頁判斷了session是否設置,設置了則跳轉到首頁),說明session沒有被清空。
經過一段時間的排查,最終確定問題出在out,也就是用戶注銷這個方法上。
上面是我原來寫的用戶注銷方法,代碼很簡單,就是清除session,然后一個成功提示。
為此我做了個自動刷新的網頁,方便實時查看登陸以及注銷用戶后,session的狀態。
通過這個頁面的幫助,很快就找到了問題所在。
用戶注銷不會清空session,但是如果在成功提示的時候,再次刷新網頁的話,session才會被清空,也就是success提示的網頁需要刷新一次才能執行代碼并清除session,于是查看了一下成功提示頁面的源代碼,使用的是location.href方式跳轉網頁。
估計沒人會想到問題就出在這個成功提示代碼上面,百度搜索了一下,基本能夠得出大概關于localtion.href會加載緩存的結果。
關于這個問題的解決方案,目前有兩種:
1、修改ThinkPHP默認提示模板,使用meta refersh 或者其它會重新發起請求的js跳轉網頁。
2、使用ThinkPHP控制器的Redirect方式跳轉網頁。
由于剛開始學習ThinkPHP沒多久,還是有點生疏,但是學習過程中難免遇到各種各樣的問題,唯有抱著求知和細心的態度才能不斷前進。
如果各位有遇到和我相同的問題,希望這篇文章能幫到你們,也希望個人多多支持,互相交流!
總結
以上是生活随笔為你收集整理的php 立即释放session 去除其缓存,ThinkPHP关于session无法清除的一个小问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php取汉字第一个字,php------
- 下一篇: 虚拟主机跟php,php虚拟主机和服务器