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 相关文章推荐
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
php Sql Server连接失败问题及解决办法
Aug 07 PHP
PHP 截取字符串专题集合
Aug 19 PHP
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 PHP
解析zend studio中直接导入svn中的项目的方法步骤
Jun 21 PHP
PHP Class&Object -- 解析PHP实现二叉树
Jun 25 PHP
PHP间隔一段时间执行代码的方法
Dec 02 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
Jun 17 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
Apr 02 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
JS查找数组中重复元素的方法详解
2017/06/14 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
python2与python3共存问题的解决方法
2018/09/18 Python
python找出完数的方法
2018/11/12 Python
python实现名片管理系统
2018/11/29 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
出生公证书样本
2014/04/04 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
长江七号观后感
2015/06/11 职场文书
爱国主义影片观后感
2015/06/18 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书