2011-06-28 72 views
2

我有一个页面thisfile.htm,它包括在thisfile.php防止包含HTM页被加载的父PHP页面

以外我用thisfile.htm加载到iframe在thisfile.php但由于的iPad滚动麻烦,我最近转换一切滚动div和php包括。

我需要防止独立的PHP父母加载htm文件。当我使用iframe时,我没有问题用一些javascript做这个。但我不能让它与我的PHP包括 - 我得到一个循环。

这是孩子:

<script type="text/javascript"> 

if(top.location.href==self.location.href) { 

location.replace("thisfile.php"); 

} 

</script> 

这是父:

<div class="bigdiv"><?php include "thisfile.htm" ?></div> 

预先感谢您。

+0

“我需要防止独立于php父母加载htm文件” - 出于何种原因? Javascript检查可以轻松绕过。此外,你应该能够做一个更坚实的PHP检查。例如,在thisfile.php中定义一个常量,并检查在您的html文件的PHP版本中是否设置了相同的常量。 –

+0

另外,我不认为JavaScript代码会做你想做的。实际上,顶部通常用于引用最顶层窗口的框架的上下文,如果没有框架,则顶层将变为窗口。最有可能做的是改变位置,然后再重新载入加载相同的JavaScript的页面。这是你的循环来自的地方。 –

回答

4

如果您在php中使用include,保护您所包含文件的最简单方法是将它放在网页根目录之外。这样php可以达到它,但浏览器不能这样,它永远不能单独加载。如果你这样做,你不需要任何JavaScript的孩子。

+1

+1正是我在打字,但因为看了第962次与已婚儿童的重新运行,我太慢了。 ;) – GolezTrol

+0

HTM页面是旧名称,谷歌排名很高,客户希望避免失去该排名。也许我应该做一些301s。 – amy

+1

我知道有多个这样的文件?你可以尝试301其中的一些,同时保留其他一些。然后在几天内,你可以看到它对这些页面有什么影响。如果Google已经正确地拿起了301,你也可以301。通过这种方式,您可以防止整个网站的网页排名突然下降(尽管可能是暂时的)。 – GolezTrol

1

如果要将thisfile.htm包含在thisfile.php的div中,请使用include将其包含在php中。你不必从外面调用这个文件。事实上,你可以把它放在你的文档根目录之外,在这种情况下,你根本无法从外部访问它。它只会被包含在thisfile.php中。