0

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

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

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

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

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

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

4

2 回答 2

3

注销按钮是链接吗?如果是这样,你不能用target="_parent"它来改变带有框架集的页面吗?

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

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

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

于 2010-11-05T05:04:05.057 回答
0

第 1 部分的解决方案:

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

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

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

第 2 部分的解决方案:

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

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

于 2010-11-05T12:01:04.413 回答