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 pcntl_fork和pcntl_fork 的用法
Apr 13 PHP
php中取得URL的根域名的代码
Mar 23 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
php实现天干地支计算器示例
Mar 14 PHP
php解决约瑟夫环示例
Apr 09 PHP
FastCGI 进程意外退出造成500错误
Jul 26 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 PHP
PHP正则表达式之RCEService回溯
Apr 11 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中多维数组按指定value排序的实现代码
2014/08/19 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
angularjs的select使用及默认选中设置
2017/04/08 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
用Python给文本创立向量空间模型的教程
2015/04/23 Python
python实现三维拟合的方法
2018/12/29 Python
python如何实现复制目录到指定目录
2020/02/13 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
几个常见的消息中间件(MOM)
2014/01/08 面试题
安全责任协议书
2014/04/21 职场文书
大学生村官考核材料
2014/05/23 职场文书
促销活动总结怎么写
2014/06/25 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
干部理论学习心得体会
2016/01/21 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL