从PHP框架内重定向网站

时间:2012-10-04 10:28:28

标签: php javascript frame redirect

我有一个网页,我们称之为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。该项目不是我的,它属于我工作的公司。 而且我不知道哪个代码正在检查会话,我所知道的是,如果用户在会话超时后从字段中点击播放器,则“请登录”消息将显示在框架中。

4 个答案:

答案 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                   
                }
            }
        }
    });
}