2

这是我来自 frame.php 的代码

<FRAMESET rows="20, 200" FRAMEBORDER=NO FRAMESPACING=0 BORDER=0>
<FRAME src="menu1.html">
<FRAME src="test1.php">
</FRAMESET>

我想知道是否有办法阻止人们直接访问“test1.php”?

我希望人们留在 frame.php 上,如果人们试图直接转到“test1.php”,它会给你错误。有没有这样的方法或代码?

在进入这个“frame.php”页面之前,我的用户需要登录。

我是一个新手,我正在尝试从用户身份验证和配置页面转移东西,但不要认为任何东西对我有用。

我在“menu1.html”中包含用户身份验证和配置页面。此部分显示类似“欢迎用户名 | 注销 | 其余菜单”的内容。当人们登录时,他们可以访问“frame.php包括test1.php”

我找到了这个,但不确定如何使用它。我在“继续”区域中输入了什么代码?另外,我应该把“ logoff.php ”放在后面吗?

if ($_SERVER['HTTP_REFERER'] == 'http://mysite.com/downloadlist.php') {
//proceed
} else {
//kick user out
}

非常感谢。

4

3 回答 3

2

在 test1.php 中使用以下 javascript 片段来确定 test1.php 是否从 iframe 加载:

if (window.location != window.parent.location) {
    // test1.php is within iframe
} else {
    // test1.php is accessed directly
}
于 2012-08-06T05:26:18.507 回答
2

1.你不使用框架集。Frameset 已被弃用和注定的标签。使用 iframe 代替,imo。在这个当前页面中,您可以只使用 INCLUDE php 函数来最小化 http 请求。

2.来自url的请求和来自frame的请求是同一个GET请求。因此,您无法在服务器上了解该请求的来源:框架或其他地方。但是你可以使用js。我不建议你这样做,但它的工作原理是这样的:

<body onLoad="fromFrame">
    // test1.php code here
</body>
<script type="text/javascript">
function fromFrame() {
    if (window.top === window.self)
       document.location.href = "errorRedirectUrl";
}
</script>
于 2012-08-06T05:26:21.373 回答
0
  1. 您可能想在使用框架之前阅读此内容
  2. 防止直接访问您的 php 脚本的最佳方法是将其放在一个文件夹中,并防止在 .htaccess 文件中访问该文件夹。然后使用include它来访问它(从另一个“可以”供用户访问的页面)。
于 2012-08-06T05:28:39.813 回答