|
不能登入或者不能登出;
頁(yè)頂出現(xiàn)一條空白;
頁(yè)頂出現(xiàn)錯(cuò)誤警告;
其它不正常的情況。
則多半是編輯器的問(wèn)題。
本程序采用UTF-8編碼。現(xiàn)在幾乎所有的文本編輯軟件都可以顯示并編輯UTF-8編碼的文件。但是很遺憾,其中很多軟件的表現(xiàn)并不理想。
類似WINDOWS自帶的記事本等軟件,在保存一個(gè)以UTF-8編碼的文件時(shí),會(huì)在文件開始的地方插入三個(gè)不可見的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字符,用于讓記事本等編輯器識(shí)別這個(gè)文件是否以UTF-8編碼。對(duì)于一般的文件,這樣并不會(huì)產(chǎn)生什么麻煩。但對(duì)于php來(lái)說(shuō),BOM是個(gè)大麻煩。
php并不會(huì)忽略BOM,所以在讀取、包含或者引用這些文件時(shí),會(huì)把BOM作為該文件開頭正文的一部分。根據(jù)嵌入式語(yǔ)言的特點(diǎn),這串字符將被直接執(zhí)行(顯示)出來(lái)。由此造成即使頁(yè)面的 top padding 設(shè)置為0,也無(wú)法讓整個(gè)網(wǎng)頁(yè)緊貼瀏覽器頂部,因?yàn)樵趆tml一開頭有這3個(gè)字符呢!
最大的麻煩還不是這個(gè)。受COOKIE送出機(jī)制的限制,在這些文件開頭已經(jīng)有BOM的文件中,COOKIE無(wú)法送出(因?yàn)樵贑OOKIE送出前php已經(jīng)送出了文件頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實(shí)現(xiàn)的功能全部無(wú)效。
因此,在編輯、更改任何文本文件時(shí),請(qǐng)務(wù)必使用不會(huì)亂加BOM的編輯器。Linux下的編輯器應(yīng)該都沒(méi)有這個(gè)問(wèn)題。WINDOWS下,請(qǐng)勿使用記事本等編輯器。推薦的編輯器是:
Editplus 2.12版本以上;
EmEditor;
UltraEdit(需要取消‘添加BOM'的相關(guān)選項(xiàng));
Dreamweaver(需要取消‘添加BOM'的相關(guān)選項(xiàng))
等。
對(duì)于已經(jīng)添加了BOM的文件,要取消的話,可以用以上編輯器另存一次。(Editplus需要先另存為gb,再另存為UTF-8)
php技術(shù):PHP 編程請(qǐng)選擇正確的文本編輯軟件,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。