登陆后跳回原页面

这是我在建站过程中自己写出来的东西——通过js实现登陆后跳回原页面,理论上是通用的。但如果想要使用这个,你必须要有编辑网站全局js的权限。这些js可能会有一些不完善的地方,欢迎在评论中指出。

首先,你需要在全局添加公共存取cookie函数,必须放在本页展示的其他任何js的前面。

function setCookie(name,value,Days){
if(Days==undefined) document.cookie = name + "="+ escape (value) + ";path=/";
else{
var exp = new Date();
exp.setTime(exp.getTime() + Day*24*60*60*30);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString()+";path=/";}
}
function getCookie(cname)
{
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0;i<ca.length; i++)
{
var c = ca[i].trim();
if (c.indexOf(name)==0) return c.substring(name.length,c.length);
}
return "";
}

然后在登陆&注册页放入以下js来记录之前在看的页面。

if(((document.referrer).indexOf("标志")*1)<0)
setCookie('referrer',document.referrer);

将[标志]替换为你的登陆&注册页url中独有的字符串,以防一跳跳回注册页等意外的发生。

然后创建一个单独页面,放入以下js,并将其设置为登陆后跳转至的页面。

var $url=location.href.split("//");

function gomain(){location.href=$url[0]+"//"+location.hostname;}
var ref=unescape(getCookie("referrer"));
var nref=document.referrer;
if(nref==location.href){gomain()}
//防止无限跳转
else{
if(nref=="")gomain();
//预防直接访问
if(ref){
setCookie('back','ture');
//标记刷新
setCookie('referrer','',-1);
//删除跳转标记
location.href=ref;
}
else{gomain()}}
//预防登录页写cookie失败

然后在文章页、首页等所有可能会被跳到的地方放这个js来刷新页面,不然会出现没有登陆的假象。如果登录之后页面不会有任何变化,那么可以免去上方js中的[标记刷新]和以下的js片段。

if(getCookie('back')=='ture'){setCookie('back','false');location.reload()}

顺便附上wordpress设置登陆后跳转到指定页面的代码

function login_redirect( $redirect_to, $request, $user ){
return home_url('url');
}
add_filter( 'login_redirect', 'login_redirect', 10, 3 );

直接在主题编辑器中追加在function.php尾部即可。

其中的[url]换成你想要跳转到的页面路径的后半部分。比如这里填url就会跳到https://domain.com/url这个网址。

标注

发表评论