آشنایی با Cookie در Asp.Net

در این مقاله سعی در توضیح Cookie داریم .یکی از حافظه های موقتی که می توانیم اطلاعات را در سمت کاربر ذخیره کنیم کوکی می باشد , همچنین با ذکر مثال سعی شده تا درک بهتری از کوکی داشته باشیم

آشنایی با Cookie در Asp.Net

کوکی قسمتی از اطلاعات در فرم میباشد که یک فایل متن کوچک را میتوان در آن ذخیره کرد. این اطلاعات در حافظه کاربر ذخیره میشود .این عملیات توسط صفحات وب در سمت سرور انجام می پذیرد .همچنین کاربران میتوانند کوکی را تغییر دهند .بنابراین هرگز مقادیری از قبیل : نام کاربری , رمز عبور , آدرس ایمیل , شماره را در کوکی ذخیره نکنید .بنابراین ما میتوانیم حد اقل 300 کوکی را در هر وب سایت ثبت کنیم و حد اقل 4096 بایت حجم در هر کوکی ذخیره کنیم .اکنون به نجوه ایجاد کوکی می پردازیم :برای این کار سه روش در اختیار داریم

روش اول :
    HttpCookie Cookies1 = new HttpCookie("Cookies1");  
    Cookies1.Value = txt1.Text;  
    Response.Cookies.Add(Cookies1);  

روش دوم :

Response.Cookies["Cookies1"].Value = txt1.Text;  

روش سوم :

    Response.Cookies["Cookies"]["Name"] = txt1.Text;  
    Response.Cookies["Cookies"]["class"] = txt2.Text; Response.Cookies["Cookies"]["sec"] = txt3.Text;  
    Response.Cookies["Cookies"]["Roll"] = txt4.Text;  

چگونه به مقادیر کوکی دسترسی داشته باشیم ؟ در ادامه نیز دو روش برای دستیابی به مقادیر کوکی وجو دارد

روش اول :

String cooks=Request.Cookies[“Cookies”].Value;  

روش دوم برای دستیابی به کوکی میباشد که در خود چندین مقدار را ذخیره کرده است :

    String name=Request.Cookies["Cookies"]["Name"];  
    String class=Request.Cookies["Cookies"]["class"];  
    String sec=Request.Cookies["Cookies"]["sec"];  
    Int roll= String name=Request.Cookies["Cookies"]["roll"];  

نحوه حذف مقادیر کوکی مطابق دستور زیر میباشد :

    Response.Cookies["Cookies1"].Expires = DateTime.Now.AddHours(-1);   

در ابتدا یک صفحه با نام CreateCookie.aspx را ایجاد می کنید


    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CreateCookies.aspx.cs" Inherits="CreateCookies" %>  
      
    <!DOCTYPE html>  
      
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head runat="server">  
        <title></title>  
    </head>  
    <body>  
        <form id="form1" runat="server">  
        <div>  
        <b>Pleas enter your Name:</b>  
        <br /><br />  
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>  
        <br /><br />  
            <asp:Button ID="Button1" runat="server" Text="Submit" onclick="Button1_Click1"/>  
      
        </div>  
        </form>  
    </body>  
    </html>  

در قسمت کد نویسی دستورات زیر را وارد می کنیم :


    using System;  
    using System.Collections.Generic;  
    using System.Web;  
    using System.Web.UI;  
    using System.Web.UI.WebControls;  
    using System.Threading;  
      
    public partial class CreateCookies : System.Web.UI.Page  
    {  
        protected void Page_Load(object sender, EventArgs e)  
        {  
      
        }  
      
      
        protected void Button1_Click1(object sender, EventArgs e)  
        {  
      
            //First Way  
            HttpCookie Cookies1 = new HttpCookie("Cookies1");  
            Cookies1.Value = TextBox1.Text;  
            Cookies1.Expires = DateTime.Now.AddHours(1);  
            Response.Cookies.Add(Cookies1);  
      
      
              
          //  Second Way  
            Response.Cookies["Cookies2"].Value = TextBox1.Text;  
            Response.Cookies["Cookies2"].Expires = DateTime.Now.AddHours(1);  
              
      
              
          //  Multiple values in single cookie  
            Response.Cookies["Cookies3"]["name"] = "AAFIA";  
            Response.Cookies["Cookies3"]["class"] = "class-ix";  
            Response.Cookies["Cookies3"]["sec"] = "A";  
            Response.Cookies["Cookies3"]["roll"] = "4";  
              
            Response.Cookies["Cookies3"].Expires = DateTime.Now.AddDays(1);  
              
      
            Response.Redirect("ResultCookis.aspx");  
        }  
    }  

سپس مقادیری که در کوکی ثبت شده است را در صفحه ای دیگر فراخوانی میکنیم :


    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ResultCookis.aspx.cs" Inherits="ResultCookis" %>  
      
    <!DOCTYPE html>  
      
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head runat="server">  
        <title></title>  
    </head>  
    <body>  
        <form id="form1" runat="server">  
       <div>  
            <b>Now See Cookies Data Here: </b>  
            <br /><br />  
           first way <br />  
           <asp:Label ID="Label1" runat="server" Text=""></asp:Label>  <br />     
           second way <br />  
           <asp:Label ID="Label2" runat="server" Text=""></asp:Label>  <br />  
           multiple Value in  single Cookies <br />  
           <asp:Label ID="Label3" runat="server" Text=""></asp:Label>          
           <asp:Label ID="Label4" runat="server" Text=""></asp:Label>       
           <asp:Label ID="Label5" runat="server" Text=""></asp:Label>       
           <asp:Label ID="Label6" runat="server" Text=""></asp:Label>       
           <asp:Label ID="Label7" runat="server" Text=""></asp:Label>   
        </div>  
        <br /><br />  
        <asp:Button ID="Button1" runat="server" Text="Delete All Cookies"   
            onclick="Button1_Click" />  
        <br /><br />  
        </form>  
    </body>  
    </html>  

دستورات فراخوانی مقادیر کوکی نیز به ترتیب زیر میباشد :


    using System;  
    using System.Collections.Generic;  
    using System.Web;  
    using System.Web.UI;  
    using System.Web.UI.WebControls;  
    using System.Data;  
    using System.Web.Configuration;  
    using System.Data.SqlClient;  
      
      
    public partial class ResultCookis : System.Web.UI.Page  
    {  
        protected void Page_Load(object sender, EventArgs e)  
        {  
            if (Request.Cookies["Cookies1"] != null)  
            {  
      
                string txtbox = Request.Cookies["Cookies1"].Value; //For First Way  
                Label1.Text = txtbox.ToString();  
      
                //for 2nd Cookie  
      
                string txtbox2 = Request.Cookies["Cookies2"].Value;  
                Label2.Text = txtbox2.ToString();  
                  
                //For Multiple values in single cookie  
      
      
                Label3.Text = Request.Cookies["Cookies3"]["name"];  
                Label4.Text = Request.Cookies["Cookies3"]["class"];  
                Label5.Text = Request.Cookies["Cookies3"]["sec"];  
                Label6.Text = Request.Cookies["Cookies3"]["roll"];  
      
            }  
            else  
            {  
                string msg = "No Cookies";  
                Label7.Text = msg;  
            }  
        }  
      
        protected void Button1_Click(object sender, EventArgs e)  
        {  
            if (Request.Cookies["Cookies1"] != null)  
            {  
                Response.Cookies["Cookies1"].Expires = DateTime.Now.AddHours(-1);  
                
            }  
            if (Request.Cookies["Cookies2"] != null)  
            {  
                Response.Cookies["Cookies2"].Expires = DateTime.Now.AddHours(-1);  
                
            }  
            if (Request.Cookies["Cookies3"] != null)  
            {  
                Response.Cookies["Cookies3"].Expires = DateTime.Now.AddDays(-1);  
                
            }  
            Response.Redirect("ResultCookis.aspx");  //to refresh the page  
        }  
    }  

در ادامه مقادیر ثبت شده در کوکی را در صفحه ای دیگر می توانیم مشاهده کنیم .

 

فایل های ضمیمه