您的位置:首页 > 运维架构 > 网站架构

跳转到另一个网站之后,如何跳转回原来的站点并保留原来的信息

2017-04-25 00:00 281 查看
摘要: 用JS返回的方式完成网站携带原始信息的回退。

环境

百度云应用、原生PHP、ThinkPHP

步骤

1、维护一个不能再维护的老网站,比较实际的方法是“新功能另起炉灶,搭建新网站,让它们看起来像是同一个网站”。然而随之带来的问题是,新老网站的切换。我正在添加功能的一个老网站每个页面都设置了以SESSION的某些值为标记的登陆检查,用URL方式反链接回去,所有之前的信息全部丢失,由此开始想解决办法。

2、解决办法

2.1、将用户信息SESSION的项以POST的形式传输给新网站,这种方法理论上是可行的,然而实际上面临两个问题:首先,老网站是否允许向外部POST(我的就卡在这里了,老网站的ThinkPHP框架不允许);其次,只能保证最主要的下次继续登陆,不能实现其他访问信息的恢复;

2.2、利用COOKIS保留的浏览信息,使用JS实现回退。这样一则可以保留大部分浏览信息,二则简便易行,具体实现方法在下一部分介绍。

3、实现方法

3.1、记录访问的深度

从老站访问到新站以后,需要记录在新站访问的深度,方便JS回退。我这里就用PHP新建了一个SESSION变量,每新访问新站的一个页面,自动加一。

3.2、防止刷新

刷新不改变深度,却有可能改变记录深度的值,因此,我们需要防止因刷新改变的深度。这里我用的办法是,不同新站不同页面切换赋予SESSION变量一个不同的值,并用另一个SESSION变量保留其旧值,只有在两个值不同时才增加记录深度。

3.3、防止只打开新站

由于新站也是一个独立的网站,可以单独访问,因此需要确定新站是否由老站打开,如果是再开始计数,否则,不设置SESSION变量,这里就需要用到PHP的获取前一个URL的功能。

if(strstr($_SERVER['HTTP_REFERER'],"oldwebsite")){
$_SESSION['count'] = 1;
}

这里仅提醒需要注意的地方,具体判断逻辑根据需要会有不同。

3.4、JS回退到老站

这里用到的方法是绑定按钮和JS函数,当点击按钮时,调用系统回退函数,回退到指定深度的页面。

<script>
$(function() {
$("#backold").click(function(){
window.history.go(-count);//count记录深度
});
});
</script>
<ul class="nav navbar-nav">
<li><button id="backold">返回老站</button></li>
</ul>

到这里,就大功告成了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP JavaScript Options
相关文章推荐