我使用javascript编写了一个登录代码
function checkLogin()
{
if(localStorage.login=="true")
{
window.location.href = "index.html";
}
else if(localStorage.login=="false")
{
window.location.href = "login.html";
}
}
其中localStorage.login =" true" &安培; "假"已从服务器动态分配
当我包含此代码时,页面会被循环重定向!!
给我解决方案:
如何在执行后删除/销毁用户定义的函数?
或
如何在jquery
中执行仅一次onpreviceready 的用户定义函数答案 0 :(得分:2)
要设置 localStorage对象:
localStorage.setItem('objName','objValue');
获取 localStorage对象:
localStorage.getItem('objName');
答案 1 :(得分:1)
我认为最好的解决方案是仅从您想要重定向到登录页面调用此函数,正如Emad Melad所说,在login.html
页面之外。
如果您想要的是再次访问login.php页面的人如果已登录则会被重定向到index.php,您可以尝试检测您所在的页面,然后创建IF
所以,如果它是登录页面,它就不会被执行。它会是这样的:
function checkLogin()
{
var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1)
if(localStorage.login=="true")
{
window.location.href = "index.html";
}
else if(localStorage.login=="false" && filename != 'login.html')
{
window.location.href = "login.html";
}
}
* The snippet code to get the actual URL
但是,根据我在您的代码中所读到的内容,您将从调用此函数的每个页面重定向到index.html
。
通常,我在我的应用中所做的只是检查它是否未登录,如果是这种情况,则重定向到login.html
。我要做的是,修改一下你的功能,是:
function checkLogin()
{
var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1)
if(localStorage.login=="true" && filename == 'login.html')
{
window.location.href = "index.html";
}
else if(localStorage.login=="false" && filename != 'login.html')
{
window.location.href = "login.html";
}
}
这样,如果您已登录并且您使用的是login.php,则只会被重定向到index.html
,而如果您不是,则只会被重定向到login.html
。已登录,但login.html
除外。
希望它可以帮到你!
答案 2 :(得分:0)
无法从服务器设置LocalStorage。 LocalStorage位于客户端浏览器中。 我猜你的代码是循环的,因为你加载登录页后调用checkLogin()函数。因为localStorage是空的。 这行代码将执行
window.location.href = "login.html";
再次加载页面并再次检查localStorage并且它是空的
解决这个问题。 你应该在登录页面之外调用你的功能。