Cookie的使用与实现记住用户名案例

it2025-04-06  9

转载 :http://www.cnblogs.com/genesis/p/4677679.html

 

学习web开发,使用Cookie是不可避免的,个人感觉Cookie的使用和ASP.NET中的Session非常像,只不过Cookie是保存在客户端,而Session是在服务器端,两者都以记录信息为目的,作为访问网站的凭据。Cookie其实就是一些保存在客户端的小文件,为下次访问网站时保存一些信息,比如:是否登录。Cookie的最大优点就是使用简单,传递、管理、维护都由浏览器完成;缺点是不安全、大小有限制、受浏览器安全性设置限制。刚刚提到Cookie实际上是一些小文件,这些文件肯定是用来存储信息的,那么这些小文件在哪里呢?这要分情况而言,如果服务器建立的是非持久性Cookie,那么这些文件保存在浏览器的内存中,一旦完全关闭浏览器,Cookie便失效了;如果服务器建立的是持久性Cookie,那么这些文件就被存放在:C:\你的用户名\Default\AppData\Roaming\Microsoft\Windows\Cookies,直接把正确的路径复制到资源管理器地址栏回车访问即可,不要手动寻找,那样是找不到的(即使显示了隐藏文件,也找不到Cookies文件夹),这些Cookie文件以文本文档的形式存储在这里,所以安全性就可想而知了。在程序中,如果我们设置Cookie的有效时间,则此Cookie就是持久性Cookie,如果不设置,默认的就是非持久性Cookie。

asp.net中Cookie的用法HttpCookie cookie = new HttpCookie["Test"];//创建cookiecookie.Value = "admin";//设置cookie值cookie.Expires = DateTime.Now.AddDays(7);//设置cookie值保存天数//将cookie值写到浏览器中,有两种方法Response.AppendCookie(cookie);context.Response.SetCookie(cookie);

取出Cookie值也很简单HttpCookie cookie = Request.Cookies["Test"];string cookieValue;cookieValue = cookie.Value;

在一个Cookie中储存多个信息,那也没有问题HttpCookie cookie = new HttpCookie("Test");cookie.Values.Add("aaa","111");cookie.Values.Add("bbb","222");cookie.Values.Add("ccc","333");Response.AppendCookie(cookie);

取出信息也一样简单HttpCookie cookie = Request.Cookies["Test"];value1 = cookies.Values["aaa"];value2 = cookies.Values["bbb"];

Request.Cookies.Clear()这个方法并不是删除Cookie 删除 Cookie(即从用户的硬盘中物理移除 Cookie)是修改 Cookie 的一种形式。 由于 Cookie 在用户的计算机中,因此无法将其直接移除。 但是,可以让浏览器来为您删除 Cookie。 该技术是创建一个与要删除的 Cookie 同名的新 Cookie, 并将该 Cookie 的到期日期设置为早于当前日期的某个日期。 当浏览器检查 Cookie 的到期日期时,浏览器便会丢弃这个现已过期的 Cookie。 下面的代码示例演示删除应用程序中所有可用 Cookie 的一种方法:

CODE:HttpCookie aCookie;string cookieName;int limit = context.Request.Cookies.Count;for (int i = 0; i < limit; i++){  cookieName = context.Request.Cookies[i].Name;  aCookie = new HttpCookie(cookieName);  aCookie.Expires = DateTime.Now.AddDays(-1);  context.Response.Cookies.Add(aCookie);}

cookies过期时间Response.Cookies("user_name").Expires=Date+1 ’指定cookie保存时间

保留COOKIES一个小时 Response.Cookies("MyCookie").Expires= (now()+1/24) Response.Cookies("MyCookie").Expires = DateAdd("h", 1, Now())

Response.Cookies("CookieName").Expires=DateAdd("m",60,now()) 设置60个月以后过期

Response.Cookies("User").expires=second()+7 在expires后面定义的时间可以用时间函数代替 例如:date()+7就表示在今天的时间上加上7天,而second()+7则是7秒了。

Response.Cookies("字段名").expires=时间函数+N,例如: Response.Cookies("name2").expires=date+1,表示Cookies保存1天,再比如: Response.Cookies("name2").expires=Hour+8,表示Cookies保存8小时。 这种方法我测试过不行(在2003server,iis6.0中),不管second后面有无加(),访问时会出现500错误(还是无法显示网页?忘了)。

织梦尤文:这里的时间累加建议还是使用DateAdd函数,比如我们要累加一小时,则使用: Response.Cookies("baidooglecom").expires = DateAdd("h", 1, Now())

30分钟: Response.Cookies("CookieName").Expires=DateAdd("n",30,now()) dateadd("S",30,now()) 得到秒

Expires 指定 cookie 的过期日期。为了在会话结束后将 cookie 存储在客户端磁盘上,或在许多时候,我们希望能更长时间地在访问者的计算机上保存cookie。必须设置该日期。 若此项属性的设置未超过当前日期,则在任务结束后 cookie 将到期。 cookie的使用到期时间为“2010年1月1日”: Response.Cookies("CookieName").Expires=#January 01, 2010# cookie的过期时间为“cookie的创建时间+365天”:Response.Cookies("CookieName").Expires=Date+365 推荐的 但最好不要随便写 Response.Cookies("CookieName").Expires=Date,这样页面之间的调用时值会为空。

 

实现记住用户名案例:

html文件:

<form action="Login.ashx" method="post"> 用户名:<input type="text" name="name" value="@name" /> 密码:<input type="password" name="password" value="" /> <input type="submit" name="btnOK" value="提交" /> </form>

ashx文件:

context.Response.ContentType = "text/html"; string html = CommonHelper.ReadHtml("~/Login.html"); string btnLogin = context.Request["btnOK"]; if (string.IsNullOrEmpty(btnLogin))//判断按钮是否点击了 { //如果没有点击按钮,尝试获取浏览器的cookie值 HttpCookie cookLastName = context.Request.Cookies["cookLastName"]; if (cookLastName != null) { //如果浏览器有cookie值,就将cookie值替换成html中的用户名 html = html.Replace("@name", cookLastName.Value); } else { html = html.Replace("@name", "");//否则替换成空 } context.Response.Write(html);//输出html页面 } else { //创建cookie HttpCookie cookLastName = new HttpCookie("cookLastName"); string name = context.Request["name"]; //设置cookie值 cookLastName.Value = name; //设置cookie值保存天数 cookLastName.Expires = DateTime.Now.AddDays(7); //将cookie值写到浏览器中 context.Response.SetCookie(cookLastName); context.Response.Redirect("Test1.ashx"); }

 

转载于:https://www.cnblogs.com/lhlong/p/5945608.html

相关资源:数据结构—成绩单生成器
最新回复(0)