日期:2014-05-16  浏览次数:20375 次

类似csdn论坛两周内不用再登录,cookie具体怎么实现啊?
写了个cookie.js
function   SetCookie(sName,   sValue)
{
    date   =   new   Date(2007,8,17);
    document.cookie   =   sName   +   "= "   +   escape(sValue)   +   ";   expires= "   +   date.toGMTString();
}
function   GetCookie(sName)
{
    //   cookies   are   separated   by   semicolons
    var   aCookie   =   document.cookie.split( ";   ");
    for   (var   i=0;   i   <   aCookie.length;   i++)
    {
        //   a   name/value   pair   (a   crumb)   is   separated   by   an   equal   sign
        var   aCrumb   =   aCookie[i].split( "= ");
        if   (sName   ==   aCrumb[0])  
            return   unescape(aCrumb[1]);
    }

    //   a   cookie   with   the   requested   name   does   not   exist
    return   null;
}

function   getCookieVal(offset)   {  
var   endstr   =   document.cookie.indexOf   ( "; ",   offset);  
if   (endstr   ==   -1)   endstr   =   document.cookie.length;  
        return   unescape(document.cookie.substring(offset,   endstr));  
}
function   delCookie(name){
var   exp   =   new   Date();
exp.setTime   (exp.getTime()-1000*1800);  
var   cval   =   getCookie   (name);
document.cookie   =   name   +   "= "   +   cval   +   ";   expires= "+   exp.toGMTString();
}

不过当我验证页面把cookie保存(SetCookie)了后,验证页马上取可以取到(GetCookie),登陆后刷新主页时主页总取不到cookie,更谈不上IE重启了。
是不是由于两个页面都 <script   LANGUAGE= "JavaScript "   src= "js/cookie.js "> </script> ,但我必须这样做啊!


------解决方案--------------------
exp.setTime (exp.getTime()-1000*1800);
这个时间怎么越设越小了,要超过当前日期才可以啊
------解决方案--------------------
奇怪你的代码没什么问题啊,我这里可以执行
<script language=javascript>
function SetCookie(sName, sValue)
{
date = new Date(2007,8,17);
document.cookie = sName + "= " + escape(sValue) + "; expires= " + date.toGMTString();
}
function GetCookie(sName)
{
// cookies are separated by semicolons
var aCookie = document.cookie.split( "; ");
for (var i=0; i < aCookie.length; i++)
{
// a name/value pair (a crumb) is separated by an equal sign
var aCrumb = aCookie[i].split( "= ");
if (sName == aCrumb[0])
return unescape(aCrumb[1]);
}

// a cookie with the requested name does not exist
return null;
}

function getCookieVal(offset) {
var endstr = document.cookie.indexOf ( "; ", offset);
if (endstr == -1) endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function delCookie(name){
var exp = new Date();
exp.setTime (exp.getTime()-1000*1800);
var cval = getCookie (name);