日期:2014-05-18  浏览次数:20416 次

大家,做个这个东东没......
需求是这样的,首先在http://www.55188.com/logging.php?action=login注册个用户,然后自己写个程序实现登录,winform、webform都可以,要的结果,执行完这段程序后,我在打开http://www.55188.com/logging.php?action=login网站,就是已经登录的状态...,用户和密码我已经注册成功了,
用户"成功吧"密码"abc123" 
最终要求,执行完代码也好程序也罢,反正再次打开这个网页就是已经登陆状态了。。




------解决方案--------------------
使用InternetSetCookie和InternetGetCookie函数去设置和读取。
使用方法参见
http://www.google.com/search?hl=zh-CN&newwindow=1&safe=off&client=firefox-a&hs=idy&rls=org.mozilla%3Azh-CN%3Aofficial&q=c%23+InternetSetCookie&oq=c%23+InternetSetCookie&aq=f&aqi=&aql=&gs_sm=e&gs_upl=73611l74259l0l74656l3l3l0l0l0l0l0l0ll0l0
------解决方案--------------------
既然需要下次打开页面还是已经登陆状态,那就需要登陆之后把需要的信息存进Cookie,用Session是肯定不行的。然后下次打开页面的时候去取相对应的Cookie来判断是否已经登陆。并且要把Cookie的过期时间设置的尽量长,比如登陆的时候有个复选框是一个星期之内自动登陆,如果选中,就设置Cookie的过期时间为7天,否则关闭浏览器时Cookie自动失效。


以下是Cookie的存取操作方法

C# code

/// </summary> 
    /// <param name="CookieName">Cookie名称</param> 
    /// <param name="CookieValue">Cookie值</param> 
    /// <param name="CookieTime">Cookie过期时间(小时),0为关闭页面失效</param> 
    public static void SaveCookie(string CookieName, string CookieValue, double CookieTime)
    {
        HttpCookie myCookie = new HttpCookie(CookieName);
        DateTime now = DateTime.Now;
        myCookie.Value = CookieValue;
        //myCookie.Values = new NameValueCollection();
        //NameValueCollection m = new NameValueCollection();        
        if (CookieTime != 0)
        {
            //第一方法设置Cookie时间的话,关闭浏览器不会自动清除Cookie 
            
            myCookie.Expires = now.AddDays(CookieTime);
            if (HttpContext.Current.Response.Cookies[CookieName] != null)
                HttpContext.Current.Response.Cookies.Remove(CookieName);
            HttpContext.Current.Response.Cookies.Add(myCookie);
        }
        else
        {
            if (HttpContext.Current.Response.Cookies[CookieName] != null)
                HttpContext.Current.Response.Cookies.Remove(CookieName);
            HttpContext.Current.Response.Cookies.Add(myCookie);
        }
    }
    /// <summary> 
    /// 取得CookieValue 
    /// </summary> 
    /// <param name="CookieName">Cookie名称</param> 
    /// <returns>Cookie的值</returns> 
    public static string GetCookie(string CookieName)
    {
        HttpCookie myCookie = new HttpCookie(CookieName);
        myCookie = HttpContext.Current.Request.Cookies[CookieName];
        if (myCookie != null)
            return myCookie.Value;
        else
            return null;
    }