文档章节

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

SunwardTree
 SunwardTree
发布于 2017/04/25 11:08
字数 709
阅读 43
收藏 0

环境

百度云应用、原生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>

到这里,就大功告成了。

© 著作权归作者所有

共有 人打赏支持
SunwardTree
粉丝 1
博文 10
码字总数 6625
作品 0
武汉
程序员
多个不同域名共用一个QQ登录实例教程

简介 本篇教程不仅仅是qq登录教程,关键问题还有解决一个多域名共用一个qq登录问题。 网站做大了,很多网站开始给用户提供一个二级域名的主页。或者自己本身就有很多二级域名子站。而腾讯申请...

星空幻颖
2017/11/29
0
0
网站第三方接口接入——php接入QQ互联

如下图,网站需要接入QQ登录,怎么接入呢? 步骤0——登录QQ互联平台获取appid和appkey QQ互联官网直达:https://connect.qq.com/ 如果您是第一次使用QQ互联,则需要填写开发者资料和网站信息并...

EasyDots
04/24
0
0
jFinal validator的handleError()方法如何保留用户已输入的表单信息

在handleError()方法中跳转到原表单页面后如何保留用户已经输入的信息,已经加了keepPara()方法,可是跳转回表单页面后,表单中还是空的,什么都没有。看jFinal手册中说,使用keepPara()方法...

当风
2014/06/07
827
2
跨域SSO的实现之一:架构设计

翻译自CodeProject网站ASP.NET9月份最佳文章:Single Sign On (SSO) for cross-domain ASP.NET applications。 翻译不妥之处还望大家多多指导、相互交流。 文章分为两部分:架构设计和程序实...

达摩院法师
2010/10/28
0
0
探秘 widget 之 launcher 添加 widget 的流程分析

最近打算研究下android的widget相关问题,并把一些心得在此稍作记录,哈哈,等研究完成了,如果有必要的话,也会把改动的源码贴出来,以飨读者。今天先来看看launcher2中添加widget的流程。 ...

鉴客
2011/09/25
4.9K
1

没有更多内容

加载失败,请刷新页面

加载更多

Shell编程(expect同步文件、指定host和同步文件、构建文件分发系统、批量执行命令)

expect脚本同步文件 需求:自动同步文件 实验准备: A机器:192.168.248.130 B机器:192.168.248.129 实现: 1.A机器编写4.expect脚本文件,内容如下所示: #!/usr/bin/expectset passwd "...

蛋黄_Yolks
13分钟前
0
0
ppwjs之bootstrap颜色:背景颜色

<!DOCTYPT html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>ppwjs欢迎您</title><link rel="icon" href="/favicon.ico" ......

ppwjs
14分钟前
0
0
Ubuntu与 Fedora之对比

大家好。今天我将重点介绍两个流行的Linux发行版之间的一些特性和差异; Ubuntu 18.04和Fedora 28。它们都有自己的包管理; Ubuntu使用DEB,而Fedora使用RPM,但它们都具有相同的桌面环境(GNO...

linuxprobe16
17分钟前
0
0
线性代数入门

线性代数的概念对于理解机器学习背后的原理非常重要,尤其是在深度学习领域中。它可以帮助我们更好地理解算法内部到底是怎么运行的,借此,我们就能够更好的做出决策。所以,如果你真的希望了...

牛奋Debug
昨天
2
0
开发5分钟,调试2小时 - 该如何debug?

几年来我在答疑群、论坛、公众号、知乎回答的各种问题,没有一万也有八千。其中有三分之二以上都是在帮人看报错,帮人 debug(调试代码)。 可以说,会不会 debug,有没有 debug 的意识,懂不...

crossin
昨天
3
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部