首頁 >後端開發 >php教程 >如何解決thinkphp中session和cookie無效的問題

如何解決thinkphp中session和cookie無效的問題

不言
不言原創
2018-06-11 10:09:082329瀏覽

這篇文章主要介紹了thinkphp中session和cookie無效的解決方法,涉及針對BOM頭的分析與刪除方法,具有一定的參考借鑒價值,需要的朋友可以參考下

本文實例講述了thinkphp中session和cookie無效的解決方法。分享給大家供大家參考。具體分析如下:

問題描述:

在本地調試時session和cookie是用沒有問題的,我是用session保存當前登入帳戶的資訊,上傳伺服器之後,發現跳轉之後session不復存在,為什麼呢?在目前頁面輸出session是存在的.

遇到這個問題三天了,因為是自學沒有老師可以請教,身邊也沒有幾個是弄PHP的,所以真的是很悲劇,於是乎百度,而百度上很多人都是屁話連天,沒有什麼可以解決問題的,經過三天的修改終於找到了根源,原來是因為絕大多數支持thinkphp的伺服器是linux系統,而我們的程式設計基本上還是windows,這樣就會出現bom頭這個問題,而PHP對於bom頭不能解析,而直接拿下來了,導致session和cookie不能用.

##解決方法:

#什麼是bom頭?在utf-8編碼文件中BOM在文件頭,佔用三個字節,用來標示該文件屬於utf-8編碼,現在已經有很多軟體識別bom頭,但是還有些不能識別bom頭,比如PHP就不能辨識bom頭,這也是用記事本編輯utf-8編碼後執行就會出錯的原因了.

去掉bom頭的辦法,簡單的是下面兩種:

1 、editplus去BOM頭的方法

編輯器調整為UTF8編碼格式後,保存的文件前面會多出一串隱藏的字符(也即是BOM),用於編輯器識別這個文件是否是以UTF8編碼.

運行Editplus,點擊工具,選擇首選項,選中文件,UTF-8標識選擇總是刪除簽名,然後對PHP文件編輯和保存後的PHP文件就是不帶BOM的了.

2、ultraedit去除bom頭辦法

打開文件後,另存為選項的編碼格式裡選擇(utf-8 無bom頭),確定就ok了,怎麼樣,去掉bom頭很簡單吧.

再來一段議論utf8的BOM信息的,BOM是指php文件本身的存儲方式為帶BOM的UTF-8,普通頁面的中文亂碼方式一般不是由這個原因導致的.


 程式碼如下:

header("Content-type: text/html; charset=utf-8");

這句話控制html輸出頁面的編碼方式,BOM只有在WINDOWS下採用「記事本」儲存為UTF-8時才會有,這個可以用WINHEX把開始的2個位元組刪除.

在dreamweaver裡面編碼設定裡面可以設定是否帶BOM,一般只要php輸出的不是圖片(GDI Stream),BOM都不會導致問題,GDI Stream如果開頭有了額外的字符就會顯示為紅叉.

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關建議:

thinkPHP5.0框架配置作用域的方法

thinkPHP5框架自訂驗證器的實現

以上是如何解決thinkphp中session和cookie無效的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn