頁面前面:
<div id="login" runat="server"> <span class="log_title">賬號(昵稱):</span><input class="log_input" runat="server" id="t_LogName" name="t_LogName" type="text" placeholder="請輸入賬號(昵稱)" /> <span class="log_title">密碼:</span><input class="log_input" runat="server" id="t_LogPass" name="t_LogPass" type="password" placeholder="請輸入密碼" /> <asp:Button ID="Button1" runat="server" Text="登陸" OnClick="Button1_Click" CssClass="button" EnableTheming="False" /> <asp:Button ID="Button2" runat="server" CssClass="button" Text="注冊" PostBackUrl="~/regist.aspx"></asp:Button> </div> <div id="logstate" runat="server" visible="false">歡迎您:<span><asp:Literal ID="uesrName" runat="server"></asp:Literal></span><a runat="server" onserverclick="out_click">退出</a></div>
要引入的樣式:
#login { top:0; left: 0; width:580px;height:25px;background:pink;position: relative;float:left} .button { height: 25px;font-size: 14px; background-color: #0998ff; color: #FFF;padding:3px 12px 5px 12px;border: 0px; vertical-align: middle;margin-left:5px;float:left; } .button:hover{ background-color: #6699FF;color:#000;cursor:pointer } .log_input{background-color:#FFF; border:1px solid #d5cfc2;width:130px;height:23px; font-size:14px;vertical-align:middle;float:left} .log_title{width:90px; display:inline-block; text-align:right;line-height:25px; float:left;color:#FFF;} #Head_logstate {/*width:200px;*/height:25px;color:#FFF;font-size:14px;line-height: 25px;/*background:blue;*/float:left;position: relative;} #Head_logstate span { color:#f00;font-weight:800;margin-right:20px} #Head_logstate a {height:25px;font-size: 14px; background-color: #0998ff; color: #FFF;padding:0 12px 0 12px;border: 0px; vertical-align: middle;float:right} #Head_logstate a:hover{ background-color: #6699FF;color:#000;cursor:pointer }
說明一下,應該是我把這個放在控件Head里,所以引入頁面的時候,
logstate這個樣式找不到,后來,我就改是
#Head_logstate,才顯示正常,而在控件里div的樣式還是用的
<div id="logstate" runat="server" visible="false">....
控件的cs核心代碼:
protected string mynames; protected string myID; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { HttpCookie cookie = Request.Cookies["nickname"]; if (cookie != null) { mynames = cookie.Value; GetLogin(); } } }
protected void Button1_Click(object sender, EventArgs e) { string name = t_LogName.Value.Trim(); string pw = t_LogPass.Value.Trim(); if (name.IndexOf("'") > 0 || name.IndexOf("--") > 0) { HelperJS.Show(this.Page, "賬號(昵稱)存在非法字符!"); return; } if (name != string.Empty && pw != string.Empty) { //檢查用戶名密碼 DataTable dt = HelperExecuteSql.Query("select ID,nickname,pw from _user where nickname='" + name + "' and pw ='" + pw + "'").Tables[0]; if (dt.Rows.Count > 0) { myID = dt.Rows[0]["ID"].ToString(); //Session["nickname"] = name; //Session["ID"] = Convert.ToInt32(dt.Rows[0][0].ToString()); //uesrName.Text = dt.Rows[0]["nickname"].ToString(); if (Request["ReturnUrl"] == null || Request["ReturnUrl"] == "") { string nowtime = DateTime.Now.ToString(); //獲取當前時間 HttpCookie cookie = new HttpCookie("nickname", HttpUtility.UrlEncode(name));//獲取用戶的用戶名 cookie.Expires = DateTime.Now.AddHours(2);//設置cookie過期時間為2小時后 Response.Cookies.Add(cookie);//將cookie寫入客戶端 HttpCookie cookie1 = new HttpCookie("nowTime", nowtime); cookie1.Expires = DateTime.Now.AddHours(2);//設置cookie過期時間為2小時后 Response.Cookies.Add(cookie1);//將cookie1寫入客戶端 HttpCookie cookie2 = new HttpCookie("ID", myID);//獲取用戶的ID Response.Cookies.Add(cookie2);//將cookie2寫入客戶端 Response.Write(" <script language=javascript>window.location.href=document.URL;</script>"); //刷新 } else { Server.Transfer(Request["ReturnUrl"]); } } else { HelperJS.Show(this.Page, "用戶名或密碼不正確!"); } } else { HelperJS.Show(this.Page, "用戶名或密碼不能為空!"); } } protected void out_click(object sender, EventArgs e) //退出 { Response.Cookies["nickname"].Expires = DateTime.Now;//cookie將馬上過期 login.Visible = true; logstate.Visible = false; Response.Write(" <script language=javascript>window.location.href=document.URL;</script>"); //刷新 }

參考資料 http://www.cnblogs.com/sosoft/p/3547471.html
編寫Cookie
//方式1: Response.Cookies["username"].value="mike"; Response.Cookies["username"].Expires=DateTime.MaxValue; //方式2: HttpCookie acookie = new HttpCookie("last"); acookie.Value="a"; acookie..Expires=DateTime.MaxValue; Response.Cookies.Add(acookie); //多值Cookie的寫法 http://www.cnblogs.com/sosoft/ //方式1: Response.Cookies["userinfo1"]["name"].value="mike"; Response.Cookies["userinfo1"]["last"].value="a"; Response.Cookies["userinfo1"].Expires=DateTime.MaxValue; //方式2: HttpCookie cookie = new HttpCookie("userinfo1"); cookie.Values["name"]="mike"; cookie.Values["last"]="a"; cookie.Expires=DateTime.MaxValue; //cookie.Expires = System.DateTime.Now.AddDays(1);//設置過期時間 1天 Response.Cookies.Add(cookie);
讀取Cookie
If (Request.Cookies["userName"]!=null) { string str = Request.Cookies("userName").Value; } //多值Cookie的讀取 If ( Request.Cookies["userInfo1"]!=null ) { string name=Request.Cookies["userInfo1"]["name"]; string last=Request.Cookies["userInfo1"]["last"]; } //讀取 Cookie 集合 for(int i = 0 ;i<Request.Cookies.Count ;i++) { HttpCookie cookies = Request.Cookies; Response.Write("name="+cookies.Mame+"<br/>"); if (cookies.HasKeys )//是否有子鍵 { System.Collections.Specialized.NameValueCollection NameColl = aCookie.Values ; for(int j=0;j<NameColl.Count;j++) { Response.Write("子鍵名="+ NameColl.AllKey[j] +"<br/>"); Response.Write("子鍵值="+ NameColl[j] +"<br/>"); } } else { Response.Write("value="+cookies.Value+"<br/>"); } }
http://www.cnblogs.com/yinrq/p/5019448.html
ASP.NET對Cookie的CURD操作
//寫入Cookie三種方式 //方式1 var cookie = new HttpCookie("name", "joye888"); Response.Cookies.Add(cookie); //方式2 Response.Cookies["name1"].Value = "joye8881"; Response.Cookies["name1"].Expires = DateTime.MaxValue; //方式3 var acookie = new HttpCookie("name2"); acookie.Value = "joye8882"; acookie.Expires = DateTime.MaxValue; Response.Cookies.Add(acookie); //寫入多值Cookie //方式1: //Response.Cookies["userinfo"]["name"].Value = "joye888"; //Response.Cookies["userinfo"].Expires = DateTime.MaxValue; //方式2: HttpCookie cookie2 = new HttpCookie("userinfo"); cookie2.Values["name"] = "joye888"; cookie2.Expires = DateTime.Now.AddDays(1); Response.Cookies.Add(cookie2); //讀取Cookie的值之前,應該確保該 Cookie 確實存在。否則,您將得到一個異常 //讀取Cookie var httpCookie = Request.Cookies["name1"]; if (httpCookie != null) { var name = httpCookie.Value; } //多值Cookie的讀取 var httpCookie1 = Request.Cookies["userInfo"]; if (httpCookie1 != null) { var name1 = httpCookie1["name"]; } //修改和刪除cookie //修改的方法與創建方法相同 var cookieEdit = new HttpCookie("name", "joye888Edit"); cookieEdit.Expires = DateTime.Now.AddDays(-1); //將其有效期設置為過去的某個日期。當瀏覽器檢查 Cookie 的有效期時,就會刪除這個已過期的 Cookie。 Response.Cookies.Add(cookieEdit); //如果有主站及二級域名站且cookie要共享的話則要加入如下設置 cookie.Domain = ".cnblog.com"; cookie.Path = "/"; public static void AddCookie(string key,string value,int expires) { var acookie = new HttpCookie(key); acookie.Value = value; acookie.Domain = ".cnblog.com"; acookie.Path = "/"; acookie.Expires = DateTime.Now.AddMinutes(expires); HttpContext.Current.Response.Cookies.Add(acookie); } public static string GetCookie(string key) { var httpCookie = HttpContext.Current.Request.Cookies[key]; if (httpCookie != null) { return httpCookie.Value; } return ""; }
登錄記住用戶名和密碼示例
<body> <form id="form1" method="post" action="rembPage.aspx"> <div> 帳號: <input type="text" name="userName" /><br /> 密碼 :<input type="password" name="pass" /><br /> 記住我: <input type="checkbox" value="rem" name="sele1" /><br /> <input type="submit" value=" 登錄 " /> </div> </form> </body> if (Request.Cookies["userName"] == null && Request.Cookies["passWord"] == null) //判斷是否存在cookie,如果存在表示上次選擇了記住我 { if (Request.Form["userName"] != null && Request.Form["pass"] != null) { String userName = Request.Form["userName"]; String userPassWord = Request.Form["pass"]; if (userName == "admin" && userPassWord == "123") { if (Request.Form["sele1"] != null) { HttpCookie cookieUserName = new HttpCookie("userName", userName); //創建帳號的cookie實例 HttpCookie cookiePassWord = new HttpCookie("passWord", userPassWord); cookieUserName.Expires = DateTime.Now.AddDays(2); //設置帳號cookie的過期時間,當前時間算往后推兩天 cookiePassWord.Expires = new DateTime(2012, 5, 27); //設置密碼cookie的過期時間,過期時間為2012年5月27日 Response.Cookies.Add(cookieUserName); //將創建的cookieUserName文件輸入到瀏覽器端 Response.Cookies.Add(cookiePassWord); Response.Redirect("Index.aspx"); //跳轉到你想要的頁面 } else { Response.Redirect("Index.aspx");//即便不記住密碼也要跳轉 } } } } else { Response.Redirect("Index.aspx");//如果記住密碼,第二次登錄將直接進入Index.aspx頁面 }