我有一个临时登录脚本,用于检查密码,分配cookie,然后将用户重定向到新页面。在控制台页面上,我有代码检查cookie是否设置为true
。如果是,则删除它并继续。如果不是,则会将用户重定向回主页。我得到了所有代码,但它不起作用!以下是一些更重要的信息:
login
true
function getCookie(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else
{
begin += 2;
var end = document.cookie.indexOf(";", begin);
if (end == -1) {
end = dc.length;
}
}
// because unescape has been deprecated, replaced with decodeURI
//return unescape(dc.substring(begin + prefix.length, end));
return decodeURI(dc.substring(begin + prefix.length, end));
}
function doSomething() {
var myCookie = getCookie("login");
if (myCookie == true) {
alert("Logged in for one session!");
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
}
else {
alert("Login Failed. Redirecting...");
window.location.assign("https://www.code-u.org/")
}
}

答案 0 :(得分:0)
已经两年来不能为您提供帮助,但这是因为广泛复制粘贴的getCookie
中存在错误。
也就是说,如果cookie集是document.cookies
中的第一个cookie,它将不起作用,因为当采用分支if (begin == -1)
时,永远不会设置end
。
解决方案是将getCookie
替换为另一个实现。