【问题标题】:HTML ( PHP ) frame Issue - block user from access page directlyHTML ( PHP ) 框架问题 - 直接阻止用户访问页面
【发布时间】:2012-08-06 13:28:39
【问题描述】:

这是我在 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
}

非常感谢。

【问题讨论】:

    标签: php html frame block


    【解决方案1】:

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

    if (window.location != window.parent.location) {
        // test1.php is within iframe
    } else {
        // test1.php is accessed directly
    }
    

    【讨论】:

      【解决方案2】:

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

      2.来自 url 和 from 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>
      

      【讨论】:

        【解决方案3】:
        1. 在使用框架之前,您可能需要阅读 this
        2. 阻止直接访问您的 php 脚本的最佳方法是将其放在一个文件夹中,并在 .htaccess 文件中阻止对该文件夹的访问。然后使用include 访问它(从另一个“可以”供用户访问的页面)。

        【讨论】:

          猜你喜欢
          • 2017-09-02
          • 1970-01-01
          • 2017-09-23
          • 2010-11-05
          • 2010-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多