从PHP框架内重定向网站
我有一个网页,我们称之为main.php,它显示足球场的图像和一些分布在球场上的球员。但是,该页面使用list.php作为加载玩家列表的右侧框架 发生的事情是,当用户点击球场上的球员(main.php),比如说在守门员(GK)的图像上,来自世界各地球队的GK列表将加载到右列表fram(list.php)中。这是通过使用ajax实现的 到目前为止我们还不错 当前情况是,当会话超时,用户从字段中单击某个播放器时,右侧的列表不会加载,相反,列表中的播放器列表会消失,右侧框架(list.php)上会显示一条消息“请登录” 目标是,当会话超时时,我希望整个网站重定向到主页index.php 问题是,我已经将重定向代码放在负责显示消息“请登录”的代码之前。但实际情况是,重定向发生在框架内,因此我最终让main.php显示字段,list.php显示主页 这是我添加的代码从PHP框架内重定向网站,php,javascript,frame,redirect,Php,Javascript,Frame,Redirect,我有一个网页,我们称之为main.php,它显示足球场的图像和一些分布在球场上的球员。但是,该页面使用list.php作为加载玩家列表的右侧框架 发生的事情是,当用户点击球场上的球员(main.php),比如说在守门员(GK)的图像上,来自世界各地球队的GK列表将加载到右列表fram(list.php)中。这是通过使用ajax实现的 到目前为止我们还不错 当前情况是,当会话超时,用户从字段中单击某个播放器时,右侧的列表不会加载,相反,列表中的播放器列表会消失,右侧框架(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
}
}
}
});
}