PHP 编程请选择正确的文本编辑软件


Posted in PHP onDecember 21, 2006

如果您在修改任何PHP文件后发生:

    不能登入或者不能登出;
    页顶出现一条空白;
    页顶出现错误警告;
    其它不正常的情况。
    则多半是编辑器的问题。

    本程序采用UTF-8编码。现在几乎所有的文本编辑软件都可以显示并编辑UTF-8编码的文件。但是很遗憾,其中很多软件的表现并不理想。

    类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于PHP来说,BOM是个大麻烦。

    PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!

    最大的麻烦还不是这个。受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。

    因此,在编辑、更改任何文本文件时,请务必使用不会乱加BOM的编辑器。Linux下的编辑器应该都没有这个问题。WINDOWS下,请勿使用记事本等编辑器。推荐的编辑器是:
    Editplus 2.12版本以上;
    EmEditor;
    UltraEdit(需要取消‘添加BOM'的相关选项);
    Dreamweaver(需要取消‘添加BOM'的相关选项)
    等。

    对于已经添加了BOM的文件,要取消的话,可以用以上编辑器另存一次。(Editplus需要先另存为gb,再另存为UTF-8)

PHP 相关文章推荐
用PHP连mysql和oracle数据库性能比较
Oct 09 PHP
PHP连接MongoDB示例代码
Sep 06 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
Oct 30 PHP
php学习笔记之基础知识
Nov 08 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
PHP Static延迟静态绑定用法分析
Mar 16 PHP
php获取远程图片并下载保存到本地的方法分析
Oct 08 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
May 03 PHP
PHP微商城开源代码实例
Mar 27 PHP
Laravel 创建指定表 migrate的例子
Oct 09 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 PHP
PHP 模板高级篇总结
Dec 21 #PHP
PHP函数utf8转gb2312编码
Dec 21 #PHP
小偷PHP+Html+缓存
Dec 20 #PHP
PR值查询 | PageRank 查询
Dec 20 #PHP
转PHP手册及PHP编程标准
Dec 17 #PHP
IIS环境下快速安装、配置和调试PHP5.2.0
Dec 17 #PHP
亲密接触PHP之PHP语法学习笔记1
Dec 17 #PHP
You might like
PHP 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
PHP中的self关键字详解
2019/06/23 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
arguments对象
2006/11/20 Javascript
jQuery Ajax之load()方法
2009/10/12 Javascript
起点页面传值js,有空研究学习下
2010/01/25 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
js实现图片旋转的三种方法
2014/04/10 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
Python中的ceil()方法使用教程
2015/05/14 Python
python在不同层级目录import模块的方法
2016/01/31 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
python实现三维拟合的方法
2018/12/29 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
建龙钢铁面试总结
2014/04/15 面试题
2015新员工试用期工作总结
2014/12/12 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书