"Asp.net MVC de istemci(client) tabanlı durumlarda kullandığımız cookie (çerezi) bu yazımızda örneklerle anlatmaya çalışalım. İstemci(client) nedir? -Web sayfamızı ziyaret eden kişinin -kullanıcının- cihazıdır."
Çerez(cookie) nedir?
-Önceki yazımızda sessiondan bahsetmiştik session bilgileri sunucu üzerinde tutuyordu. Çerezde session tam tersi olarak istemci tarafında metin dosyasında tutar. Eğer metin dosyası silinmediği -ya da süresi bitmediği- sürece kullanıcı siteyi her ziyaret edişinde cookie (çerez) okuyabiliriz.
Aspnet MVC Cookie Kullanımına göz atalım.
Cookie Oluşturma
HttpCookie() 2 overloadu vardır;
1) -string name;
2) -string name, string value;
HttpCookie cookie= new HttpCookie("Cookiemizin Adı","Cookiemizin Değeri");
Cookiemize yaşam süresi vermek istiyorsak Expires propertysini kullanıyoruz.
cookie.Expries = DateTime.Now.AddDays(1);
cookiemizin yaşam süresini belirlemiş olduk bir gün sonra cookiemiz silinecektir.
Response.Cookies.Add(cookie);
Cookiemizi eklemiş -oluşturmuş- oluyoruz.
Cookie Silme oluşturmuş olduğumuz cookiemizin adını vererek siliyoruz.
Request.Cookies.Remove("Cookiemizin Adı");
Başka bir silme yöntemi ise oluşturmuş olduğumuz cookiemize yaşam süresi vererek.
cookie.Expries = DateTime.Now.AddDays(-1);
diyerek cookimizide silebiliyoruz.
Cookiedeki Değeri Okuma
Request.Cookies["Cookiemizin Adı"].Value;
Diyerek cookiemizin değerini okuyabiliriz.
Cookie Varlığını Kontrol Etme
Oluşturduğumuz cookie varlığını kontrol etmek istediğimizde;
Request.Cookies["Cookiemizin Adı"] == null ? "Cookiemiz yok": "Cookiemiz var ";
kısa if ile (Ternary opertor) cookiemizi kontroll etmiş olduk buradaki kriterimiz cookie == null mı ?
Basit bir örnek yapacak olursak...
Ziyaretcinin daha önce x sayfalarımıza giriş yapıp yapmadığını kontrol ediceğimiz cookie örneği yapalım..
HomeControllerımızı açıp şu kodları yazıyoruz.
private void CreateCookie(string name, string value) { HttpCookie cookieVisitor = new HttpCookie(name, value); // cookieVisitor.Expires = DateTime.Now.AddDays(2); Response.Cookies.Add(cookieVisitor); } private string GetCookie(string name) { //Böyle bir cookie mevcut mu kontrol ediyoruz if (Request.Cookies.AllKeys.Contains(name)) { //böyle bir cookie varsa bize geri değeri döndürsün return Request.Cookies[name].Value; } return null; } private void DeleteCookie(string name) { //Böyle bir cookie var mı kontrol ediyoruz if (GetCookie(name) != null) { //Varsa cookiemizi temizliyoruz Response.Cookies.Remove(name); //ya da Response.Cookies[name].Expires = DateTime.Now.AddDays(-1); } }
Yine HomeControllerımızda sayfalarımızın actionlarını oluşturalım Index ve About sayfalarımız olacak.
public ActionResult Index() { //Bulunduğumuz sayfanının actionname ni alıyoruz string actionName = this.ControllerContext.RouteData.Values["action"].ToString(); //böyle bir cookiemiz var mı diye soruyoruz if (GetCookie(actionName) == null) { //yoksa yeni bir cookie oluştuyoruz CreateCookie(actionName, "visitor"); } else { //Ekranda görünmesini sitediğimiz mesajımız ViewBag.Message = "Sen daha önce bu sayfayı ziyaret etmişsin :) Tekrar Ziyaretiniz için teşekkür ederiz."; } return View(); } public ActionResult About() { //Bulunduğumuz sayfanının actionname ni alıyoruz string actionName = this.ControllerContext.RouteData.Values["action"].ToString(); //böyle bir cookiemiz var mı diye soruyoruz if (GetCookie(actionName) == null) { //yoksa yeni bir cookie oluştuyoruz CreateCookie(actionName, "visitor"); }else { //Ekranda görünmesini sitediğimiz mesajımız ViewBag.Message = "Sen daha önce bu sayfayı ziyaret etmişsin :)"; } return View(); }
HomeControllarımızda kodlarımızı yazdığımıza sayfamızı derleyip çalıştıralım.
İşte bu kadar. (arkaplanda cookiemiz oluşuyor).
Bir sonraki yazımızda görüşmek üzere