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之第四天
Oct 09 PHP
php escape URL编码
Dec 10 PHP
超小PHP小马小结(方便查找后门的朋友)
May 05 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
php简单计算页面加载时间的方法
Jun 19 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
PHP Echo字符串的连接格式
Mar 07 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
mayfish 数据入库验证代码
2010/04/30 PHP
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
php页面缓存方法小结
2015/01/10 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
基于命令行执行带参数的php脚本并取得参数的方法
2016/01/25 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
python下MySQLdb用法实例分析
2015/06/08 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
学年自我鉴定范文
2013/10/01 职场文书
小学生暑假感言
2014/02/06 职场文书
开业庆典策划方案
2014/02/18 职场文书
4s店活动策划方案
2014/08/25 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
门店店长岗位职责
2015/04/14 职场文书
行政处罚事先告知书
2015/07/01 职场文书
《称赞》教学反思
2016/02/17 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript
Java获取字符串编码格式实现思路
2022/09/23 Java/Android