因此,我使用此代码删除cookie,如果页面已被访问,则进行页面重定向:
<script language="JavaScript"><!--
function Get_Cookie(name) {
var start = document.cookie.indexOf(name+"=");
var len = start+name.length+1;
if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
if (start == -1) return null;
var end = document.cookie.indexOf(";",len);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(len,end));
}
function Set_Cookie(name,value,expires,path,domain,secure) {
document.cookie = name + "=" +escape(value) +
( (expires) ? ";expires=" + expires.toGMTString() : "") +
( (path) ? ";path=" + path : "") +
( (domain) ? ";domain=" + domain : "") +
( (secure) ? ";secure" : "");
}
function Delete_Cookie(name,path,domain) {
if (Get_Cookie(name)) document.cookie = name + "=" +
( (path) ? ";path=" + path : "") +
( (domain) ? ";domain=" + domain : "") +
";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
var mainUrl = 'noflash.html';
var days = 365; // valid one year from now
function isCookieEnabled() {
if (document.all) return navigator.cookieEnabled;
Set_Cookie('testcookie',today.getTime());
var tc = Get_Cookie('testcookie');
Delete_Cookie('testcookie');
return (tc == today.getTime());
}
var today = new Date();
var zero_date = new Date(0,0,0);
today.setTime(today.getTime() - zero_date.getTime());
var todays_date = new Date(today.getYear(),today.getMonth(),today.getDate(),0,0,0);
var expires_date = new Date(todays_date.getTime() + (days * 86400000));
var beenHere = Get_Cookie('beenHere');
if (beenHere == 'yes') {
if (document.images) window.location.replace(mainUrl);
else window.location = mainUrl;
}
else if (isCookieEnabled()) Set_Cookie('beenHere','yes', expires_date);
//--></script>
它工作得很好,我检查了cookies,然后创建了它,在访问页面一次后,我被重定向,但问题是过期,它说是当浏览器关闭时,这不是它应该做的(1年后)。
密码错了吗?
最佳答案
“.toGMTString()”函数不提供cookie语法所需格式的日期字符串。“delete”功能的硬编码日期是正确的,但请尝试
alert(new Date().toGMTString())
看看你得到了什么-日期部分之间没有破折号。
其他不相关的注意事项:您不需要在
<script>
标记上使用“language”属性,也不需要脚本体周围的过时HTML注释;大约12年前,这已经不再是必需的了。编辑-为了更有用一点,为了得到一个饼干友好的日期,我可能只是把字符串放在一起自己。
function cookieDate(d) {
function d2(n) { return n < 10 ? '0' + n : n; }
var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
return '' +
days[d.getUTCDay()] + ', ' +
d2(d.getUTCDate()) + '-' +
months[d.getUTCMonth()] + '-' +
d.getUTCFullYear() + ' ' +
d2(d.getUTCHours()) + ':' +
d2(d.getUTCMinutes()) + ':' +
d2(d.getUTCSeconds()) + ' GMT';
}
然后你可以叫“cookieDate(someDate)”来得到一个很好的字符串。
Here's the jsfiddle.