一点PHP代码就可以清除WordPress站点

一点PHP代码就可以清除WordPress站点,php,wordpress,Php,Wordpress,我正在将数据动态加载到WordPress站点: 从另一个站点: 为此,我将以下代码插入WordPress页面: <div id="this_day_in_history"> <h3>This Day in Aviation History</h3> <?php $contents=file_get_contents('http://www.youngeagles.com/thisday/absolutecr.asp?z=1

我正在将数据动态加载到WordPress站点:

  • 从另一个站点:

为此,我将以下代码插入WordPress页面:

<div id="this_day_in_history">
    <h3>This Day in Aviation History</h3>
    <?php
    $contents=file_get_contents('http://www.youngeagles.com/thisday/absolutecr.asp?z=1');
    $convertedcontents=iconv("ISO-8859-1", "UTF-8//IGNORE//TRANSLIT", $contents);
    echo "<script type=\"text/javascript\">".$convertedcontents."</script>";
    ?>
    </div>

航空史上的这一天
出于某种原因,这段PHP代码会抹去整个页面,留下空白,只显示加载的数据。这种效果似乎只出现在Firefox和Chrome中;在Safari和IE中,我可以很好地看到网站


我会很感激有人在这方面的专家建议

您正在获取的代码包含对
document.write()
的调用,如果在页面加载完成后调用该调用,将删除所有内容:

document.write("\n<P>...<\/P>");
document.write(“\n

”);

有关详细信息,请参阅上的注释

您可能需要从手动解析代码,例如:

<div id="this_day_in_history">
<h3>This Day in Aviation History</h3>
<?php
$contents=file_get_contents('http://www.youngeagles.com/thisday/absolutecr.asp?z=1');
$convertedcontents=iconv("ISO-8859-1", "UTF-8//IGNORE//TRANSLIT", $contents);

if( preg_match('#^document\.write\("(.+)"\);$#s', $convertedcontents, $matches) )
{
  echo stripslashes(str_replace('\\n', '', $matches[1]));
}
else
{
  // TODO Format of $convertedcontents has changed.  Log for developer review.
}
?>
</div>

航空史上的这一天

您正在获取的代码包含对
document.write()
的调用,如果在页面加载完成后调用该调用,将删除所有内容:

document.write("\n<P>...<\/P>");
document.write(“\n

”);

有关详细信息,请参阅上的注释

您可能需要从手动解析代码,例如:

<div id="this_day_in_history">
<h3>This Day in Aviation History</h3>
<?php
$contents=file_get_contents('http://www.youngeagles.com/thisday/absolutecr.asp?z=1');
$convertedcontents=iconv("ISO-8859-1", "UTF-8//IGNORE//TRANSLIT", $contents);

if( preg_match('#^document\.write\("(.+)"\);$#s', $convertedcontents, $matches) )
{
  echo stripslashes(str_replace('\\n', '', $matches[1]));
}
else
{
  // TODO Format of $convertedcontents has changed.  Log for developer review.
}
?>
</div>

航空史上的这一天


我认为所有的内容都被忽略了。尝试删除忽略和测试。还请注意,iconv()在第一个illegar字符处停止,并在那里切断字符串,这是iconv()的默认行为。您不仅在加载文件内容,实际上还在从远程服务器加载脚本。。。听起来很怪异。
$convertedcontents
变量中有什么?一定是什么东西让解析器烧断了保险丝。如果它被输出到脚本块中,可能是iconv和/或原始内容导致了某种类型的解析错误。检查FF的javascript控制台(shift-ctrl-J)中的JS错误。转换后的文件可能有一个close标记,之后的所有内容都会呈现为HTML@LDG,我在Firefox中得到这个错误消息:错误:尝试在清除的作用域上运行编译并执行脚本源文件:行:113我想整个内容都被忽略了。尝试删除忽略和测试。还请注意,iconv()在第一个illegar字符处停止,并在那里切断字符串,这是iconv()的默认行为。您不仅在加载文件内容,实际上还在从远程服务器加载脚本。。。听起来很怪异。
$convertedcontents
变量中有什么?一定是什么东西让解析器烧断了保险丝。如果它被输出到脚本块中,可能是iconv和/或原始内容导致了某种类型的解析错误。检查FF的javascript控制台(shift-ctrl-J)中的JS错误。转换后的文件可能有一个close标记,之后的所有内容都会呈现为HTML@LDG,我在Firefox中收到这个错误消息:错误:尝试在清除的作用域上运行编译并执行脚本源文件:行:113谢谢Phoenix,我认为你是对的,但是如果在PHP代码中使用,为什么这段代码只会擦除页面?当我这样使用它的时候:这一天在航空史上——它没有抹去这一页。对不起,菲尼克斯,完整的代码是什么样子的,包括加载数据并将其转换为不同编码的代码?(我是新手)不用担心。补充回答。好的,凤凰城,太好了它并没有摧毁这个网站,但它显示了这一点,而不是文字:“\n 1916年6月13日\n由Schröter和Schulte驾驶的齐柏林飞艇Lindau Dornier Rs II水上飞机,成功地从德国康斯坦斯湖起飞,飞行了四分钟。”——但我们的航程肯定是正确的。这是怎么解决的呢?我在测试它时注意到了一件好事:P我添加了代码,将引号从匹配中排除,去掉斜杠,并将
\n
字符转换为

。谢谢你,菲尼克斯,我想你是对的-但是如果在PHP代码中使用,为什么这段代码只会删除页面?当我这样使用它的时候:这一天在航空史上——它没有抹去这一页。对不起,菲尼克斯,完整的代码是什么样子的,包括加载数据并将其转换为不同编码的代码?(我是新手)不用担心。补充回答。好的,凤凰城,太好了它并没有摧毁这个网站,但它显示了这一点,而不是文字:“\n 1916年6月13日\n由Schröter和Schulte驾驶的齐柏林飞艇Lindau Dornier Rs II水上飞机,成功地从德国康斯坦斯湖起飞,飞行了四分钟。”——但我们的航程肯定是正确的。如何解决这个问题呢?在测试它时,我注意到了一件好事:P我添加了代码以从匹配中排除引号,去掉斜杠并将
\n
字符转换为