【问题标题】:PHP Logout Script with 4 frames in frameset框架集中有 4 帧的 PHP 注销脚本
【发布时间】:2011-05-05 11:01:13
【问题描述】:

我有一个非常有效的研究 logout.php 文件,但是我面临的问题是将脚本放入一个新的“内部网样式”管理站点,该站点在一个框架集中使用 4 个框架(标题、左、中、右)。

我需要满足两个要求,我很难找到解决方案(是的,我知道框架对于当今的消费者网站来说很糟糕,但重申一下,这是一个内部系统管理面板,到处都有小部件)。

  1. 当用户单击顶部框架中的“注销”按钮时,整个页面会被定向到 logout.php,然后它会重定向到单个页面“home.php”。截至目前,点击注销只会将该特定帧带到我想要的目的地。

  2. 当用户登录时,会创建一个 SESSION 变量并将其设置为 true;如果在没有 SESSION[validated]=true 的情况下访问页面,则用户退出。与上面类似,如果发生这种情况,我需要将整个框架集定向到 logout.php。

我试图在没有 javascript 的情况下实现这一点(因为这显然可以简单地被禁用,并且 JS 不是真正的安全措施)。

过去有人处理过这个问题吗?

【问题讨论】:

    标签: php javascript jquery frames logout


    【解决方案1】:

    注销按钮是链接吗?如果是这样,您不能使用target="_parent" 使其更改带有框架集的页面吗?

    编辑
    Re #2:如果会话超时,您可以创建一个中间页面,其中包含使用target=_parent 和下面的 JavaScript 的链接,这两者都会跳出框架。

    <script type="text/javascript">
    if (top.location != self.location) top.location = 'login.php'
    </script>

    这很好,因为如果他们启用了 JavaScript,他们甚至不会注意到,如果他们不这样做,他们仍然会跳出框架。

    【讨论】:

    • 您似乎解决了上面的第 1 部分,但在这种情况下,我试图做到这一点,无论出于何种原因,它出现了故障并且没有像所有页面一样注销(即我可以写一个特定的框架 url 并访问该页面。我将再次修改以进行调整。关于 #2 的任何想法?
    • @JM4 - Re #2,我认为不使用 javascript 是不可能的。
    • @JM4 - 我添加了一个如何使用 js 进行操作的示例。
    【解决方案2】:

    第 1 部分的解决方案:

    制作一个像这样的注销按钮:

    <a href="/logout.php" target="_top">logout</a>
    

    然后让 logout.php 完成所有艰苦的注销工作(可能只是清除会话),然后将用户重定向到正确的框架集(使用 PHP 的 header 命令进行重定向)。

    第 2 部分的解决方案:

    这不应该随机发生。如果您登录,您的会话将设置为已验证 = true。您不会“遇到”您的会话恰好相反的页面。

    但是,如果您的会话因某种原因无效,您可以包含一个 PHP 文件(或者,如果您足够聪明,可以在您的单点入口中进行此操作)以重定向到注销页面。参见上面的 1。

    【讨论】:

    • Re #2:您的会话可能会超时,并且会发布/刷新一帧并发现它已超时。
    • 你是对的。如果会话无效,可以通过重定向检查全局 PHP / 单一入口点来解决这个问题。
    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 2017-05-22
    • 2013-05-11
    • 2011-08-29
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    相关资源
    最近更新 更多