Zao’s Blog
感谢上天,我不是一个人在战斗!
炒股开户,证券网上开户,不限资金佣金万1.5包含规费,量大手续费万1.3,QQ 312011170
三月
26

千万别用记事本

标签: | 浏览:(0)

自作主张的记事本往往会给你带来意想不到的麻烦,尤其是在修改 PHP 文件的时候,你信不信?看完我的经历相信你也会认同我的想法。就是因为它,差不多花了我二十分钟时间来寻找问题的出处!

今天把一个 PHP 导航程序转让了。因为用的是 UTF-8 编码,而程序又要用到 session 来处理会员登陆验证之类的问题,所以 PHP 程序文件中是不宜保留 Unicode 签名(BOM)的。我当然早就知道这个需要注意的问题了,在之前的一篇文章中也提到这的问题:都是 UTF-8 编码中 BOM 惹的祸。可是客户不知道啊!他把文件修改过之后,程序就出错了。提示:
cannot send session cache limiter-headers already sent (output start at ............)
虽然只是 Warning 级别的错误,但说明程序确实出现问题了。

于是我检查程序文件,开始以为是 session_start() 和 header() 之间谁先应该出现的问题,还在这耽搁了不少时间。现在想想觉得真傻,修改过的文件和原文件的这部份代码是一样的,也就是不可能是 session_start() 和 header() 谁先谁后的问题了!可是我的 session_start() 已经放在页面最前面了,已就是说在它之前没有内容输出,这就和上面的错误提示矛盾了。

经过层层分析,终于知道罪魁祸首却是 Windows 的“记事本”程序。那个客户就因为用它修改 PHP 文件才导致了上面的问题 :!: 因为记事本在保存 UTF-8 格式文档的时候会自动加上 Unicode 签名 (BOM) 。所以大家还是放弃使用记事本这个东西吧,用 EditPlus 或者 EmEditor 等等优秀的文本编辑器不知道要好多少倍了。

5 条评论 | 发表你的评论

:mrgreen:
导航演示再这里
:rotfl:

谢谢!还没有发现此问题! :neenerneener:

呵呵,推荐用NotePadII.给你个翻译小错误:
邮箱(不公开,选填)
这个邮箱呢,是必填的...

感谢提出,但不是翻译错误 :wink: 。我是原来改过程序,把邮箱验证去掉了的,后来可能是我一时大意又把它无意中恢复了 :oops:

不写邮箱也能评论了! :hyper:

发表评论





改变评论框高度:增大(+) | 减小(-)

DO NOT Fill!