Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP框架内重定向网站_Php_Javascript_Frame_Redirect - Fatal编程技术网

从PHP框架内重定向网站

从PHP框架内重定向网站,php,javascript,frame,redirect,Php,Javascript,Frame,Redirect,我有一个网页,我们称之为main.php,它显示足球场的图像和一些分布在球场上的球员。但是,该页面使用list.php作为加载玩家列表的右侧框架 发生的事情是,当用户点击球场上的球员(main.php),比如说在守门员(GK)的图像上,来自世界各地球队的GK列表将加载到右列表fram(list.php)中。这是通过使用ajax实现的 到目前为止我们还不错 当前情况是,当会话超时,用户从字段中单击某个播放器时,右侧的列表不会加载,相反,列表中的播放器列表会消失,右侧框架(list.php)上会显示

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

我猜重定向与使用header()函数基本相同。无法使用php重定向指定目标,因为它是服务器端的-指定目标是客户端的

您需要在屏幕上打印如下内容:

<script type="text/javascript">window.open('index.php','_parent');</script>
window.open('index.php','u parent');

这会将用户重定向到索引。

为此目的使用帧是。。。好。。。所以80年代

无论如何,在这样的场景中,帧可能是命名的。这意味着你可以解决它们,但也意味着你必须解决它们。只需在“当前”框架中加载url就可以做到这一点,这就是为什么您的方法不起作用的原因


如果您真的必须使用基于帧的方法,那么您必须使用javascript来寻址所有已知帧并重定向它们

也许您可以在框架内使用一些javascript,如下所示:

<script type="text/javascript">

    window.top.location = 'YourPage.html';

</script>

window.top.location='YourPage.html';

希望这有帮助

问题是会话在我使用main.php时过期。因此,任何后续的Ajax请求都将失败,因为所有请求都要求会话处于活动状态

问题在于,由于会话过期,从IFrame发送的Ajax请求(IFrame位于main.php内,并通过Ajax调用指向list.php)失败

因此,我通过添加另外两个会话检查解决了这个问题,一个在main.php上,一个在list.php上,使用php(检查会话,如果有,重定向)。在主容器main.php中,我通过JS检查会话,间隔Ajax请求以检查会话,如果会话已结束,则使用JS重定向

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

已经用过了。同样的结果。它从框架内加载。
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                   
                }
            }
        }
    });
}