İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 8 Durum Yönetimi

Benzer belgeler
Web sayfalarında sayfa ile server arasındaki iletişim, HTTP protokolü ile gerçekleştirilir. Bu protokolde sunucuya gönderdiğimiz bilgiler, kendi

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

ASP.NET ile Bir Web Sitesi Oluşturma

Üst Düzey Programlama

State Yönetimi. Bir web sayfası ile sunucu arasındaki etkileşim ;

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 9 Tema Kullanımı

MASTER PAGE SAYFASI KULLANIMI

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

Response : Sunucunun istemciye veri yollamasını

PROGRAMLAMA DERSİ 1. İNTERNET

yeni_uye_kayit.ascx UserControl sayfamızda, kaydedilmek istenen üye eğer daha önce veritabanımızda kayıtlı ise bunu buldurup kullanıcıyı uyaralım;

Görsel Programlama (Visual Programming)

DURUM YÖNETİMİ (STATE MANAGEMENT) Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

REQUEST QUERY STRING. Sayfalar: default.aspx ve sorgu_sayfasi.aspx. default.aspx sayfası: sorgu_sayfasi.aspx sayfası:

24 Kasım 2011 / Perşembe

NECMETTİN ERBAKAN ÜNİVERSİTESİ E-POSTA YARDIM BELGESİ

DURUM YÖNETİMİ (STATE MANAGEMENT) Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

WEB FORMLARI. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

VET ON KULLANIM KLAVUZU

Üst Düzey Programlama

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Bu gün dersimizde değişik web kontrollerinin kullanımını gösteren birkaç web sitesi hazırlayacağız. Önce Visual Studio 2005 i açalım.

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

WEB KULLANICI KONTROLLERİ ve ANASAYFA KULLANMA(Master Page)

1. Mutabakat.zip dosyası açılır. 2. Mutabakat klasörü içindeki Mutabakat.exe dosyası çalıştırılır.

HESAP MAKİNASI YAPIMI

User Control : Standart bir kullanıcı arabirimi oluşturarak; bir uygulama içinde birden fazla. Siteye User Control Eklemek : 22 Mart 2012 / Perşembe

Üst Düzey Programlama

Şekil 2.1. Bu bölümde ASP.Net platformumuzu açtığımızda Toolbox penceresindeki Standart bölümündeki kontrollerden bahsedeceğiz.(şekil 2.2) Şekil 2.

Programlama Yazılımı ile Web Sitesi Oluşturma

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

ÇANKIRI KARATEKİN ÜNİVERSİTESİ ZİMBRA E-POSTA SİSTEMİ KULLANICI DOKÜMANI

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

SESSİON KULLANIMI. .Aşağıdaki Kodları da SessionDevam.asp adıyla kaydedelim. Language=VBScript Codepage="1254"%>

SAYFALAR ARASI LİNK VERME VE BİLGİ TAŞIMA YÖNTEMLERİ

Yandex mail ve disk kullanım rehberi

Üst Düzey Programlama

Çözüm :RadioButtonList1 kontrolunuekliyoruz.enableautopostback iaktifleştiriyoruz..

Oluşturmak istediğimiz OU ye bir isim veriyoruz. Name kısmına ISTANBUL yazıyoruz,

Cookie s. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 17 Ara 2013

GEÇERLİLİK KONTROLLERİ VALİDATİON CONTROLS. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK

ORT3167 İnternet Programcılığı 1 Ders1-2. Öğr. Grv. Aybike ŞİMŞEK

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1

UZAKTAN EĞİTİM MERKEZİ

Basit bir web uygulaması

Nevşehir Hacı Bektaş Veli Üniversitesi. Moodle Uzaktan Eğitim Sistemi. Öğretim Elemanı Bilgilendirme Kılavuzu

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Görsel Programlama (Visual Programming) 2.Hafta

Öğr. Gör. Serkan AKSU 1

KAMPÜS DIŞINDAN PROXY (VEKİL) AYARLARI İLE KAMPÜS AĞINA BAĞLANMAK

ÇEREZ POLİTİKASI Reşit Olmayanlar II. Çerez Nedir ve Hangi Amaçlarla Kullanılır?

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Nevşehir Hacı Bektaş Veli Üniversitesi Moodle Uzaktan Eğitim Sistemi Öğretim Elemanı Bilgilendirme Kılavuzu

BİLİŞİM TEKNOLOJİLERİ

VKV Koç Özel İlkokulu, Ortaokulu ve Lisesi. K12Net Veli Yardım Kılavuzu

Daha önce bu işlemin iki tane dosya oluşturduğunu gördük. GecDenTest.aspx dosyasının source kısmında içeriğini inceleyecek olursanız en başta

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

DetailsView. DetailsView kontrolünün GridView kontrolüyle paralel şekilde kullanımı ile ilgili örnek

Kullanım Kılavuzu Milli Eğitim Bakanlığı 2010

Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları

BATMAN ÜNİVERSİTESİ KÜTÜPHANE VERİTABANLARINA KAMPÜS DIŞINDAN ERİŞİM REHBERİ

NOT: VERİTABANINDAKİ TABLOLARI OLUŞTURMAYI DA UNUTMAYACAĞIZ.

Masa üstünde vt34.mdb dosyası var, onu projemize eklemek için, App_Data ya sağ tıkla Add Existing Item vt34.mdb adlı dosyayı seç Add

İNTERNET TABANLI PROGRAMLAMA- 8.ders VERİTABANI İLE İLGİLİ BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME

C# ile NJ Simulatöre Bağlanmak

SQL Uyarı Programı Kurulum ve Kullanımı

YEDEKLEME PROGRAMI KURULUM VE KULLANIMI

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

MVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute IActionFilter

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

LIBPXY SERVİSİNİN KULLANIMI

YZM 2105 Nesneye Yönelik Programlama

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

KULLANIM KILAVUZU. VSP Teknoloji ile sıfır hatada Dünya standartlarında web kalite politikasına uygun web sitesi oluşturabileceksiniz

Office 365. Kullanım Kılavuzu. Öğrenci

ecyber Kullanıcı Kılavuzu 1 / 1 1. ecyber hakkında Sistem gereksinimleri:... 2 Donanım:... 2 Yazılım: Kullanım Rehberi...

2) Hesabınıza Giriş yaptıktan sonra aşağıdaki ekran karşınıza gelir.

Medula Eczane Stok Bilgileri Web Servisleri Kullanım Kılavuzu

SAÜ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ ORTAK BİLGİSAYAR DERSLERİ KOORDİNATÖRLÜĞÜ HAFTA 1 İÇERİĞİNE AİT UYGULAMA FÖYÜ

MOBİL UYGULAMA GELİŞTİRME

Doktor Web Tasarım ile sıfır hatada Dünya standartlarında web kalite politikasına uygun web sitesi oluşturabileceksiniz

AKINSOFT OtoPark. Yardım Dosyası

Dokuz Eylül Üniversitesi Bilimsel Araştırma Projeleri Koordinasyon Birimi SATIN ALMA TALEBİ NASIL YAPILIR?

ÇANKAYA ÜNİVERSİTESİ WEBMAIL KULLANIM KLAVUZU

YZM 3215 İleri Web Programlama

EndNote Web Hızlı Başvuru kartı

İnternet ve ağ kavramlarını tanımlamak. İnternet in nasıl çalıştığını açıklamak. Elektronik posta ve sohbet kavramlarını açıklamak.

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

MEB (K12) e-posta Sistemi Kullanımı

İNTERNET VE BİLGİSAYAR AĞLARI

HSancak Nesne Tabanlı Programlama I Ders Notları

w w w. e - t o p l u s m s. c o m

CELAL BAYAR ÜNİVERSİTESİ KÜTÜPHANE VERİTABANLARINA ÜNİVERSİTE DIŞINDAN ERİŞİM

ORDU ÜNİVERSİTESİ E-POSTA KULLANIM ÖZELLİKLERİ

Transkript:

İNTERNET PROGRAMLAMA 2 A S P. N E T Marmara Teknik Bilimler MYO / Hafta 8 Durum Yönetimi

DURUM YÖNETİMİ Web sayfaları kullanılırken istemci ve sunucu arasındaki bilgi alış verişi HTTP protokolü aracılığıyla gerçekleştirilmektedir. Geleneksel web programlamada, istemci ile sunucu arasındaki gerçekleşen bilgi alış verişinde, istemciden sunucuya iletilen bilgiler kalıcı değildir ve tekrar erişilemez. Bilgiler kullanıldıktan sonra sunucu belleğinden kaldırılır. Geleneksel web programlamada bu sınırlamayı aşmak için ASP.NET içerisinde istemci bilgilerine tekrar ulaşılabilmesi, bu bilgilerin saklanması ve taşınması için bazı yapılar oluşturulmuştur. Web uygulamalarında veriler için durum yönetimi sağlayarak verilerin sunucu ya da istemci tarafından saklanmasını sağlayan yapılara Durum Yönetimi Nesneleri adı verilmektedir. 2

DURUM YÖNETİMİ NESNELERİ Sorgulama Cümlesi (Query String) Görünüm Durumu Yönetimi (View State Management) Çerezler (Cookies) Oturum Yönetimi (Session Management) Uygulama Durum Yönetimi (Application State Management) 3

SORGULAMA CÜMLESİ (QUERYSTRİNG) QueryString nesnesi ile sayfalar arasında taşınacak veri direk olarak URL aracılığıyla taşınır. Taşınacak olan veriler sayfanın adresinden sonra Soru İşareti (?) başlayan kısımda taşınır. Bu yöntem hem kullanım kolaylığı hem de sunucuya getirdiği yükün az olması nedeniyle çokça tercih edilmektedir. QueryString ile taşınan veriler kullanıcılar tarafından görüntülenebilmektedir. Bu durum güvenlik açığı oluşturmaktadır. Veriler şifreli gönderilse bile şifreli metinler kullanıcılar tarafından görülmesi güvenlik açığını % 100 ortadan kaldırmamaktadır. Bu nedenle QueryString ile güvenliği önemli bilgiler taşınmamalıdır QueryString ile gelen veriyi okumak için Request.QueryString metodu kullanılır. Request.QueryString[ indexno veya parametreadi ] Köşeli parantezler içine taşınan bilginin parametre adı yazılacak ise tırnak içine alınarak yazılır. İndex numarası kullanılacak ise ilk elemanın numarasının sıfırdan başlayacağı unutulmamalıdır. Request.QueryString["bilgi"]; Request.QueryString[0]; 4

ÖRNEK 1 qs1.aspx sayfasına yazılan verinin QueryString kullanılarak qs2.aspx sayfasında görüntülenmesini sağlayanız. qs1.aspx sayfasını oluşturarak; sayfaya Veri girişi için 1 TextBox Veriyi göndermek için 1 Button ekleyiniz. 5

ÖRNEK 1 Sayfadaki butonun click olayına gerekli kodu yazınız. qs2.aspx sayfasını oluşturarak gönderilen kodun okunması için gerekli kodu page load olayına yazınız. 6

ÖRNEK 1 Uygulamayı çalıştırınız. qs1.aspx sayfasında yazılan verinin adres çubuğuna eklendiğini göreceksiniz 7

GÖRÜNÜM DURUMU YÖNETİMİ ViewState Nedir? Asp.Net ile hazırlanan web uygulamalarında, sayfadaki bilgiler ile işlem yapmak gerektiğinde, sayfa mutlaka sunucuya gönderilip, tekrar geri gelmektedir. Sayfanın sunucuya gidip, işlemler yapıldıktan sonra geri gelmesine PostBack denir. PostBack sırasında, yani sayfa sunucuya gidip geri gelirken, sayfadaki kontrollere kullanıcı tarafından girilmiş olan verilerin silinmesi büyük sorun teşkil edecektir. ASP.NET te form düzeyinde verileri saklamak için kullanılan ViewState nesnesi, sayfa içindeki kontrol özelliklerini ve geliştiricilerin istediği verileri saklar. Bu veriler PostBack işlemi gerçekleştiğinde şifrelenmiş bir şekilde ViewState içerisine yazılır. Sayfa tekrar yüklendiğinde kontrol özellikleri ViewState nesnesinden okunur. 8

GÖRÜNÜM DURUMU YÖNETİMİ ViewState nesnesi ile bir kontroldeki veri aktarılması için kontrolün EnableViewState özelliğinin True olarak ayarlanması gerekmektedir. Varsayılan olarak bu özellik True değerdedir. Kontrollerin sadece Text özelliği değil tüm özellikleri (Widht, Height vb.) ViewState nesnesi ile taşınmaktadır. EnableViewState Özelliği Bazı durumlarda kontrollerdeki verilerin sunucuya taşınması istenmeyebilir. Bu durumda ilgili kontrolün EnableViewState özelliği False yapılır. 9

GÖRÜNÜM DURUMU YÖNETİMİ ViewState İçerisine Veri Ekleme ve Okuma Önceki konuda ViewState nesnesinden bahsetmiştik. ViewState içerisine kendimiz veri eklemek istersek bunu 2 yol ile gerçekleştirebiliriz. ya da şeklinde yapılabilir. ViewState.Add("ParametreAdı", "değer"); ViewState["ParametreAdı"]=değer; ViewState içerisindeki bilgi de aynı şekilde okunabilir: string a = ViewState["a"].ToString(); ViewState içerisinde saklanan verilerin türü Object'tir. ViewState ile saklanan bilgiler sadece o sayfa için geçerli olacaktır. Sayfa değiştiği anda kaybolur. 10

ÖRNEK 2 vs.aspx adında bir sayfa oluşturarak, sayfaya 1 textbox, 1 buton, 1 listbox ekleyiniz. Butona basıldığı zaman textboxt ta yazılı metni listboxt a ekleyecek kodları yazınız Lixbox nesnesinin EnableVievState özelliğini TRUE / FALSE yaparak iki durumdaki çalışma farklarını gözlemleyiniz. 11

ÖRNEK 2 Buton nesnesinin click özelliğine gerekli kod yazılır. ListBox nesnesinin EnableVievState özelliği değiştirilerek program 2 farklı durumda da test edilir. 12

ÇEREZLER (COOKIES) Bazı kaynaklarda, HTTP Cookie, Web Cookie, Browser Cookie, Session Cookie olarak da karşımıza çıkan COOKIE'ler (çerezler), internet sitelerinin bilgisayarımıza kaydettiği küçük metin dosyalarıdır. Genel kullanım amacı, siteye gelen ziyaretçileri, bir sonraki ziyaretlerinde hatırlamaktır. Pratikte çerezler, web server tarafından tarayıcıya gönderilen ve istemci bilgisayarda kaydedilen ufak metin dosyalarıdır. Çerezler, kullanıcı kimlik doğrulama ve tanımlama, kullanıcı tercihleri, alışveriş sepeti, vb. bilgileri istemci bilgisayar tarafında tutmak için kullanılır. Ayrıca, bilgilerin bir sayfadan başka bir sayfaya taşınması için de kullanılır. 13

ÇEREZLER (COOKIES) Cookie Nesnesinin Avantajları: Kullanıcının bilgisayarında kullanıcıya özgü bilgileri saklayabiliriz. Günler sonra bile bu bilgilere ulaşabiliriz. Örnek olarak anket vb uygulamalarda aynı kullanıcının birden fazla oy kullanmasını engelleyebiliriz. Cookie dosyasında kullanıcıya özgü istatistikler tutarak bunlardan faydalanabiliriz. Başka site ve uygulamalar ile bu bilgileri paylaşabiliriz. Örneğin alışveriş sitelerinde baktığımız ürünleri, başka sitelerde gezerken google reklamı olarak görmemiz bu sayededir. Cookie Kullanmanın Dezavantajları: Güvenlik yönünden zayıftır. Başkaları da bu dosyaları okuyabilir. Ziyaretçinin kullandığı tarayıcı çerezlere izin vermiyor olabilir. Ziyaretçi çerezleri kendisi silebilir. 14

ÇEREZLER (COOKIES) Cookie Kullanımı Çerez Oluşturma HTTPCOOKIES Sınıfı Kullanarak HttpCookie cerezim = new HttpCookie("cerezdosyam"); cerezim["kullaniciadi"] = TextBox1.Text; cerezim["parola"] = TextBox2.Text; cerezim.expires = DateTime.Now.AddDays(10); Response.Cookies.Add(cerezim); Yukarıda; HttpCookie sınıfından cerezim isminde bir nesne oluşturulmuştur. İstemci bilgisayarın diskinde oluşturulacak dosyanın isminin ise cerezdosyam olacağı belirtilmiştir. Bu dosya içerisine kullaniciadi ve parola isimlerinde iki parametre oluşturulmuş ve değerleri atanmıştır. Dosyanın geçerlilik tarihi, şu anki tarihten 10 gün sonra bitecek şekilde belirlenmiştir. Son olarak Add metodu ile dosyanın oluşturulması sağlanmıştır. 15

ÇEREZLER (COOKIES) Cookie Kullanımı Çerez Okuma HTTPCOOKIES Sınıfı Kullanarak if (Request.Cookies["cerezDosyam"]!= null) { HttpCookie cerezoku = Request.Cookies["cerezdosyam"]; TextBox1.Text = cerezoku["kullaniciadi"]; TextBox2.Text = cerezoku["parola"]; } Yukarıda; Okuma işlemi sırasında cookie dosyası bulunamazsa hata oluşacaktır. Bunun önüne geçmek için öncelikle cookie dosyasının olup olmadığı kontrol edilmiştir. 16

ÇEREZLER (COOKIES) Cookie Kullanımı Çerez Oluşturma HTTPCOOKIES Sınıfı Kullanmadan Yukarıda; Response.Cookies["cerezDosyam"]["kullaniciAdi"] = TextBox1.Text; Response.Cookies["cerezDosyam"]["parola"] = TextBox2.Text; Response.Cookies["cerezDosyam"].Expires = DateTime.Now.AddHours(10); İstemci bilgisayarın diskinde oluşturulacak dosyanın isminin cerezdosyam olacağı belirtilmiştir. Bu dosya içerisine kullaniciadi ve parola isimlerinde iki parametre oluşturulmuş ve değerleri atanmıştır. Dosyanın geçerlilik tarihi, şu anki tarihten 10 saat sonra bitecek şekilde belirlenmiştir. Son olarak Add metodu ile dosyanın oluşturulması sağlanmıştır. 17

ÇEREZLER (COOKIES) Cookie Kullanımı Çerez Okuma HTTPCOOKIES Sınıfı Kullanmadan if (Request.Cookies["cerezDosyam"]!= null) { TextBox1.Text = Request.Cookies["cerezDosyam"]["kullaniciAdi"]; TextBox2.Text = Request.Cookies["cerezDosyam"]["parola"]; } Yukarıda; Okuma işlemi sırasında cookie dosyası bulunamazsa hata oluşacaktır. Bunun önüne geçmek için öncelikle cookie dosyasının olup olmadığı kontrol edilmiştir. 18

ÇEREZLER (COOKIES) Cookie Kullanımı Çerez Silme Silme işlemi için 3 konuya dikkat etmek gerekir. 1) Öncelikle çerezin var olup olmadığını test etmek gerekir, 2) Sayfayı tekrar yüklemek gerekir. 3) Çerezi silmek için Expires özelliğini kullanmalıdır. if (Request.Cookies["cerezDosyam"]!= null) { HttpCookie cerezim = new HttpCookie("cerezDosyam"); cerezim.expires = DateTime.Now.AddDays(-1d); Response.Cookies.Add(cerezim); } 19

ÇEREZLER (COOKIES) HttpCookie sınıfı özellikleri Domain: Çerezin ait olduğu domain. Expires: Çerezin son bulma tarihi. HasKeys: Çerezin alt değerleri varsa True yoksa False döndürür. Name: Çerezin adı. Path: çerez ile iletmek için sanal yol ayarlar. Secure: True ise sadece güvenli bağlantı ile okunur / yazılır (https://) Value: Çerezin değeri. Values: Çerezin taşıyacağı birden fazla değer varsa kullanılır. Çerezlerin sınırları En fazla 4096 byte bilgi taşıyabilir Her bir websitesi için en fazla 20 çerez oluşturulabilir Kullanıcı, tarayıcı özelliklerinden çerez kullanımını kapatabilir. 20

ÇEREZLER (COOKIES) Dikkat Edilmesi Gereken Hususlar Kullanıcının bilgisayarındaki her bir farklı tarayıcı için farklı çerezler tutulur. Yani IE'de kaydedilen bir çerez, Firefox veya Chrome tarafından okunamaz. Maks. 4K lık bilgi tutabildiğini unutmamalı! Güvenliği de düşünüp bilgileri şifreleyerek kaydetmek her zaman mantıklıdır. Bilgisayara format atıldığında veya tarayıcı geçmişi temizlendiğinde çerezler de silinir. 21

ÖRNEK 3 cookie.aspx sayfasını hazırlayarak; COOKIE OLUŞTUR butonuna basıldığında sayfada yer alan textbox taki bilgiyi istemci bilgisayarda cerez isimli cookie nesnesinde 10 gün süreyle tutulmasını sağlayınız. COOKIE OKU butonuna basıldığında istemci bilgisayarda cerez isimli cookie nesnesinde tutulan bilgiyi sayfada yer alan LABEL etiketine yazdırılmasını sağlayınız. COOKIE SİL butonuna basıldığında istemci bilgisayarda cerez isimli cookie nesnesini silmesini sağlayınız. 22

ÖRNEK 3 COOKIE OLUŞTUR butonu click olayına aşağıdaki kodları ekleyin COOKIE OKU butonu click olayına aşağıdaki kodları ekleyin COOKIE SİL butonu click olayına aşağıdaki kodları ekleyin 23

ÖRNEK 3 Uygulamayı çalıştırınız 24

OTURUM YÖNETİMİ (SESSION MANAGEMENT) Web sunucusu, kendisinden bir sayfa talep edildiğinde her kullanıcı için bir oturum başlatır. Oluşturulan kullanıcı oturumu boyunca Session nesnesi ile sayfalar arasında bilgi taşıma işlemi yapılabilir. Session nesnesi ile saklanan bilgilere oturum açık olduğu sürece her sayfadan ulaşılabilir, oturum kapatıldığı anda yok edilir. Oturum açan her kullanıcı için bir SessinID değeri üretilir. Bu değer hem sunucuda hem de istemci tarafında saklanır. Sunucu istek gelen istemciyi SessionID değerlerini karşılaştırarak belirler. SessionID değeri istemci tarafında Cookie ler aracılığıyla saklanır. Cookie istemcide aktif değilse URL ile birlikte saklanabilmektedir. Session nesnesi sunucuda çalışan bir nesne olduğu için SessionID değeri haricinde istemciye bir bilgi gönderilmez, bilgiler sunucuda saklanır. Sunucu belleğinin verimli kullanılabilmesi sadece önemli bilgilerin Session nesnesi ile taşınması, önemsiz bilgilerin ise QueryString nesnesi ile taşınması uygun olacaktır. 25

OTURUM YÖNETİMİ (SESSION MANAGEMENT) Session Tanımlama Yeni bir oturum oluşturma 2 farklı şekilde yapılabilir. İlki Session sınıfının ADD alt metodunu kullanarak Session.Add("SessionAdiniz","GirmekIstediginizDeger"); Diğer bir yöntem Session["SessionAdiniz"] = "GirmekIstediginizDeger"; Session Okuma Session nesnesi içerisinden veri okunmak istediğinde bilgiye şu şekilde ulaşılır Session["SessionAdiniz"].ToString() 26

OTURUM YÖNETİMİ (SESSION MANAGEMENT) Session Silme Oluşturulan session nesnelerinden belirli bir tanesini silmek istersek Session.Remove("SessionAdi"); Sistemde oluşturulan tüm session nesnelerini silmek istersek Session.Abandon(); Session ID Web sayfasını ziyaret eden ziyaretçilerin oturum bilgilerinin karışmaması için server tarafından her ziyaretçiye farklı bir ID numarası atanır. Bu bilgiye erişmek istersek Session.SessionID 27

OTURUM YÖNETİMİ (SESSION MANAGEMENT) Session TimeOut Bir Session nesnesi; Oturum sonlandığında, Tarayıcının kapatılması sonucu Belirlenen bir sürenin aşılması durumda iptal edilebilir. Eğer Session nesnesinin süresi belirtilmemişse, varsayılan olarak 20 dk sonra otomatik olarak sonlandırılacaktır. Tabi bu 20 dk, sitemize giren kullanıcının hiç bir etkinlik yapmadığı süre zarfınca geçerlidir. Sitemize giren her kullanıcı için oluşturulacak Session nesnesinin yaşam süresini kendiniz ayarlamak istiyorsanız, TimeOut özelliğini kullanmalısınız. Session.Timeout = 1; //Değer Dakika cinsinden verilir 28

ÖRNEK 4 session_kayit.aspx sayfasını oluşturarak; kullanıcı adı ve şifre bilgilerinin session nesnesinde saklanmasını sağlayınız session_kontrol.aspx sayfasını oluşturarak; session_kayit.aspx sayfasında oluşturulan oturum bilgilerini sayfada gösterilmesini sağlayınız 29

ÖRNEK 4 KAYDET butonunu click olayına aşağıdaki kodları yazınız KONTROL SAYFASINA GİT butonunu click olayına aşağıdaki kodları yazınız Session_kontrol.aspx sayfasının Page_Load olayına aşağıdaki kodları yazınız 30

ÖRNEK 4 Uygulamayı çalıştırınız 31

ÖRNEK 4 Session oluşturulmadan doğrudan kontrol sayfası çalıştırılırsa; Session oluşturulduktan sonra kontrol sayfası çalıştırılırsa; 32

UYGULAMA DURUM YÖNETİMİ ASP.Net uygulaması bazında değerlerin saklanabilmesine olanak sağlar. Application state, web uygulamasının bütün sayfalarından erişilebilir olan global bir depolama mekanizmasıdır. HTTPApplicationState sınıfının bir örneğinde saklanmak istenen veriler tutulabilir. ASP.NET uygulaması, IIS çalıştıkça application değişkenlerini kullanabilir. Tarayıcı kapatıldığında bile uygulamaya özgü değişkenler bellekte kalır. Application state sunucunun belleğinde tutulur. Bilgiye ulaşmak ve kaydetmek veritabanına kaydetmekten daha hızlıdır. Session state gibi tek bir kullanıcının oturumuna özgü değildir. Bütün kullanıcılar ve bütün oturumlar ile ilgilidir. Bu yüzden application state genellikle kullanıcılar arasında değişmeyen küçük miktardaki verileri tutmak için kullanılır. 33

UYGULAMA DURUM YÖNETİMİ Kısaca özeltlersek sitenin tamamıyla ilgili verileri tutmak için kullanılan yapıdır. Buradaki veriler sitenin tamamı ve tüm ziyaretçiler için geçerli olup, istenilen sayfadan buradaki bilgilere ulaşıp işlem yapabiliriz. Asp.NET te Uygulama Durum Yönetimi bilgilerini elde etmek ve işlem yapmak için Global.Asax dosyası kullanılır. Global.Asax Dosyası Nedir? Global.asax dosyası, kullanımı isteğe bağlı olan ve uygulama düzeyinde bilgiler tutup işlem yapmamızı sağlayan dosyadır. Sunucu taraflı çalıştığı için güvenlidir, istemci tarafından erişilemez. Projemizde Global.asax dosyası yok ise Add New Item penceresini kullanarak, Global Application Class seçeneği ile ekleyebiliriz. Bu dosya içerisinde çeşitli olay programları vasıtasıyla istenen durumlarda işlem yapılmasını sağlayabiliriz. 34

UYGULAMA DURUM YÖNETİMİ protected void Application_Start(object sender, EventArgs e) Uygulamamız (yani sitemiz) sunucuda ilk başlatıldığı anda çağrılır. protected void Application_End(object sender, EventArgs e) Uygulamamızın yani sitemizin çalışması sona erdiğinde çağrılır. protected void Application_Error(object sender, EventArgs e) Uygulamanın çalışırken hata oluşması durumunda çağrılır. Hata kayıtlarının tutulması gibi işlemler yapılabilir. protected void Application_BeginRequest(object sender, EventArgs e) Sitemizdeki herhangi bir sayfaya istek geldiğinde çalışır. Gelen isteğin türüne ya da durumuna göre farklı işlemlerin yapılmasını sağlayabiliriz. 35

UYGULAMA DURUM YÖNETİMİ protected void Application_AuthenticateRequest(object sender, EventArgs e) Üyelik tabanlı bir sitede, kullanıcı sisteme başarılı bir şekilde giriş yaptığında tetiklenen olaydır. Bu sayede kullanıcıyı bir sayfaya yönlendirmek, rol atamak, bilgisayarına cookie bırakmak vb işlemler yapılabilir. protected void Session_Start(object sender, EventArgs e) Bir ziyaretçinin sitemizdeki herhangi bir sayfayı ziyaret etmesi halinde çalışır. Sayfaya istek geldiği anda çalışır. Kullanıcı o sayfada kaldığı sürece tekrar çalışmaz fakat oturum süresi dolduktan sonra yeni bir istek gelirse bu olay tekrar çalışır. Online ziyaretçi sayısını hesaplamak için de bu olay kullanılır. protected void Session_End(object sender, EventArgs e) Ziyaretçinin oturumunun sonlanması durumunda bu olay tetiklenir. Mesela online kullanıcı sayısı hesaplanırken Session_Start olayında sayı artırılırken, Session_End olayında ise azaltılır. Bu sayede o an oturum açmış toplam kullanıcı sayısı bulunabilir. 36

ÖRNEK5 Sayfamızı ziyaret eden ve o anda aktif olarak kullanan kullanıcı sayısını gösteren onlineziyaretci.aspx sayfasını oluşturunuz. 37

ÖRNEK5 Öncelikle sitemize bir Global.asax dosyası ekleyelim. 38

ÖRNEK5 Global.asax dosyamızdaki ilgili olayları aşağıdaki şekilde değiştirelim. 39

ÖRNEK5 onlineziyaretci.aspx sayfamızı ekleyerek Page_Load olayına aşağıdaki kodları ekleyelim. 40

ÖRNEK5 Sayfayı görüntüleyelim. 41