用戶登錄之asp.net cookie的寫入、讀取與操作


頁面前面:

<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頁面
            }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM