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 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
在WordPress中实现发送http请求的相关函数解析
Dec 29 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
Dec 15 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
AngularJS快速入门
2015/04/02 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
vue-cli中的webpack配置详解
2017/09/25 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
kali中python版本的切换方法
2019/07/11 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
2015年妇产科工作总结
2015/05/18 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby