0

我正在使用 joomla 1.5。我有一个单独的代码,它在同一个域中,但在另一个文件夹中。我正在使用 iframe 在我的 joomla 代码中访问该文件夹。现在我必须将会话值从 joomla 应用程序发送到 iframe,我通过以下代码执行此操作。

echo '<iframe src="https://localhost/demo/quiz/quiz_main.php?u_d='.$user->id.'" width="910" height="885" style="background-color:transparent"></iframe>';

其中 $user->id 是注册用户的 id,如果用户登录,显然该页面将打开。

然后在 quiz_main.php 页面中,我正在检查 u_d 的值,并据此控制系统。现在的问题是假设,我在同一个浏览器中使用相同的 url 打开了两个选项卡,并使用相同的用户 ID 登录。现在从一个选项卡中注销。然后转到另一个选项卡。用户可以对在 iframe 中运行的那个小应用程序执行任何操作,直到页面没有刷新。但它不应该。

请帮助我如何解决此问题。

4

1 回答 1

0

无论如何你必须执行检查服务器端,所以quiz_main.php你需要类似的东西

<?php
    if(!user_is_logged_in())
        // Redirect to login
?>

防止用户执行任何会影响服务器上数据的操作。

您还可以使用 JavaScript 进行检查客户端。您可以每秒钟轮询一次服务器n以检查用户是否仍然登录,如果没有将用户重定向到适当的页面。

下面使用 jQuery 的示例

function logged_in() {
    $.ajax({
        url: '/logged_in.php',
        type: 'post',
        success: function(data) {
            data = $.parseJSON(data);
            if(data['logged_in'] != true)
                window.location('login.php');
            else
                setTimeout('logged_in()', 5000); // calling itself in 5 seconds.
        }
    });
}
$(document).ready(function() {
    logged_in(); // Calling first time when the document is ready.
});

只是关于如何做到这一点的粗略草图。当然,您需要logged_in.php处理您的请求。

于 2012-12-06T10:33:36.537 回答