菜鸟百分求助,关于php页面莫名出现空白行的原因,如果能够完美解决,追加100分 本帖最后由 caofei007007 于 2011-03-08 01:38:50 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没用过这个编辑器,看报错,感觉错误在 form action之间的那个 空格,会不会是全角和半角 空格 导致? body{margin:0; padding:0}form{margin:0; padding:0}加到两个页面去看看或者加DIV,确定高宽,写CSS:overflow:hidden.强行割掉多出来的部分。 把php格式转为ansi as utf-8,也就是无bom的utf-8,再保存(BTW:这个操作应该养成习惯)有bom的utf-8在ie6(ie6之后版本不清楚)都会出现页首空行,并且影响header等输出... 给出有效的测试地址检查是否是 BOM 头在作怪 送你个检测BOM的程序。BOM信息是文件开头的一串隐藏的字符,用于让某些编辑器识别这是个UTF-8编码的文件。但PHP在读取文件时会把这些字符读出,从而形成了文件开头含有一些无法识别的字符的问题。 比如用UTF-8格式保存的生成图片的PHP文件,因为文件头隐藏的BOM信息也被下发,导致生成的图片数据不对,浏览器无法识别。 要检测一个UTF-8文件是否含有BOM信息,就是检测文件开头的字三个符,是否为0xEF, 0xBB, 0xBF。下面这个小程序,用户遍历某个目录下所有文件,并检测是否加了BOM。将以下代码另存为del_bom.php,修改需要检测的目录后运行。这样可能有助于检测是哪个文件带有了BOM信息导致所有页面开头都有那么一段空白。 <? php//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除 //By Bob Shen $basedir="."; //修改此行为需要检测的目录,点表示当前目录 $auto=1; //是否自动移除发现的BOM信息。1为是,0为否。 //此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除 //By Bob Shen $basedir="."; //修改此行为需要检测的目录,点表示当前目录 $auto=1; //是否自动移除发现的BOM信息。1为是,0为否。 //以下不用改动 if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." <br>"; } closedir($dh); } function checkBOM ($filename) { global $auto; $contents=file_get_contents($filename); $charset[1]=substr($contents, 0, 1); $charset[2]=substr($contents, 1, 1); $charset[3]=substr($contents, 2, 1); if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) { if ($auto==1) { $rest=substr($contents, 3); rewrite ($filename, $rest); return ("<font color=red>BOM found, automatically removed.</font>"); } else { return ("<font color=red>BOM found.</font>"); } } else return ("BOM Not Found."); } function rewrite ($filename, $data) { $filenum=fopen($filename,"w"); flock($filenum,LOCK_EX); fwrite($filenum,$data); fclose($filenum); } ?> 测试地址http://202.99.67.189:9999/include/top.php 测试地址http://202.99.67.189:9999/include/top.php 这个倒不像bom的问题把form和外面的div换个位置试一下就是<form><div>...</div></form>这样写 谢谢你啊 ,解决了一个问题 ,不过现在又出现一个问题,那就是未登录前,没问题了,登录以后又出现这个问题,可是登录以后没有<form>了 这次问题会出在哪里呢? 类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM——Byte Order Mark)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,PHP在设计时就没有考虑BOM的问题,不会忽略UTF-8编码的文件开头BOM的那三个字符,会把BOM作为该文件开头正文的一部分。由于必须在<?或者<?php后面的代码才会作为PHP代码执行,所以将会造成在页面上输出这三个字符,显示效果就要看浏览器了,一般是一个空行或是一个乱码。对于已经添加了BOM的文件,要取消的话,可以用以上编辑器另存一次。(Editplus需要先另存为gb,再另存为UTF-8。) 浏览器缓存?好像也不是调用同一个top么?最好把你的top贴出来,这样猜没法猜 刚才没登陆的时候的问题解决了,现在登录上去又出现了这个问题,这次不是form的问题了 ,是div的问题,该怎么办啊 你用dw打开这个页面文件 在页面属性里看 标题/编码 有个 unicode标准话表单 把它设置为无 然后去掉下边的复选框 select multiple問題,取多個Value值 求程序,关于PHP生成缩略图的程序 关于 令牌成功 后的 跳转问题 求助:格式化这样的一个json串,语法该怎么写?(急!) PHP语言如何强制TABLE的宽度和高度 新年继续发问,关于pear的使用 求在类里面使用数据库连接的方法 我想试一下mail函数,可没试出来,谁帮看一下 有关php连接sql server的问题 function 里面怎么定义ref 输出的参数? php如何获取sql语句统计结果 构造函数问题
form{margin:0; padding:0}加到两个页面去看看
或者加DIV,确定高宽,写CSS:overflow:hidden.强行割掉多出来的部分。
检查是否是 BOM 头在作怪
//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除
//By Bob Shen
$basedir="."; //修改此行为需要检测的目录,点表示当前目录
$auto=1; //是否自动移除发现的BOM信息。1为是,0为否。
//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除
//By Bob Shen
$basedir="."; //修改此行为需要检测的目录,点表示当前目录
$auto=1; //是否自动移除发现的BOM信息。1为是,0为否。
//以下不用改动
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." <br>";
}
closedir($dh);
}
function checkBOM ($filename) {
global $auto;
$contents=file_get_contents($filename);
$charset[1]=substr($contents, 0, 1);
$charset[2]=substr($contents, 1, 1);
$charset[3]=substr($contents, 2, 1);
if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) {
if ($auto==1) {
$rest=substr($contents, 3);
rewrite ($filename, $rest);
return ("<font color=red>BOM found, automatically removed.</font>");
} else {
return ("<font color=red>BOM found.</font>");
}
}
else return ("BOM Not Found.");
}
function rewrite ($filename, $data) {
$filenum=fopen($filename,"w");
flock($filenum,LOCK_EX);
fwrite($filenum,$data);
fclose($filenum);
}
?>
http://202.99.67.189:9999/include/top.php
测试地址
http://202.99.67.189:9999/include/top.php
调用同一个top么?
最好把你的top贴出来,这样猜没法猜