我有一个网页,我们称之为main.php,它显示了足球场的图像和一些分布在球场上的球员。但是,该页面使用list.php作为加载播放器列表的右侧框架。
会发生什么,当用户点击该字段上的玩家(main.php)时,让我们说一下目标守护者(GK)的图像,来自全球的GK列表团队将加载右侧列表fram(list.php)。这是通过使用ajax。
到目前为止我们还不错。
当前情况,当会话超时并且用户点击该字段中的播放器时,右侧列表不会加载,而是播放列表从列表中消失消息说“请登录”显示在右侧框架(list.php)
目标是,当会话超时我希望整个网站重定向到主页index.php
问题是,我已经将重定向代码放在负责显示“请登录”消息的代码之前。但是发生了什么,重定向发生在框架内,所以我最终让main.php显示字段,list.php显示主页面!
这是我添加的代码。
$user_id = NSession::get('user_id');
if (!isset($user_id))
{
NSession::removeall();
General::Redirect('index.php');
}
他们正在使用Smarty。顺便说一句,我在main.php的顶部添加了相同的代码,现在如果用户尝试在不登录的情况下访问main.php,它会将其重定向到主页面,因此代码可以正常工作!
n.b。该项目不是我的,它属于我工作的公司。 而且我不知道哪个代码正在检查会话,我所知道的是,如果用户在会话超时后从字段中点击播放器,则“请登录”消息将显示在框架中。
答案 0 :(得分:2)
我猜测重定向与使用header()函数基本相同。使用php重定向指定目标是不可能的,因为它是服务器端 - 指定目标是客户端。
您需要在屏幕上打印这样的内容:
<script type="text/javascript">window.open('index.php','_parent');</script>
这会将用户重定向到索引。
答案 1 :(得分:0)
为此目的使用框架是......好吧......所以80岁......
无论如何,帧可能在这种场景中被命名。这意味着您可以解决它们,但也必须解决它们。只需在&#34;当前&#34;内加载网址框架确实如此,这就是为什么你的方法不起作用。
如果你真的必须使用基于框架的方法,那么你将不得不使用javascript来解决所有已知的帧并重定向它们。
答案 2 :(得分:0)
也许你可以在你的框架内使用一些javascript:
<script type="text/javascript">
window.top.location = 'YourPage.html';
</script>
希望这有帮助
答案 3 :(得分:0)
问题是当我在main.php上时会话到期。因此,任何后续请求的Ajax都将失败,因为所有请求都要求会话处于活动状态。
问题是从IFrame发送的Ajax请求(IFrame在main.php中并指向通过Ajax调用的list.php)由于会话到期而失败。
所以我通过添加另外两个会话检查解决了这个问题,一个在main.php上,一个是使用PHP的list.php(检查会话,如果它在那里,重定向)。在主容器main.php中,我通过JS检查会话,间隔Ajax请求检查会话,如果会话已经结束,则使用JS重定向。
PHP:
$user_id = NSession::get('user_id');
if (isset($_POST["checklogin"]))//check loging
{
die(isset($user_id) ? "true" : "false");
}
if (!isset($user_id) || $user_id == "")
{
NSession::removeall();
General::Redirect('login.php');
}
JavaScript的:
jQuery(document).ready(function($) {
$(window).focus(function() {
checkSession();
});
});
function checkSession()
{
$.ajax({
type: "POST",
data: {"checklogin": "cl"},
url: "list_players.php",
success: function(result) {
if (result === "false")
{
if (FIELD.showMessage === false)
{
FIELD.showMessage = true;
alert("Your session has been closed\nYou will be redirected to login page now. ");
window.location.href = ("login.php");//incase user clicks OK
}
}
}
});
}