我正在使用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-&gt; id是注册用户ID,显然如果用户登录,此页面将会打开。
然后在quiz_main.php页面中,我正在检查u_d的值,并根据我控制系统。 现在问题是,我在相同的浏览器中打开了两个具有相同URL的选项卡,并使用相同的用户ID登录。现在从一个选项卡注销。然后转到另一个选项卡。用户可以对iframe内运行的小应用程序执行任何操作,直到页面未刷新为止。但它不应该。
请帮我解决这个问题。
答案 0 :(得分: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
来处理您的请求。