PHP Nedir ? PHP Tarihçesi ve Özellikleri
25 Ağustos 2009 Yazan admin
Kategori ASP/PHP/HMTL, Asp & Php Dersler
PHP Tarihçesi
PHP, ilk olarak 1990’lı yılların ortalarında Rasmus Lerdorf tarafından geliştirilmeye başlanmıştır. Lerdorf’un amacı kişisel bilgilerini internet üzerinden yayınlamaktı. O tarihteki teknolojide, günümüzdeki gibi gelişmiş web tasarım yazılımlarının bulunmamasından dolayı , kişisel web sayfası yapmak çok daha zordu. Buradan yola çıkarak, kişisel web sayfası yapmak için bir yazılım hazırladı ve adına Personal Home Page (PHP) adını verdi. PHP, Perl dili üzerine kurulu bir dil olarak geliştirilmeye başlanmıştır. PHP’ nin çok tutulması üzerine web tasarımcılarının çok ihtiyacı olan, yani form yoluyla ziyaretçiden gelen bilgileri işlemeyi sağlayan eklemeler yapılarak adına PHP/FI (Form Interpreter) adını aldı. Kimileri tarafından programın bu versiyonu PHP2 olarak adlandırıldı. 1995 yılının ortalarında PHP Lerdorf’un kurmuş olduğu bir grup tarafından daha da geliştirildi. Bu sefer Perl dilindeki fonksiyonlardan tamamen arındırılmış ve Object Oriented (Nesneye Dayalı) bir dil haline getirildi.
Günümüzde PHP4 versiyonu ardından çok daha güçlü ve çok daha çok özellikli halde PHP5 versiyonu geliştirilmiş durumdadır. PHP dili Linux gibi Açık Kaynak Kodlu bir dildir ve ücretsiz olarak dağıtılmaktadır ve geliştirilmektedir. Linux, Unix, Windows tabanlı işletim sistemlerinde çalışabilen versiyonları mevcuttur.
PHP Nedir?
Platformdan bağımsız (Windows,Linux, Etc.) çalışabilen sunucu taraflı, Html gömülü betik dilidir. Perl, C/C++ tipinde script dilidir. Bu dillere aşina olanlar ve herhangi bir programlama dilini bilenler PHP yi fazla vakit kaybetmeden öğrenebilirler.
Oracle, Adabas D, Sybase, FilePro, mSQL, Velocis, mySQL, Informix, Solid,dBase, ODBD Unix dbm ve PostgreSQL veritabanlarıyla güvenli iletişim kurabilir ve IMAP, SNMP, NNTP , POP3 , HTTP servislerine bağlantı kurabilmektedir.
Platform olarak “Linux & Apache & mySQL” kullanılması en yaygın ve önerilendir. Siz kendi sisteminizde de sorunsuz kullanabilirsiniz.
Diğer Betik Dillerinden Farkı
——————————————————————————–
Php’nin diğer betik dillerinden farkı mevcuttur. Bunlar;
PHP’nin JavaScript gibi istemci tarafına hitap eden betik dillerinden en önemli tarafı sunucu tarafından yorumlanmasıdır.
PHP’de istemcinin istediği betiğin söz dizimi JavaScript’deki gibi HTML kodunun içerisinde görünmez.
PHP’nin Perl gibi betik dillerinden en önemli farkı HTML içine gömülebilmesidir.
Kaynak: PHPKaynak.com
Bu haber 30625 defa okunmuştur.
ASP NEDİR DERS2
25 Ağustos 2009 Yazan admin
Kategori ASP/PHP/HMTL, Asp & Php Dersler
Bu Web sayfası <%= MyPageCounter.Hits %> kez görüntülenmiştir.
REQUEST NESNELERİ
Request Objesi:
Request objesi bilgi toplamak amaçlı kullanılan bir objedir. Detaylı olarak anlatılacak olmasına rağmen bu obje içersinde (koleksiyon ) yer alan metotlara kısaca bakalım.
1-Querystring: Eğer gönderilen bilgi url içersinde bulunan dosya ismi ile birlikte taşınıyorsa başka bir ifadeyle bilgi formu metodundan “GET” ile gönderiliyor ise Querystring metodu bu bilginin elde edilmesi için kullanılır.
2-Form: Eğer bilgi Form içerisinde “POST” metodu ile gönderiliyor ise bilginin elde edilmesi için kullanılan bir metodudur.
3-Servervariables: Web server request ile ilgili bilgileri ( Http ServerVariables ) tutar. Bu bilgilere bu koleksiyon içerisinde ulaşmayı sağlayan bir metoddur.
4-Cookies: Eğer client browser server dan gelen cookileri ( çerez:text dosyaları ) kabul ediyor ise bu bilgi web server a cookie koleksiyonu içerisinde ulaşır.
5-ClientCertificate: Client Certificate dijital bir sertifikadır ve client ve web server arasında ulaşılan server ve client ın birbirini tanımlaması için kullanılır. Detaylı olarak ele alınacaktır.
QueryString Koleksiyonu
Querystring server a iletilen bilgi kümeciği metotlarından biridir. Bu iletişim browser ın adres hanesinde yer alan dosya adına “?” ve “&” işaretleri vasıtası ile bilgilerin eklenmesi suretiyle gerçekleşir. Genel kullanımı :filename.asp?kullanici=Mehmet şeklindedir.
Eğer daha fazla bilgi bir anda gönderilmek isteniyor ise bu “&” işareti kullanılarak;
filename.asp?kullanici=Mehmet &email=mehmet@dogus.edu.tr şeklinde gerçekleştirilir.
“&” işareti bilgilerin birbirinden ayrılmasını sağlar. Kullanıcı adı ve soyadını alan ve bunları Querystring metodu ile ilgili forma gönderecek bir form dizayn edelim. İlgili Html formu aşağıdaki gibi olmalıdır;
< form name=login Action=Querystring.asp metod="GET">
Lütfen Adınızı Giriniz: < input type="text" name"adi" >
Lütfen SoyadınızıGiriniz:< input type="text" name="soyadi" >
< input type="submit" value="login" >
< /Form >
Yukarıdaki kod adı soyadı alanları bulunan bir form elde etmemizi sağlar.
Bu Html kodu içerisinde yer alan input submit butonu < form action="Querystring.asp" metod= "GET" > bu kutucuklara girilen bilgileri action kısmında belirtilen Querystring.aspye “GET”metodu kullanılarak gönderilir. (Yani bilgiler browser ın adres hanesi kullanılarak iletilir. ) Bu bilgilere ulaşmak içinse Request in Querystring metodu aşağıdaki şekilde kullanılır.
Request. Querystring (“istek gönderen formdaki Html elemanının adı” ) bu genel kullanıma göre eğer biz “…” içerisine o formda yer alan bir kontrolün adını koyar, istek o input alanına girilmiş veriye ulaşırız, yani Request. Querystring (“adi” ) şeklinde bir kullanım “adi” adlı text boxa girilen veriye;
Request. Querystring (“soyadi” )şeklinde bir kullanım ise “soyadi” adı verilen textbox a girilen veriye ulaşmamızı sağlar. Eğer Response nesnesinin Write metodunu kullanırsak login formuna girilen verileri;
<%
Response.write Request. Querystring ("adi" ) & "
”
Response.Write Request. Querystring (“soyadi” )
%>şeklinde ekrana yazabiliriz.
Dikkat edecek olursanız “&” işareti “
” Html etiketini formdan gelen adi verisine eklemek için kullanılmıştır. Bu da bize 1 satır aşağıya geçmemizi sağlar (satır beslemesi ) sağlar. Koleksiyon birden fazla değer ve değişkeni içerisinde bulunduran bir grup olarak tanımlanabilir. Eğer Querystring metodu kullanılarak gönderilen değişken (kontrol sayısı ) birden fazla ise bu bir koleksiyon oluşturuyor anlamı taşır. Eğer daha önceki notlarımızı hatırlayacak olursak koleksiyon oluşturan bilgi grupları veya dizin elemanları için kullandığımız özel bir döngümüz vardı. (FOR EACH….NEXT ) bu döngüyü Querystring için uygulanacak olursak ;
Kod Alanı:
<%
For Each eleman in Request. Querystring
Response.Write eleman & "......" & Request. Querystring(eleman )
Next
%>
şeklinde bir döngü ile bize Querystring ie gönderilen tüm elemanları ve bu elemanların değerlerini ekrana basabiliriz. Yukarıdaki döngü Request. Querystring ile oluşturulan her eleman için döngüyü tekrarlar.
Request. Querystring (“kontrol” ).count özelliği gönderilen elemanları saymak için kullanılır. Eğer bu sayı”o” a eşit ise herhangi bir bilgi gönderilmemiş demektir.
Şimdi değişik konularda başlıkların yer aldığı ve bu başlıklar arasından kullanıcının yaptığı seçimlere bağlı olarak bu konularda kendisine bilgi göndereceği mesajını ekrana basan bir ASP uygulaması oluşturalım. Kullanıcının seçim yapabileceği selectboxın yer aldığı Html formunu dizayn edelim:
< HTML >
< HEAD >
< TITLE > kitap başlıkları < /TITLE >
< /HEAD >
< BODV >
Aşağıdaki konu başlıklarından ilgilendiklerinizi seçiniz.
< FORM ACTION="responseQuerystring.asp" METHOD="GET" >
< Select size=3 name="Konular" MULTIPLE >
< OPTION > Bilgisayar < /OPTION >
< OPTION > Hikaye < /OPTION >
< OPTION > Şiir < /OPTION >
< OPTION > Roman < /OPTION >
< /select >
< input type= "submit" value= "Gönder >
< /FORM >
< /BODY >
< /HTML >
Şimdi bu formdan gönderilen verileri işleyen ASP kodunu oluşturalım:
Kitap istek formu : < BR >
<%
if Request. Querystring("Konular" ).count= 0 then Response.write "Herhangi bir konu seçmediniz."
ELSE
Response.write size seçmiş olduğunuz "&"< BR >
Response.Write Request. Querystring (“konular” )
Response.write “hakkında broşür yollayacağız. Teşekkürler”
END IF
%>
Kod Nasıl Çalışır:
İlk form basit bir html formudur. Selectbox butonun oluşturulması için kullanılmıştır.
FORM KOLEKSİYONU
Eğer form içerisinde gönderilen bilgiler POST metodu kullanılarak gönderilmiş ise bu bilgiler FORM koleksiyonu içerisinde yer alır. Bu bilgiler request .FORM kullanarak kontrol edilebilirler. Genel kullanımı:
Request. Form (“kontrol_adi” ) şeklindedir.
Form nesnesi içerisinde textbox dışında aşağıda ki elemanlarda bulunabilir. Bunlar:
• Textbox
• Checkbox
• Option Buttons
• Listbox ve türevleri
• Hidden Fields
• Text Areas
Tüm bu elemanların oluşturulması ile ilgili bilgileri herhangi bir HTMl öğreten siteden öğrenebilirsiniz. Formun POST metodu ile gönderilen bilgiler HTML veri akışı içerisinde kullanıcıya gönderilir, bilginin iletilmesi için browser ın adres hanesi kullanılmaz. Bir önceki örneği form koleksiyonu ile oluşturmak isteseydik ;
Request.Form (“Konular” ) şeklinde bir değişiklik yapmamız yeterli olacaktı.
CLIENTCERTIFICATE KOLEKSİYONU
Web browser, web server ile Secure (SSL ) bağlantısı üzerinden bağlantı kurmak istediğinde bu işlem dijital sertifikalar üzerinden sağlar. Bu dijital sertifika bağlantı yapılan web server ve organizasyon hakkında gerekli bilgileri taşır bu CA Certificate Authority olarak bilinir. Bu işlem bilgilerin güvenli bir bağlantı üzerinden aktarılmasını sağlar bilgi aktarımı SSL, Secure Sockets Layer protokolü üzerinden gerçekleştirilir. SSL, Http protokolünün daha güvenli hale getirilmiş bir varyasyonudur. En son versiyonu SSL 3.0/PCT 1 dir. (PCT: Private Communication Technology ) Clientcertificate de bir koleksiyon meydana getirir ve bu koleksiyona:
Kod Alanı:
<%
For Each Key in Request. ClientCertificate
Response.Write ( Key & " : " & Request.ClientCertificate (key ) & "
” )
Next
%>
şeklinde ulaşabilirsiniz.
Bu koleksiyonda yer elemana ise ; Request. ClientCertificate (Key ) şeklinde ulaşabilirsiniz. İlerleyen bölümlerde ClientCertificate ile ilgili daha ayrıntılı bilgilere ve örneklere yer verilecektir.
Request Nesnesinin Özellikleri ve Metotları
Request nesnesi koleksiyonun dışında da bazı özel özellik ve metotlara sahiptir. Bu özelliklere ve metotlara göz atalım .
TotalBytes Özelliği
Bu özellik browser tarafından gönderilen bilginin toplam olarak kaç byte olduğunu bulmak için kullanılır. Aşağıda ki kod gönderilen bilginin kaç byte olduğunu ekrana yazar
Kod Alanı:
<%
Response.Write "Göndermiş olduğunuz Bilgi:"
Response.Write Request.TotalBytes & "dır"
%>
BinaryRead Metodu
BinaryRead metodu POST ile server a gönderilen bilgilerin alınması için kullanılır. Form ve querystring metodlarında farklı olarak text dışında veri gönderildiğinde bu metod bu verilerin okunması için kullanılır. Daha önce anlatılan TotalBytes özelliği bu metoda parametre olarak sunulur. Aşağıda verilen kodu inceleyelim
Kod Alanı:
<%
Dim Dosya_boyutu, Oku
Dosya_boyutu=Request.Totalbytes
Oku=Request.BinaryRead(Dosya_boyutu )
For i= 1 to Dosya_boyutu
Response.Write MidB (oku, i, 1 )
Next
%>
MidB , Mid fonksiyonuna benzeyen fakat düzensiz oluşturulmuş bilgileri oluşturulmuş bilgileri okumak için kullanılan bir text fonksiyonudur. (Aslında N boyutlu dizi haline getirilmiş veriler demek daha doğru olur. ) Bu fonksiyon döngü içerisinde her defasında bir karakter okunur ve bu karakter ekrana yazılır.
ServerVariables (Server Değişkenleri )
Request nesnesinin bir diğer kolleksiyonu, bizim kendi Web Serverımızın o anda çalışmakta olan ASP sayfası için oluşturduğu ortamın değişkenleridir. Bunların arasındaziyaretçinin Browserına ilişkin bilgiler de vardır. Önce þu kısa ASP sayfasını çalıştırarak kendi Serverımızın şu andaki değişkenlerini görelim; sonra bunları ayrıntılı ele alalım
Kod Alanı:
HTTP Server Değişkenleri Kolleksiyonu
| Değişkenin adı | Değeri |
| <% = key %> | <%If Request.ServerVariables(key ) = "" Then Response.Write " " Else Response.Write Request.ServerVariables(key ) End If Response.Write " | “%>
Sizin Hostunuzun adı: <%=Request.ServerVariables("HTTP_HOST" )%>
Bu sayfayı çalıştırdığımız zaman görüntülenecek tabloda, Bir HTTP Serverın sayfasını çalıştırdığı anda oluşturduğu ortama şekil veren bütün değişkenleri göreceksiniz. Bu değişkenleri programlama yoluyla değiştiremeyiz; sadece okuyup, yararlanabiliriz. HTTP Server Değişkenleri Kolleksiyonunun elemanları şöyle sıralanır:
Değişkenin adı Değeri
ALL_http HTTP Header içinde yer alan bütün değişkenler ve değerleri. Header adlarının önünde “HTTP_” öneki vardır.
ALL_RAW http Header içinde yer alan bütün değişkenler ve değerleri. Header adları ve değerleri istemci Browserın verdiği şekilde gösterilir.
APPL_MD_PATH Web Serverın ISAPI.DLL dosyası için varsaydığı kök dizin
APPL_PHYSICAL_PATH Web Serverın varsaydığı kök dizinin gerçek yolu
AUTH_PASSWORD Kullanıcı Web Servera kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan parola
AUTH_TYPE Kullanıcı Web Servera kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan yetkilendirme yöntemi
AUTH_USER Kullanıcı Web Servera kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanıcı adı
CERT_COOKIE Kullanıcı siteye bağlanmak için yetkilendirme sertifikası kullanıyorsa kendisine verilen kimlik (ID )
CERT_FLAGS Sertifikanın varlığını gösteren bit değeri
CERT_ISSUER Sertifika varsa veren kurum
CERT_KEYSIZE Secure Socket Layers kullanılıyorsa, bağlantı için anahtar değeri
CERT_SECRETKEYSIZE Özel anahtar değeri
CERT_SERIALNUMBER Sertifika seri no.
CERT_SERVER_ISSUER Sertifikayı veren merci
CERT_SERVER_SUBJECT Server Sertifikasının “konu” alanı değeri
CERT_SUBJECT İstemci Sertifikasının konu alanı değeri
CONTENT_LENGTH İstemcinin gönderdiği bilgi yumağının boyutu
CONTENT_TYPE Ziyaretçiden gelen bilgilerin GET veya POST metoduna göre edindiği tür
GATEWAY_INTERFACE Web Serverın ziyaretçi ile etkileşim arayüzünün adı ve sürümü. Genellikle: CGI/1.1
HTTPS Ziyaretçi ile bağlantı güvenli ise ON, değilse OFF
HTTPS_KEYSIZE Secure Sockets Layer için bağlantı anahtar sayısı
HTTPS_SECRETKEYSIZE Özel Server sertifikasının gizli anahtar sayısı
HTTPS_SERVER_ISSUER Özel Server sertifikasının veren merci
HTTPS_SERVER_SUBJECT Özel Server sertifikasının konusu
INSTANCE_ID Web Serverın aynı anda kaç kere çalışmakta olduğu
INSTANCE_META_PATH Şu anda çalışmakta olan Web Serverın Meta yolu
LOCAL_ADDR İstemcinin IP numarası
LOGON_USER İstemci Windows NT sisteminde ise oturum açma adı
PATH_INFO Çalışmakta olan ASPnin göreli yolu ve adı
PATH_TRANSLATED Çalışmakta olan ASPnin gerçek yolu ve adı
QUERY_STRING İstemcinin gönderdiği bilgi kümesi
REMOTE_ADDR İstemcinin Hostunun (ISSinin ) IPsi
REMOTE_HOST İstemcinin Hostunun (ISSinin ) adı
REMOTE_USER İstemcinin gerçek adı
REQUEST_METHOD İstemciden bilgi isteme yöntemi (GET veya POST )
SCRIPT_NAME Çalışmakta olan ASPnin adı
SERVER_NAME Sunucunun adı
SERVER_PORT Sunucuya bağlantının geldiği TCP kapı numarası
SERVER_PORT_SECURE TCP kapısı güvenli ise 1, değilse 0
SERVER_PROTOCOL Serverın çalıştırdığı HTTPnin sürümü
SERVER_SOFTWARE Server programının adı ve sürümü
URL Şu anda geçerli URL
RESPONSE NESNELERİ
Bu başlık altında her iki objeyi daha detaylı olarak inceleyeceğiz. Bu objeler browser ve web server arasındaki iletişiminin sağlanması için kullanılırlar. Şimdi bu detaylara ayrıntılı olarak bakalım.
Write Metodu:
Response objesinin en sık kullanılan metodudur. Write metodu ASP sayfamızda bilgileri görüntülemek için kullanılır. Genel kullanımı;
Response.Write [değer] şeklindedir.
<%
Yazılacak_text="Bugün günlerden ne?"
Response.Write yazılacak_text
%>
Şeklinde bir kullanım browser ekranına “Bugün günlerden ne?” diye bir mesaj yazar. Asp script bildiğiniz gibi <%........%> script sınırlayıcıları arasına yazılır. Bu kullanımın iki farklı şekli vardır. Eğer html tagları içerisinde herhangi bir değişkenin taşıdığı bir değeri görüntülemek istiyorsak <%=değer%> daha uygun bir kullanım olacaktır. Fakat bu kullanımın dezavantajı sadece 1 satırlık bir kodlamaya izin vermesidir. Yani;
<%=değer
Response.Write "Bu kullanım hata verir."
%>
Şeklinde bir kullanım yanlıştır. Dolayısıyla birden fazla satır ASP kodlaması gereken durumlarda ASP kodunu <%.......%> satırları arasına yazmak daha uygun olacaktır. Aşağıdaki örneği inceleyelim:
<%
text1= "Merhaba"
text2= "Yeni ASP programcıları"
Response.write text1 & text2
%>
Response.write text1 & text2 kullanımı iki farklı değişken içerisinde tutulan stringleri birleştirerek tek satırda yazmak için kullanılmıştır. “&” işareti iki değişkeni birleştirmek için kullanılır. Response.write bir işlemin sonucu ekrana yazmak içinde kullanılabilir. Aşağıdaki örneği inceleyelim;
<%
sayı1= 24
sayı2= 8
Response.write sayı1/sayı2
%>
Şeklinde bir kullanım ekrana 3 yazılmasına neden olur. Çünkü sayı1 /sayı2 yani 24/8=3 dür, ve response.write 3 şeklinde bir kullanıma eşdeğerdir. Bir formdan bize iletilen bilgileri Request objesini kullanarak alabilir ve gene bu bilgiyi Response objesinin write metodunu kullanarak ekrana yazabiliriz.
<%
Response.Write (Request.QveryString("text1" ) )
%>
şeklinde bir kullanım bize istek gönderen formdaki text1 adlı değişkeninin değerini ekrana yazar.
Buffer:
Buffer özelliği response ile oluşturulan Html Data akışının html dosya oluşturulması tamamlandıktan sonra veya her satır iletildiğinde gösterilmesi ile ilgili bir özelliktir. Default değeri “on” dur bu değere false u set edecek olursak ;
Response.Buffer=False şeklinde bu işlem yapılabilir.
Clear:
Response.Clear metodu buffer (tampon ) edilmiş tüm html bilgisinin silinmesi için kullanılır. Kullanımı: Response.clear şeklindedir. Fakat unutulmaması gereken nokta eğer Response.Buffer= false olarak set edilmiş ise Run-time (çalışma zamanı ) hataya neden olur.
End:
End metodu web server işlemi durdurmasını ve Response.End noktasına kadar oluşturulmuş Html datanın gönderilmesini sağlar. Kullanımı :
Response.End şeklindedir
Expires:
Expires özelliği dakika cinsinden sayfanın browser tarafından hafızada ne kadar tutulacağı ile ilgili bilgiyi set etmek için kuyllanılır. Eğer kullanıcı aynı sayfaya Response.Expires ile belirlenen zamandan daha önce geri dönerse sayfanın hafızadaki versiyonu kullanıcıya gösterilir. Kullanımı : <% Response.Expires=dakika %> şeklindedir. Eğer bu değere “0″ set edilirse ( Response.Expires=0 ) sayfaya her geri dönüldüğünde sayfa yeniden yüklenir.
ExpiresAbsolute:
ExpiresAbsolute tıpkı Expire özelliğibne benzer olarak fakat belirtilen sürenin dakika değil tarih veya saat olacak şekilde set edilmesi suretiyle sayfanın geçerlilik süresinin belirlenmesi için kullanılır. Kullanımı :
<% Response.ExpiresAbsolute=#tarih# %> şeklindedir.
Redirection:
Kullanıcıyı bir Asp sayfasından diğerine yönlendirmek için kullanılan bir metoddur. Bu metodun yerini alan 2 yeni metod olan server.transfer ve server.Execute metodlarına daha sonra ayrıntılı olarak göz atacağız. Redirection iel ilgili olarak bilmemiz gereken bazı önemli noktalar vardır. Eğer http header client a gönderilmil ise Response.redirection hataya neden oluyur . bu hatanın önüne geçmek için response.Buffer özelliğini true ya set etmek sureiyle ve herhangi bir noktada response.clear ı kullanarak response.Redirection in hata vermesini engelleyebiliriz. Response.Redirectionun genek kullanımı:
Response.Redirection(“yönlendirilecek_sayfa” ) şeklindir.
Server. Execute ve Server.Transfer
Server. Execute ve Server.Transfer bir ASP sayfası içersinden başka bir sayfanın çalıştırılması veya o sayfanın içeriğinin aynı sayfa içerisinde gösterilmesi için kullanılır. Aralarında ki tek fark ise Server. Execute kullanıldığında hedef sayfa çalıştırıldıktan sonra orijinal sayfa nın işletilmesine devam edilmesine rağmen Server.Transfer kullanıldığında orijinal sayfaya geri dönülmez. Page1 , Page2 veMainpage adı altında 3 sayfamın olduğunu düşünün
ÇEREZLER
Siteye giriyordunuz. Adam size “sayfayı kişiselleştir” diye bir link koymuş. Tıklayıp içinizi döküyorsunuz. Siteyi bir sonraki ziyaretinizde site size adınıza hitaben “merhaba koçum, seni tanıyorum, bana kendini anlatma, çok iyi bilirim ben seni … ismin şu, sevdiğin kalem markası Rotring, başın ağrıyınca önceden Novalgin alırdın şimdi modaya uyup Aspirin Forte.. monitörün philips marka ve sen simit şeklindeki power düğmesine gıcık oluyorsun … haa bir de bu siteyi 2. ziyaretin … nerden bildim ama… hahaha” türünden şaklabanlıklar yapıyor. Peki bunu nasıl beceriyor? Hepiniz çerezlerle olduğunu biliyorsunuz.
ASP ile istemci bilgisayarlara çerez yollamak çok basit bir iştir. Gerçekten çok basit. ASP nin yerleşik delikanlılarından RESPONSE nin bu iş için özel bir metodu var: COOKIES . İstemciye çerez yollamak için bu metodla birlikte anahtar değerler (bir veya iki ) gönderiyoruz. (bir ayrıntı: ASP de iki anahtar sadece cookies kolleksiyonunda kullanılıyor ). Şimdi örnek kodu inceleyelim:
Response.cookies(“kabuk” )= “Evet, kabuk”
Response.cookies(“kabuklarim” )(“adi” ) = “Mucit”
Response.cookies(“kabuklarim” )(“sevdigi_icecek” ) = “Kızılcahamam Maden Suyu ve Sodası”
Response.cookies(“kabuklarim” )(“medeni_durumu” ) = “Bekar!”
Response.Cookies(“kabuklarim” ).Expires = Now( ) + 90
Peki çerezi yolladık tarayıcıya. Yani kabukları. Peki bu kabukları görmek istediğimiz zaman ne yapmamız gerekiyor. İşte o zaman ASP nin diğer delikanlı nesnesi REQUEST talip oluyor göreve. Çünkü bir şeyleri talep etmek onu görevi. Biz de ona bir emir vereceğiz. “Çerezler arasından şu anahtardaki değeri bana bir getiriver bakayım” denildiği anda size o değeri getirecektir. Bu metodu kullanmak, response ile çerez yollamaya çok benzer. Ancak bir fark vardır. Response de ilgili anahtara atama yapılır, burada ise request zaten bize bir değer getirir, biz de bu değeri işimize geldiği gibi kullanırız. Aşağıda REQUEST ile çerezden bilgi almayı görüyorsunuz.
Adim = Request.cookies(“kabuklarim” )(“adi” )
ne_icerim = Request.cookies(“kabuklarim” )(“sevdigi_icecek” )
medeni_halim = Request.cookies(“kabuklarim” )(“medeni_durumu” )
Response.Write Adim & ” / ” & ne_icerim & ” / ” & medeni_halim
sayfadaki çıktı: Mucit / Kızılcahamam Maden Suyu ve Sodası / Bekar!
İşte bu örneklerde çerezle bilgi yollama ve de çerezden bilgi alma tekniğinin ne kadar kolay olduğunu görüyorsunuz.
<%
ziyaret = Request.cookies("sitem" )("ziyaret" )
If ziyaret = "" Or Not Isnumeric(ziyaret ) Then
Response.cookies("sitem" )("ziyaret" ) = "0"
Response.Cookies("kabuklarim" ).Expires = Now( ) + 365
Response.Write "Siteye ilk defa geldiniz. Saolun. Bir daha gelin haaa.."
Else
ziyaret = ziyaret + 1
Response.cookies("sitem" )("ziyaret" ) = ziyaret
Response.Cookies("kabuklarim" ).Expires = Now( ) + 365
Response.Write "Siteye " & ziyaret & ". gelişiniz, aferin hep gelin haa.. "
End If
%>
APPLİCATION
Belirtilen uygulamadaki tanımlı bütün kullanıcıların bilgiyi paylaşmaları için Application nesnesini kullanabiliriz. Bir ASP-uzantılı uygulama, sanal dizin ve onların altdizinlerindeki tüm .asp dosyaları gibi tanımlanır.
Application nesnesi birden fazla kullanıcı tarafından paylaşılabildiği için, kullanıcıların bir özelliği aynı anda değiştirme girişimlerini önlemek için Lock ve Unlock yöntemleri kullanılır. Bir örnek yaparak çalışmasını inceleyelim. Bu örneğimizle kullanışlı sayfa sayaçları yapabilirsiniz. Örneği inceleyince daha iyi anlayacağınıza eminim…
Aşağıdaki örneğimizi ne olur manuel yazalım ve Sayac.asp adıyla kaydedelim. İsterseniz kopyala-Yapıştır yapabilirsiniz ama elle yazmanız sizin açınızdan çok faydalı olacaktır.
Düşünsenize belki hata yapacaksınız ve bu hatayı aramak zorunda kalacaksınız ve böylece bir kaç kere tekrar etmiş olacaksınız…
Kod Alanı:
<%
Response.Expires = 0
Expires sayesinde sayfanın içeriğinin bilgilerinin cache bellekte saklanmasını engelleriz.
%>
<%
If (Application("Sayac" ) = "" ) Then
Bu ziyaretçi için Application başlatılmadıysa başlatılsın.
Application("Sayac" ) = 0
End If
Application.Lock
Applicationı Kilitliyoruz. Ve kullanıcı giriş yaptıktan sonra 1 değer
arttırıyoruz.
Application("Sayac" ) = Application("Sayac" ) + 1
Application.UnLock
Ve tekrar serbest bırakıyoruz. Diğer kullanıcılarla bu Application
kullanılabilsin diye...
%>
Bu Sayfaya <%= Application("Sayac" ) %> Kere Giriş Yapıldı.
Bu kodu yazıp çalıştırdığımız zaman, sayfayı her yenilediğimizde sayaç bir değeri kadar arttırılacaktır. Eğer Sayaç+1 yerine 5 yazarsanız sayacınız 5er 5er artacaktır… İsterseniz başka bir örnekle bu nesnemize ait bilgilerimizi pekiştirelim…
Diyelim ki bir chat scripti yazıyorsunuz ya da bir Active Users Scripti yazıyorsunuz, o zaman da bu nesnemizden faydalanmamız gerekecektir. Şimdi hemen diğer bir örneğe geçelim. İlk Olarak bir Chate Giriş sayfası yapalım. Tabii bu sanal bir chat. Yani sadece sayıyı kontrol etmeyi yazacağız… NotePadi açalım ve aşağıdaki kodları chat.asp diye kaydedelim…
<%@ Language=VBScript Codepage="1254"%>
Chat Odamıza Gitmek İçin Tıklayın
<%
Response.Write "Şu anda Chat Odamızda "&application("chat" )&" kullanıcı bulunmaktadır..."
%>
Aşağıda göreceğiniz scripti de ChateKatil.asp diye kaydedelim. Ve bir önceki sayfada yazdığımız scriptten bu sayfaya link verdiğimizi hatırlayarak, o sayfada
<%@ Language=VBScript Codepage="1254"%> Aşağıda göreceğiniz scripti de Ayril.asp diye kaydedelim. <%@ Language=VBScript Codepage="1254"%> If Application ("chat" )<0 then SESSİON HTML ve Javascript ile biraz oynadıysanız, bilirsiniz ki bir sayfadan ötekine değişken değeri aktarmak, imkansıza yakın derecede zordur. Değişkenlerin ömrü, fonksiyonla sınırlıdır. Bir ASP sayfasında herhangi bir değişkeni fonksiyon dışında tanımlamakla ve değer atamakla onu bütün fonksiyonlar için geçerli hale getirebiliriz. Fakat kimi zaman isteriz ki, bir fonksiyonun değeri bütün sayfalarda aynı olsun; ziyaretçinin sayfa değiştirmesi ile değişkenin değeri değişmesin. Bunu ASPde yapmak çok kolaydır. ASPde bu zorluğu yenebilmek için değişkenlerimizi Session nesnesi için oluşturabiliriz; ve bu değer ziyaretçinin oturumu boyunca devam eder; bütün ASP sayfalarındaki bütün Fonksiyonlar tarafından bilinebilir. Örneğin: Session Türkçe oturum demektir. ASPnin özelliği artık bildiğinizi varsayıyorum. ASP Sunucusu Servera bağlanan, yani bir talepte (Requestde( bulunan her bir ziyaretçiye ayrı bir oturum ayrı bir session açar. Tabii Cookie denetimi yoksa… Ve her Sessiona bir ID verir… Sessionın en büyük özelliği dinamik olmasıdır. Yani ziyaretçinin sitede bulunduğu her saniye Session nesnesi tarafından takibe alınır… Bu sayede eğer gerçekten profesyonel planlamalar yaparken Session nesnesinin metotlarından bir çok şekilde faydalanacağız… Session nesnemizin en büyük özelliği tanımladığımız değişkenleri diğer geçiş sayfalarında da kullanabilmemiz için tutmasıdır… Hemen bir örnek yaparak Session nesnemize giriş yapalım… Önce Bir Form Hazırlayalım ve bu formu Session.asp diye kaydedelim. Kod Alanı:
Chat Odamızdan ayrılmak İçin Tıklayın<%
Application.Lock
Hatırladığınız gibi, önce Applicationımızı kilitliyoruz ve sayacı bir
arttırdıktan sonra kilidini kaldırıyoruz...
Application("chat" )=Application("chat" )+1
Sayacı bir arttırıyoruz.
Application.Unlock
Ve tekrar Applicationımızı serbest bırakıyoruz ki, diğer kullanıcılar
giriş yaptığı zaman kilitli kalmasın....
Response.Write "Şu anda Chat Odamızda "&application("chat" )&" Kişi Bulunmaktadır..."
Daha sonra Applicationımızın tuttuğu sayısal değeri, Response
metoduyla sayfaya basıyoruz. Ve böylece kaç kişinin
Applicationımızı açtığını görebiliyoruz. Bir ilerki sayfada ise
Ziyaretçimizin Applicationımızı terkettiği zaman diğer kullanıcıların
sayacı doğru görüntüleyebilmesi için 1 değer azaltmayı göreceğiz...
%>
Chat Odamıza Tekrar Bağlanmak İçin Tıklayın
<%
Application.Lock
Hatırladığınız gibi, önce Applicationımızı kilitliyoruz ve sayacı bir
arttırdıktan sonra kilidini kaldırıyoruz...
Application("chat" )=Application("chat" ) -1
Sayacı bir azaltıyoruz.
Application("chat" )=0
Eğer Applicationımızın değeri 0dan küçükse Applicationımızı durduruyoruz.
End If
Application.Unlock
Değilse kilidi kaldırıyoruz.
Response.Write "Şu anda Chat Odamızda "&application("chat" )&" Kişi Kalmıştır..."
Ve kalan sayıyı sayfaya Response ediyoruz...
%>
Session (“Tupras” ) = 44500
Aşağıdaki Kodları da SessionDevam.asp adıyla kaydedelim.
Kod Alanı:
<%@ Language=VBScript Codepage="1254"%>
Kod Alanı:
<%
Session.Timeout=15
Oturum süresi, eğer sayfaya hiç bir müdahalede bulunulmazsa 15 dakikadır.
Session ("Isim" )=Request.Form("Isim" )
Session ("Soyad" )=Request.Form("Soyad" )
Bir önceki sayfadan
taşıdığımız değeri Request metoduyla Oturumda tutuyoruz.
Dim Icerik
Dim IcerikSonu
%>
<%
IcerikSonu=Session.Contents.Count
For Icerik=1 To IcerikSonu Session nesnemizde tuttuğumuz değerleri
Session.Contents yardımıyla saydırıyoruz.
Response.Write (Session.Contents(Icerik ) &"
” )
Sonucu sayfaya Response ederek yazdırıyoruz. Ve bir
yani
Break Line koyarak (Alt satıra Geçmemizi sağlar. ) Next yordamıyla
sıradaki Kayıtları ekrana yazdırmasını sağlıyoruz…
Next
%>
Bir ASP sayfasını oturum açmadan yapılandırmak için alttaki kodu ekleyebilirsiniz.. Değerini True yaparak başka bir sayfada oturumu başlatabilirsiniz…
Kod Alanı:
<%@ EnableSessionState=False %>
Session Timeout:
Kullanıcı bir uygulamadaki bir sayfayı belirli bir süre istemez ya da yenilemezse, oturum otomatik olarak sona erer. Bu süre için varsayılan değer 20 dakikadır. Bir uygulama için varsayılan değeri, Internet Information Service çalışma ekindeki Uygulama Seçenekleri özellik sayfasında değiştirebilirsiniz.
Kod Alanı:
<% Session.Timeout = 16 %>
Session Abandon:
Abandon yöntemi, bir Session nesnesinde saklı olan tüm nesneleri yok eder ve kaynaklarını bırakır.
Abandon yöntemini çağırmak istemiyorsanız, sunucu bu nesneleri oturumun süresi bittiğinde yok eder.
Kullanımı:
Session.Abandon
Abandon yöntemi çağrıldığında, geçerli Session nesnesi silinme için havuza alınır, ancak geçerli sayfadaki komut dosyası komutlarının tümü işlenmeden tam olarak silinmez.
Böylece, sonraki Web sayfaları dışında, yalnızca Abandon yönteminin çağrıldığı sayfadaki Session nesnesinde saklı olan değişkenlere erişebilirsiniz.
Örneğin, aşağıdaki komut dosyasında üçüncü satır Oğuz değerini yazar. Bu, sunucu komut dosyasının işlenmesini bitirene kadar Session nesnesinin yok edilmemesinden dolayıdır.
Kod Alanı:
<%
Session.Abandon
Session("Isim" ) = "Oğuz"
Reponse.Write(Session("Isim" ) )
%>
Sonraki Web sayfalarında Isim değişkenine erişirseniz, değerinin boş olduğunu göreceksiniz.
Bunun nedeni, Isim değişkeninin, yukarıdaki işlemi bitirdiğinde önceki Session.Abandon nesnesiyle yok edilmesidir.
Server, bir oturumu kapattıktan sonra başka bir Web sayfasını açtığınızda, yeni bir Session nesnesi oluşturur. Değişkenleri ve nesneleri, bu yeni Session nesnesinde saklayabilirsiniz.
Aşağıdaki örnek, sunucu geçerli sayfayı çalıştırmayı bitirdiğinde oturumun son durumunu verir.
Kod Alanı:
<% Session.Abandon %>
FORM ELEMANLARINDA DEĞER ALMA
ActiveX Veri Erişim (ADO ) Nesneleri
ASPnin diğer CGI tekniklerine göre kolay olmasının (peki, kabul, “kolay görünmesi” diyelim! ) belki de sadece veri erişimini adeta çocuk oyuncağı haline getirmesidir. ADO, gerçekte bir ASP nesnesi olmaktan çok Server Componenti (sunucu bileşeni ) sayılır. Bu bileşene biz ASP içinden bir ActiveX nesnesi ile ulaşırız.
Veritabanı, günümüzde giderek Web Programlarının temelini oluşturuyor. Sayfaların unsurları veritabanı dosyasından alınıyor; ziyaretçilerin verdikleri bilgiler veritabanına yazılıyor. Bu gelişimin başlıca sebebi, veritabanının site güncelleştirme işlerini kolaylaştırmasıdır. Söz gelimi bir sayfadaki seçenekleriniz, bir veritabanından alınıyorsa, bu seçenekleri alan VBScript kodu hiç değişmeden kalacak ve siz sadece veritabanı dosyanızda ilgili verinin alındığı alana yeni değerler girerek, sayfanızı sürekli güncel tutmuş olacaksınız. Bir diğer sebep ise veritabanı dosyalarının idaresinin kolay olmasıdır. Sözgelimi ziyaretçilerinizden aldığınız bilgileri daha sonra muhasebe kayıtlarınıza veya adres defterinize, müşteri kütüğüne ya da başka suretle kayda geçirmek istiyorsunuz. Ziyaretçilerimizin form yoluyla bize ilettiği bilgileri düzyazı dosyasına işlemenin yollarını Dosya sistemi Nesnesini (FileSystem ) görürken, ele aldık. Bunu yapabiliriz kolayca. Ama daha sonra düz yazı dosyasının idaresi, veritabanının idaresi kadar kolay olamaz. ASP sayfalarınız Access, Excel, Paradox, FilePro, SQL Server ve Oracle veritabanlarına ve spreadsheet dosyalarına erişebilir; bu dosyalardan veri okur ve bu dosyalara veri yazabilir. Özetle, ASP programlarımızla, SQL-uyumlu veya Windows ve diğer sistemler için yazılmış ODBC (Open Database Connectivity/Açık Veritabanı Bağlantısı ) ile uyumlu her türlü dosyaya, ADO nesnesi aracılığıyla ulaşabiliriz.
ODBC ve OLE-DB
Bu kitapçığın baştarafında, ASP dosyalarınızı geliştirmeye başlamadan önce bilgisayarınızda ODBC (Open Database Connectivity/Açık Veritabanı Bağlantısı ) sürücülerinin kurulu olması gerektiğini belirtmiştik. ODBC, ADOnun kullandığı tek sistem değildir; ve Microsoft firması, ODBCnin yerine hızla OLE-DB adını verdiği yeni bir teknolojinin alması için yoğun çaba içinde. OLE-DB, ODBCnin Webde sağladığı başarının üzerine bina edilen yeni bir teknoloji. ODBC, ilişkilendirilmiş (relational ) veritabanlarına erişmek üzere tasarlandığı halde OLE-DB her türlü veritabanına erişebilir. OLE-DB, ASP programlarımıza yeni nesneler kazandırabilir; kullanılmaya hazır elektronik ticaret bileşenlerini kullanmaya imkan verir. Bu konuda geniş bilgiyi, Microsofttan edirebilirsiniz. ASP sayfalarımızda kullanacağımız ADO nesneleri ilerde de ODBC sürücülerine erişme imkanını koruyacağı için, şimdilik sadece ODBC tekniği ile çalışmakta ve bu tekniği öğrenmekte sakınca yok. OLE-DB, ODBCnin yerini almayacak; fakat içinde ODBCyi de bulunduracak. Bu da şu anda oluşturacağımız ASP uygulamalarının ilerde OLE-DB tekniği ile çalışan sunucularda işleyeceği anlamına geliyor.
Şimdi ADO ile aşağıda yapacağımız küçük örnekler için bilgisayarınızda kurulu bir veritabanı programı varsa onu kullanarak bir veritabanı dosyasında uyeler adıyla şu tabloyu oluşturabilirsiniz:
Alan Adı: Veri türü
uyeNo AutoNumber (Birincil Anahtar/Primary Key )
uyeAdi metin
uyeSoyadi metin
email metin
mesaj memo
Daha sonra da renkler adıyla şu tabloyu yapın:
Alan Adı: Veri türü
renkID AutoNumber (Birincil Anahtar/Primary Key )
renk metin
Bu tablolardan birincisine bir kaç isim ve diğer bilgileri; ikincisine ise dört-beş renk adı girin. Bilgisayarınızda veritabanı oluşturma programı yoksa bu kitapçığın kodları arasında bulunan uyeler.mdb adlı MS-Access dosyasını kullanabilirsiniz. Bu dosyayı, kişisel Web Serverınızın kök dizinine kopyalayın. Sonra, Denetim Masasını açın ve adı ODBC, ODBC 32 Bit, ya da ODBC Data Source olan simgeyi çalıştırın; ikinci sekme olan System DSNi tıklayın.
Açılacak kutuda Add/Ekle düğmesini tıklayarak, yeni veri kaynağı oluşturmak için ilk adım olan veriyi okumakta kullanacağımız sürücüyü seçebileceğimiz kutunun açılmasını sağlayın. Burada, yukarıda oluşturduğunuz veri dosyasına uygun sürücüyü seçin. Örnek uyeler.mdbyi kullanıyorsanız, birinci seçenek olan Microsoft Access Driverı seçmeniz gerekir. Son düğmesini tıklayın ve Access dosyasının kurulumunu yapmaya başlayalım. Buradaki Data Source Name (DSN, Veri Kaynak Adı ), biraz sonra ADO nesnesiyle ilgili metodları ve deyimleri yazarken kullanacağımız veri adıdır; buraya “uyeler” yazın; çünkü örneklerde bu veriye “uyeler” adıyla gönderme yapacağız. İsterseniz, Description/Açıklama bölümüne veritabanının niteliğini belirten bir kaç kelime yazabilirsiniz. Sonra, Select/Seç düğmesini tıklayarak ve açılıcak diyalog kutusu yardımıyla veritabanı dosyasını kopyaladığınız yerde bulun; OK/Tamamı tıklayarak, veritabanı seçme işlemini tamamlayın.
DSN oluşturma kutularını sırasıyla OK/Tamam düğmelerini tıklayarak kapatın; “uyeler” verisi, şu andan itibaren bütün Web uygulamalarımızın hizmetine girmiş demektir. Internet sitenize koyacağınız ve veritabanına erişmesi gereken sayfalarınız için bu işlemi gerçek Internet ortamında da yapmak zorundasınız. Veritabanı dosyanızı Internet sitenizde kök dizinine veya bir diğer dizine kopyaladıktan sonra sistem yöneticisine ya elektronik mektupla, ya da evsahibi firmanın yönetim ve teknik destek yardımı sağlayan sayfasında veritabanınızın dosya adını, yolunu, ve DSN olarak kullanmak istedeğiniz ismi bildirerek, bizim burada yaptığımız işi Server yöneticisinin yapmasını sağlamamız gerekir. ADOnun bize sağladığı imkanlardan yararlanabilmek için onun nesnelerini kullanılırız. Bu bölümde ADOnun nesneleri ve metodlarını ele alacağız.
Connection (Veritabanına bağlantı )
ADOdan yararlanabilmek için kullanacağımız ilk nesne Connectiondır. Bu nesne ile veritabanı ile bağlantı sağlarız, yol açarız:
<%
Dim Veriyolu
Set Veriyolu = Server.CreateObject("ADODB.Connection" )
Veriyolu.Open "Veri_adi"
%>
Recordset (Kayıt dizisi )
<%
Dim Veriyolu, Kayitdizisi
Set Veriyolu = Server.CreateObject("ADODB.Connection" )
Veriyolu.Open "Veri_adi"
Set Kayitdizisi = Veriyolu.Execute("SELECT * FROM Veri_adi" )
%>
Recordset.Open
Veritabanına dayanan Web uygulamalarımızda sorun buradaki gibi sadece veriyi okumakla bitmeyebilir; veriyi güncelleştirmek veya silmek isteyebiliriz. Bunun için doğruca ADOnun .Recordset metodundan yararlanmamız gerekir. .Recordset metodu ne yapar? Tıpkı ekranınızdaki bir yazının içinde duran imleç (cursor ) gibi hayalî bir imleci götürür verilerinizin en başına koyar. Bu hayali imleci veritabanı üzerinde dolaştırmak ve gittiği yerdeki değeri okutmak bizim işimizdir.
Bir veriye bağlantıyı kurduktan sonra kayit dizimizi .Recordset metodu ile sağlayacaksak, yukarıdaki örnek kodumuzu şöyle yazmak gerekir:
Kod Alanı:
<%
Dim Veriyolu, Kayitdizisi, Sorgu
Set Veriyolu = Server.CreateObject("ADODB.Connection" )
Veriyolu.Open "Veri_adi"
Set Kayitdizisi = Server.CreateObject("ADODB.Recordset" )
Sorgu = "SELECT * FROM Veri_adi"
Kayitdizisi.Open Sorgu, Veriyolu, aOpenStatic
%>
Bu kod ile, .Recordset metodu son .Open komutu ile bizim için veri bağlantısını sağlar; verdiğimiz SQL Sorgusu icra edilir ve kayıt diziniz Kayitdizisine kaydedilmeye hazır hale gelir. Şimdi imlecinizi ilerleterek, veriyi fiilen okutmanız gerekir; ki bunu yapmak için yukarıda kolayca .Execute metodu ile oluşturduğumuz kayıt dizisinde kullandığımız basit .MoveNextten daha çok imkana sahibiz: MoveFirst: Kayıt dizisinin (Recordsetin ) birinci satına gider.
MoveLast: Kayıt dizisinin (Recordsetin ) son satına gider.
MoveNext: Kayıt dizisinin (Recordsetin ) bir sonraki satına gider.
MovePrevious: Kayıt dizisinin (Recordsetin ) bir önceki satına gider.
Move: Kayıt dizisinin (Recordsetin ) içinde vereceğiniz sayıya göre ilerler. Bunun için iki sayı vermeniz gerekir: başlangıç noktası ve ilerlenecek kayıt sayısı.
Şimdi gelelim RecordSet nesnemize. RecordSet.Open dediğimiz zaman bu nesnemiz ne yapar?
RecordSet, ekranımızda bir yazının içinde yanıp sönen bir imleç gibi çalışır. Yani bir nevi Hayalet Cursor. Recordsetin amacı bu imleci verilerinizin en başına koymaktır.
Artık bundan sonrası bize kalan bir iştir. Bu imleci, kayıtlar arasında çalıştırmak bizim işimizdir.
Bu imleci 4 şekilde ayarlayabiliriz…
Forward Only: Bu imlecimizle, veritabanındaki kayıtlar arasında sadece ileri doğru ilerleyebiliriz. Geri yani yukarı gitme imkanımız yoktur. Ayrıca yeni kayıt ekleyemeyiz. Ve eğer biz açtıktan sonra, o anda başkaları tarafından değiştirilen veriler varsa, veritabanını yeniden kapatıp açana kadar göremeyiz. Eğer Adovbs.incle birlikte kullanıcaksak kod içindeki kullanımı adOpenForwardOnlydir.
Static: Durağan anlamına gelir. ForwardOnlye ek olarak, yukarı doğru ilerleyebilir ve yeni kayıtlar ekleyebiliriz… Adovbs.incle birlikte kullanıldığında kod kullanımı, adOpenStatictir… Eğer biz açtıktan sonra, o anda başkaları tarafından değiştirilen veriler varsa, veritabanını yeniden kapatıp açana kadar göremeyiz.
Dynamic: Adından da anlaşılabileceği gibi, bu cursor tipi, tam özelliklere sahip cursor tipidir. Yukarı ve aşağıya ilerleyebilir, yeni kayıt ekleyebilir ve değiştirebiliriz. Eğer biz açtıktan sonra, o anda başkaları tarafından değiştirilen veriler varsa, veritabanını yeniden kapatıp açmadan anında görebiliriz…Kod sayfasında, Adovbs.incle birlikte kullanıcaksak, kod içinde kullanımı adOpenDynamictir…
Keyset: Bu metodumuzla, başkaları tarafından değiştirilen kayıtları görebiliriz… Cursorumuz yukarı ve aşağı ilerleyebilir. Adovbs.incle birlikte kod içinde kullanımı, adOpenKeysettir…
Kod içinde kullandığımız, adOpenStaticin hemen yanındaki ise RecordSet nesnemizin kilit özelliğidir. Farklı çeşitlerde kilitler vardır. Bir kaç tanesini yazacağım.
AdLockReadOnly: Kayıtlı verilerimizin değiştirilmesini, üzerine yazılmasını engellememizi sağlar. Yeni kayıt girişini engeller. Sadece Listelemeye izin verir…
AdLockOptimistic: Bu metodumuz da kayıtlarımızın güncelleştirilmesini, yeni kayıtlar eklememizi, ve istersek silmemizi sağlar.
AdLockPessimistic: Bu metodumuz da eğer bir veritabanı üzerinde işlem yapıyorsak, işlemlerimiz bitene kadar, diğer işlem yapabilecek kişileri engellemk için RecordSete kilit koyar.
DSNsiz Veri Bağlantısı
Veriyolu.Open “Veri=” & Server.MapPath(“…./veriler/uyeler.mdb” ) &
“; Driver = {Microsoft Access Driver (*.mdb );”
Burada, DNSsiz bağlantı için veritabanı dosyasının Serverdaki göreli yerini, adını ve hangi sürücünün kullanılacağını belirtiyoruz. Aynı bağlantıyı, doğruca Jet sürücüsü için de yazabilirdik:
Veriyolu.Open “Veri=” & Server.MapPath(“…./veriler/uyeler.mdb” )
& “; Provider=Microsoft.Jet.OLEDB4.0;”
Tabiî buradaki sorun kullandığınız veritabanı dosya türüne uygun Microsoft Jet sürücüsü seçebilmektir. Bu konuda geniş bilgi Microsoftun Internet sitesinde bulunabilir.
SQL
SQL lafları çeşitli temel komutlardan oluşur. Bunlar SELECT, FROM, WHERE, ORDER BY, GROUP BY, HAVING, UPDATE, DELETE, INSERT dir. Gördüğünüz gibi ne kadar da fakir bir dil. Biz bunlardan işimize yarayacak olanları inceleyeceğiz.
POPÜLER SQL LAFLARI
TABLODAN TÜM KAYITLARI TÜM ALANLARIYLA SEÇMEK
Yani tablonun tamamını seçmek için kullanacağımız SQL lafı şudur:
sözdizimi:
“SELECT * FROM
TABLODAN KAYITLARI İSTEDİĞİMİZ ALANLARI SEÇMEK
söz dizimi:
“SELECT
TABLODAN BELİRLİ KAYITLARI SEÇMEK (SÜZGEÇLEME )
Örneğin tablomuzda kent diye bir alanımız var. Ve mevcut kayıtlar arasından kenti “ankara” olanları seçmek istiyoruz.
SQL lafımız:
“SELECT * FROM tablomuz WHERE kent = ankara ”
Birden fazla koşul da süzgeç de koyabiliriz. Tablomuzda yas diye bir alan olsun. Kenti ankara olan ve yaşı 30 dan büyük olanları seçmek için SQL lafı:
“SELECT * FROM tablomuz WHERE kent=ankara AND yas < 37"
Gördüğünüz gibi WHERE ifadesi bize kayıtları süzgeçleme imkanı veriyor. Burada = , > , < , <> gibi mukayese operatörleri kullanılıyor.
TABLODAN KAYITLARI SIRALI HALDE SEÇMEK
Örneğin tablomuz da kenti ankara olanları yaş sırasında seçmek istiyoruz. Bunun için ORDER BY alan_adi yazımını kullanırız. Şunun gibi :
“SELECT * FROM tablomuz WHERE kent = ankara ORDER BY yas”
Eğer azalan sırada seçeceksek ORDER BY alan_adi DESC yazımını kullanacağız.
SQL hakkında bilgiler sonraki sayfada devam ediyor.
TABLODAN KAYIT SİLMEKÖrneğin tablomuzdan yaşı 18 den küçük olanları silmek için SQL lafı:
“DELETE FROM tablomuz WHERE yas < 18"
TABLOYA KAYIT EKLEMEK
SQL="INSERT INTO tblVeri (Adi,Soyadi,Telefon,Dogum_Tarihi,Mail ) values
("&txtAdi&","&txtSoyadi&","&txtTelefon&","&txtDogum_Tarihi&","&txtMail&" )"
LIKE KULLANARAK KAYIT SEÇİMİ YAPMAK
LIKE kullanarak tam karşılaştırma yapamadığımız alanlarla kayıt seçme imkanı elde ederiz. WHERE ifadesinde alan adından sonra kullanılan karşılaştırma operatörü yerine LIKE yazılır. Bu ifadeyle veritabanımızda arama motoru gibi bir şey bile yapabileceğiz ileride. Şimdi örnek kullanımlar görelim.
Tablomuzdan adı "A" ile başlayan müşterileri seçeceğiz.
"SELECT * FROM tablomuz WHERE musteri_adi LIKE A% "
Tablomuzdan yazı alanında "asp" içeren kayıtları seçeceğiz. (bir arama motoru misali )
"SELECT * FROM tablomuz WHERE yazi LIKE %asp% "
Evet bu temel komutlar ile yolumuza devam edeceğiz. Artık bu laflar ile veritabanımızdan istediğimiz rafinelikte kayıt seçebiliriz, silebiliriz, arayabiliriz.
VERİTABANI İŞLEMLERİ
Veritabanı muhabbetimiz tam gaz devam ediyor. Bu yazıda bir çok veritabanı operasyonunu birlikte göreceğiz. Kayıt ekleme, silme, güncelleme gibi. Kullanacağımız veritabanı dosyası burada(8,15 kb ). Bu dosya C:\inetpub\wwwroot\db konumunda olsun. Sıra geldi script dosyalarımıza.
KAYITLAR.ASP
Öncelikle kayıtları listeleyeceğimiz bir arabirim inşa ettik. kayitlar.asp ye göz atalım. Bu ve diğer ASP dosyaları C:\inetpub\wwwroot\ konumunda olsun.
Kod1. kayitlar.asp
Kod Alanı:
<%
Veri_yolu = Server.MapPath("db/kisiler.mdb" )
Bcumle = "DRIVER={Microsoft Access Driver (*.mdb )};DBQ=" & Veri_yolu
Set bag = Server.Createobject("ADODB.Connection" )
bag.Open (Bcumle )
Set kset = bag.execute("SELECT * FROM kisiler" )
%>
<% i=1 %>
| # | Ad | Eylemler | |
|---|---|---|---|
| <%= i %> | <%= kset("ad" ) %> | “>düzenle | “>sil |
<%
kset.Close
Set kset = Nothing
bag.Close
Set bag = Nothing
%>
Bu script, basit bir şekilde /db alt dizinindeki kisiler.mdb ile bağlantı kuruyor. kisiler tablosundan aldığı tüm kayıtların “ad” alanındaki değerlerini yazdırıyor. Ve de her bir kayıt için düzenleme ve silme linkleri oluşturuyor. Linkler oluşturulurken sorgu stringi içinde eylemi gerçekleştirecek script dosyasına “id” anahtarıyla kaydın “id” alanındaki değeri gönderiliyor. Tabi bunlar kayıtseti sonunda duracak bir döngü içerisinde yapılıyor. Veriler tablo hücrelerine döngüyle döküldüğüne de dikkat ediniz.
KAYIT_DUZENLE.ASP ve KAYIT_GUNCELLE.ASP
Kayıtların listelendiği kayitlar.asp de her kaydın yanında bir düzenle bağlantısı var. Bu bağlantı ile duzenle.asp dosyasına işaret ediliyor. Bir de sorgu cümlesi konuluyor yanına: “duzenle.asp?id=XX” Buradaki XX yerine geçerli kaydın id alanındaki değeri yazılıyor. Şimdi kayıt_duzenle.asp ye bakalım.
Kod2. kayit_duzenle.asp
Kod Alanı:
<%
id = Request.Querystring("id" )
If Not Isnumeric(id ) Or Len(id )=0 Then
mesaj "Yanlış Sorgu Cümlesi"
End If
-----------------------------------------------------------------------------------
Veri_yolu = Server.MapPath("db/kisiler.mdb" )
Bcumle = "DRIVER={Microsoft Access Driver (*.mdb )};DBQ=" & Veri_yolu
Set bag = Server.Createobject("ADODB.Connection" )
bag.Open (Bcumle )
Set kset = bag.execute("SELECT * FROM kisiler where id =" & id )
If kset.eof Then
mesaj "Olmayan Kayıt İstendi"
End If
%>
Kayıtlar
<%
kset.Close
Set kset = Nothing
bag.Close
Set bag = Nothing
%>
<%--------------------------%>
<% Sub mesaj(msg ) %>
<%= msg %>
<% response.end %>
<% End Sub %>
<%--------------------------%>
Aslında bu scriptin de öncekinden pek farkı yok. sadece sorgu cümlesinden “id” anahtarındaki değeri alıyor. Ve bu id değerini kullanarak tablodan tek kayıt seçiyor. (“SELECT * FROM kisiler where id =” & id ). Seçtiği kayda ait değerleri ise form input alanlarına döküyor. Formun action özelliğine ise kayit_guncelle.asp yazılmış. Güncelleme işini bu dosyaya havale ediyoruz.
Kod3. kayit_guncelle.asp
Kod Alanı:
<%
ad = Request.Form("ad" )
id = Request.Form("id" )
telefon = Request.Form("telefon" )
dgunu = Request.Form("dgunu" )
icq = Request.Form("icq" )
email = Request.Form("email" )
adres= Request.Form("adres" )
-----------------------------------------------------------------------------------
Veri_yolu = Server.MapPath("db/kisiler.mdb" )
Bcumle = "DRIVER={Microsoft Access Driver (*.mdb )};DBQ=" & Veri_yolu
Set bag = Server.Createobject("ADODB.Connection" )
bag.Open (Bcumle )
Set kset = Server.Createobject("ADODB.Recordset" )
sql = "SELECT * FROM kisiler WHERE id = " & id
kset.open sql, bag, 1, 3
kset("ad" ) = ad
kset("telefon" ) = telefon
kset("email" ) = email
kset("adres" ) = adres
kset("icq" ) = icq
kset("dogum_gunu" ) = dgunu
kset.update
kset.Close
Set kset = Nothing
bag.Close
Set bag = Nothing
Response.Write "
Kayıt Yapıldı.. Başka bir arzunuz? ”
Response.Write “
Kayıtlar”
%>
KAYIT_YENI.ASP
kayitlar.asp de Yeni Kayıt linkinde işaret edilen kayit_yeni.asp… Yaptığı iş şu. Veritabanına bağlanıp ilgili tablodan oluşturduğu kayıt seti içine yeni bir kayıt ekliyor. Kayıtsetini güncelliyor, “id” alanındaki değeri bir değişkende saklıyor. nesneleri kapatıyor. Ve de kayit_duzenle.asp dosyasına “id” anahtarıyla yeni eklenen kaydın “id” alanındaki değeri gönderiyor. Yani bu sayfa sadece işlem yapıyor. Kullanıcıya gözükmeden işlemi tamamlayıp düzenleme sayfasına yöneliyor.
Kod4. kayit_yeni.asp
Kod Alanı:
<%
response.buffer=true
Veri_yolu = Server.MapPath("db/kisiler.mdb" )
Bcumle = "DRIVER={Microsoft Access Driver (*.mdb )};DBQ=" & Veri_yolu
Set bag = Server.Createobject("ADODB.Connection" )
bag.Open (Bcumle )
Set kset = Server.Createobject("ADODB.Recordset" )
sql = "SELECT * FROM kisiler"
kset.open sql, bag, 1, 3
kset.addnew
kset.update
id = kset("id" )
kset.Close
Set kset = Nothing
bag.Close
Set bag = Nothing
Response.Redirect "kayit_duzenle.asp?id=" & id
%>
KAYIT_SIL.ASP
Sorgu cümlesindeki “id” anahtarından alınan id değeri kullanılarak şu SQL ifadesi oluşturuluyor.
DELETE FROM kisiler WHERE id = ” & id . Ve bu ifade bağlantı tarafından yürütülüyor (execute ). Sonuçta id si alınan kayıt tablodan silinmiş oluyor. Kullanıcı da geldiği sayafaya yönleniyor.
Kod5. kayit_sil.asp
Kod Alanı:
<%
response.buffer = True
id = Request.Querystring("id" )
-----------------------------------------------------------------------------------
Veri_yolu = Server.MapPath("db/kisiler.mdb" )
Bcumle = "DRIVER={Microsoft Access Driver (*.mdb )};DBQ=" & Veri_yolu
Set bag = Server.Createobject("ADODB.Connection" )
bag.Open (Bcumle )
sql = "DELETE FROM kisiler WHERE id = " & id
Set kset = bag.execute(sql )
Set kset = Nothing
bag.Close
Set bag = Nothing
Response.Redirect (Request.ServerVariables("HTTP_REFERER" ) )
%>
wwwseslidenizlicom-giris
23 Temmuz 2009 Yazan admin
Kategori ASP/PHP/HMTL, Asp & Php Dersler, Destekleyenler, Forum, Gazeteler, Google Optimizasyonları, Google Optimizayonlari, Google Rezil Siteler, Haber, Iddaa Sohbet, Okey Tavla Oyna, Online Dizi Izle, Online Film Izle, Online Oyunlar, Reklamcilar, Reklamcılar, Scriptler, Sesli Chat, Seslichat Siteleri, Seslisohbet, Vbulletin, Wordpress
sitemizdeki sorunlardan dolayı girişlerimiz buradandır




