文档章节

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

SunwardTree
 SunwardTree
发布于 2017/04/25 11:08
字数 709
阅读 48
收藏 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
jFinal validator的handleError()方法如何保留用户已输入的表单信息

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

当风
2014/06/07
841
2
网站第三方接口接入——php接入QQ互联

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

EasyDots
04/24
0
0
探秘 widget 之 launcher 添加 widget 的流程分析

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

鉴客
2011/09/25
5.2K
1
微信小程序版博客——授权登录的修改(wx.getUserInfo)

最近一直忙着项目没有时间打理我的小程序,有网友反馈wx.getUserInfo官方文档中做了一些调整,今天有空看了下文档,果然变了,所以抽时间优化了下代码 思路 之前的授权登录优化这里看下原来的...

Bug生活2048
07/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Windows / Linux / MacOS 设置代理上网的方法汇总

本文汇总了 Windows / Linux / MacOS 设置代理上网的各种方法,总结如下: 1、设置系统代理(Windows、Linux、MacOS) 2、设置代理插件(Chrome、Chromium、Firefox、Opera、QQ等浏览器) 3、...

sunboy2050
昨天
1
0
自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
昨天
1
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
昨天
2
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
昨天
2
0
Android TV开发-按键焦点

写在前面 按键焦点过程了解 2.1 dispatchKeyEvent 过程了解 2.2 焦点查找请求过程了解 1.2.1 第一次获取焦点 1.2.3 按键焦点 焦点控制 焦点记忆 应用场景 参考资料 [TOC] 1. 写在前面 工...

冰雪情缘l
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部