Aspnet MVC de istemci(client) tabanlı durumlarda kullandığımız cookie (çerezi) bu yazımızda örneklerle anlatmaya çalışacağım.
Terimleri kısaca tanımlayı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 olucak
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.
Sayfamızın ilk açıldığındaki ekran görüntüsü (arkaplanda cookiemiz oluşuyor)..
Sayfamızı tekrar ziyaret ettiğimizdeki ekran görüntüsü