这:<!---->
这......这......事。就在那里。
邪恶的7个字符,迫使IE在怪异模式下将所有页面都用它呈现在顶部:
<!----><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
如果它不是邪恶我不知道是什么,因为它肯定不在我的模板文件中,因为它的前几行是:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<?php $this->outputHead(); ?>
</head>
我当然没有在实际输出代码中看到任何问题:
function build()
{
if ($this->disabled)
{
return $this->content;
}
else
{
global $footer;
ob_start();
$location = $this->location;
include($this->location['theme_nr'].'/overall.php');
return ob_get_clean();
}
}
function outputAll()
{
// stop capturing everything
$this->content = ob_get_clean();
// build the page
echo $this->build();
}
我真的不明白。这个的东西如何进入我的代码?
我可以想象最后>
位变成笑容,而笑对我来说。
它困扰着我的梦想,它杀死了我的猫,我不知道它接下来要做什么,但它会杀死某些东西。
帮助我,你们是网络开发之神!
编辑:只是一个注释,它确实出现在所有浏览器中,但它似乎驱使IE弹道而不是其他浏览器。
答案 0 :(得分:3)
我找到了罪魁祸首。
不知何故,我在函数中隐藏MySQL错误只会导致我的一个分支出现问题,即使函数及其调用位置在两个分支之间没有变化。
对于那些感兴趣的人,有问题的代码:
function isexistinguser($uname,$pwd)
{
global $location;
$uname = mysql_real_escape_string($uname);
$result = mysql_query("SELECT * FROM users WHERE user_username = '$uname'");
$hit = 0;
$rowcounted = false;
$salt = '';
echo '<!--'; // cheap fix for mysql error - FIND A BETTER WAY!
while($row = mysql_fetch_array($result))
{
// Do stuff to figure out what to return
}
echo '-->'; // cheap fix for mysql error - FIND A BETTER WAY!
return array($hit,$salt);
}
答案 1 :(得分:1)
我查看了你发布的git repo,但它并未包含在内。您可以尝试从github上的副本到当前副本的差异,因为更改是您所做的更改。
如果您使用的是IDE,请执行全局文件搜索字符串。这些“错误”可能很麻烦。
答案 2 :(得分:0)
如果你可以通过cygwin或直接在Linux中使用它,那么看起来像grep会很方便。仅查找具有该HTML注释的文件的快速示例
grep -R "<\!---->" ./*
这应该缩小搜索范围。
答案 3 :(得分:0)
关于您的错误处理。处理它的第一种方法是使用set_error_handler定义和使用自己的处理程序而不是php默认处理程序。
作为一个简单的修复,请修改以下行:$result = mysql_query("SELECT * FROM users WHERE user_username = '$uname'");
有类似的东西:
$result = mysql_query("SELECT * FROM users WHERE user_username = '$uname'");
if(!$result || !is_resource($result){
return array(0, '');
}
为了结束这一点,我建议您检查PDO以使用数据库。
答案 4 :(得分:0)
我会寻找'邪恶'字符串:
grep -R '\-\->' /your/folder