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查询域名状态whois的类
Nov 25 PHP
PHP session有效期问题
Apr 26 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
Jun 19 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
Dec 20 PHP
PHP邮件群发机实现代码
Feb 16 PHP
CodeIgniter生成静态页的方法
May 17 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
PHP封装cURL工具类与应用示例
Jul 01 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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类与对象中的private访问控制的疑问
2012/11/01 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
php中使用base HTTP验证的方法
2015/04/20 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
node.js实现快速截图
2016/08/27 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
Python 元类使用说明
2009/12/18 Python
使用python装饰器验证配置文件示例
2014/02/24 Python
python的文件操作方法汇总
2017/11/10 Python
简单了解Python生成器是什么
2019/07/02 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
python新手学习使用库
2020/06/11 Python
毕业求职自荐信格式是什么
2013/11/19 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
年终奖发放方案
2014/06/02 职场文书
学校百日安全活动总结
2015/05/07 职场文书
早上好问候语大全
2015/11/10 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
Python制作表白爱心合集
2022/01/22 Python