大家,做个这个东东没......
需求是这样的,首先在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; }