本帖最后由 waCtr 于 2012-03-06 09:54:32 编辑

解决方案 »

  1.   

    难道是我没表达清楚??
    当用户选择复选框登录进去后  然后又注销  再次换个账户登录  这时
    cookie 不是空的
    if (Cookie == null)就直接进CookiesHelper.SetCookie("UserInfo", "uName", uName);那么我别的页面需要取cookie值的 就取不到了
    string Name = HttpUtility.UrlDecode(Request.Cookies["UserInfo"].Values["uName"]);
    为空
      有没有办法解决这类问题啊?
      

  2.   

    function SetCk()
    {
        if(document.getElementById("cbread").checked==true)
        {
            SetCookie(document.getElementById("tbLogName").value,document.getElementById("tbpwd").value);
        }
    }
    //写cookies函数
    function SetCookie(name,value)
    {
        var Days = 30;
        var exp  = new Date();
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
    }
    function getCookie(name)//取cookies函数        
    {
        var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
        if(arr != null) return unescape(arr[2]); return null;
    }
    function GetPwd()
    {
        if(getCookie(document.getElementById("tbLogName").value)!=null)
        {
            document.getElementById("tbpwd").value=getCookie(document.getElementById("tbLogName").value);
        }
    }
      

  3.   

    取Cookie一般使用
    System.Web.HttpContext.Current.Request.Cookies[cookieName]加Cookie一般是
    System.Web.HttpContext.Current.Response.Cookies.Add()
        
      

  4.   

    我就是这么写的啊 public static void AddCookie(HttpCookie cookie)
            {
                HttpResponse response = HttpContext.Current.Response;
                if (response != null)
                {
                    //指定客户端脚本是否可以访问[默认为false]
                    cookie.HttpOnly = true;
                    //指定统一的Path,比便能通存通取
                    cookie.Path = "/";
                    //设置跨域,这样在其它二级域名下就都可以访问到了
                    //cookie.Domain = "chinesecoo.com";
                    response.AppendCookie(cookie);
                }
            }
    /// <summary>
            /// 获得Cookie
            /// </summary>
            /// <param name="cookieName"></param>
            /// <returns></returns>
            public static HttpCookie GetCookie(string cookieName)
            {
                HttpRequest request = HttpContext.Current.Request;
                if (request != null)
                    return request.Cookies[cookieName];
                return null;
            }现在的问题是
    用户第一次登录 这里没错 可以添加cookie
    if (Cookie == null)
    {
    添加cookie
    这里执行
    }
    第二次登录  用户可以直接点登录的 因为第一次登录时已经记住账号和密码了
    但是用户想换个账号登录  这时登录时
    if (Cookie == null)//它就不为空了
    那么就没添加cookie了所有其他画面就取不到cookie了 就算取到 也是之前的账号 并不是这次登录的
      

  5.   

    现在的问题是
    当cooki的值(uName)不一样时 应该处理是 替换之前的cookie 或者从新设置cookie
    /// <summary>
            /// 设置Cookie
            /// </summary>
            /// <param name="cookieName"></param>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <param name="expires"></param>
            public static void SetCookie(string cookieName, string key, string value, DateTime? expires)
            {
                HttpResponse response = HttpContext.Current.Response;
                if (response != null)
                {
                    HttpCookie cookie = response.Cookies[cookieName];
                    if (cookie != null)
                    {
                        if (!string.IsNullOrEmpty(key) && cookie.HasKeys)
                            cookie.Values.Set(key, value);
                        else
                            if (!string.IsNullOrEmpty(value))
                                cookie.Value = value;
                        if (expires != null)
                            cookie.Expires = expires.Value;
                        response.SetCookie(cookie);
                    }
                }        }
    现在这段代码貌似不起作用  
    其他画面取出来的cookie是null
    string Name = HttpUtility.UrlDecode(CookiesHelper.GetCookie("UserInfo").Values["uName"]);
    求解!!!
      

  6.   

    本帖最后由 net_lover 于 2012-03-06 11:24:00 编辑
      

  7.   

    这个问题 可以这么解决了
     但是又有个新问题了  当用户不打钩时(记住密码) 怎么将cookie添加进去?
    如果不添加的话  后面的程序中 还需要从cookie中取uNmae 就取不到了
      

  8.   

    你知道打勾的意义吗?打勾了,你需要设置Cookie.Expires时间,
    不打勾,就不用设置,跟是否添加没关系
      

  9.   


    HttpCookie Cookie = CookiesHelper.GetCookie("UserInfo");
                    //有cookie值的话就取出来
                    if (Cookie != null)
                    {
                        this.txtUserName.Value = HttpUtility.UrlDecode(Cookie.Values["uName"]);
                        this.txtPwd.Attributes.Add("value", Cookie.Values["Pwd"]);
                    }
    那这里 Cookie!=null的
     没打钩 也会给文本框赋值
      

  10.   

    没打钩 关闭浏览器Cookei就没有了,如果你的还有,说明你设置的有问题。如果你还搞不清楚,你可以把是否打勾也写到Cookei中,
    if(String.IsNullOrEmpty(Cookie.Values["打勾标记"])==false)
    this.txtPwd.Attributes.Add("value", Cookie.Values["Pwd"]);