:: ASP ile Üyelere Özel Sayfalar Hazırlamak

WildWolF

New member
Katılım
18 Haz 2005
Mesajlar
285
Reaction score
0
Puanları
0
Asp'de en çok sorulan sorulardan bir tanesi üye kontrol işlemleridir.
İlk önce üye kontrol işlemlerinde hangi asp metodlarını kullandığımızı yazalım.


(Response.Expires) Sayfanın bilgisayarın Belleğinde(Cache) ne kadar tutacağını gösterir.
- Bu özelliği sayfanın bilgisayarda yedeklenmemesi için kullanacağız.
Kullanımı:
Response.Expires = 10 '10 dakika bilgisayarda kalır.


(Session.TimeOut) Hafıza'ya atadığımız değerlerin kaç dakika sonra son bulacağı belirtilir.
- Bu özelliği ziyaretçimiz giriş yaptıktan sonra bizim istediğimiz bir süre sayfada kalması için kullanacağız.
- Eğer hiç yazılmaz ise varsayılan süre 20 dakikadır.
- Session(Oturum) değerleri browser'ı kapatıp açınca otomatik olarak sonlandırılır.
Kullanımı:
Session.TimeOut = 50 '50 dakika sonra otomatik olarak hafızadaki değerler sıfırlanır


(Session("deger")) Hafızaya istediğimiz isimde değer atamak için kullanılır.
- Bu özelliği ziyaretçimizin izinlerini ayarlamak için kullanacağız.
- Mesela ziyaretçi daha önceden giriş yaptı ise Kullanıcı formu ekrana getirilmeyecek.
Kullanımı:
Session("izin")="hayır" 'izin ismi ile hafızaya hayır değeri kayıt ediliyor.


(SELECT) Seçim, Sql'de veritabanından kayıt seçmek için kullanılır,
- Bu metod ile Kullanıcının formda girdiği değerleri veritabanında olup olmadığını kontrol edeceğiz


(Eof) End Of File,Dosya sonuna kadar okuma
- Bu özelliği kullanıcı'nın var olup olmadığı sorgusunda kullanacağız.
- Bu metod'u Sql ile Select(Seçim) yaptıktan sonra kullanacağız.
Kullanımı:
KayitNesnesi.Eof


Diğer özellikler script'in içerisinde açıklayalım.

Aşağıdaki kodları uye_kontrol.asp ismi ile kayıt edin.

PHP:
<%
'SAYFAYI CACHE'DE HİÇ TUTMA
Response.Expires = -1

'HAFIZAYA ATADIĞIMIZ İZİN 900 DAKİKA GEÇERLİ OLSUN
Session.TimeOut = 900

'VY İSMİ İLE VERİTABANI YOLUNU GÖSTERİYORUZ
'UYE_KONTROL.ASP İLE AYNI YERDE BULUNAN UYE.MDB DOSYASINI KULLANACAĞIZ.
vy = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("uye.mdb") 'Access 2000

'VB İSMİ İLE ACTİVE-X DATA OBJECT KULLANARAK 
'VERİTABANI BAĞLANTI NESNESİNİ OLUŞTURUYORUZ.
set vb = Server.CreateObject("adodb.connection")

'OLUŞTURDUĞUMUZ BAĞLANTI NESNESİNİ AÇIYORUZ 
'HANGİ VERİTABANINI AÇACAĞIMIZDA OPENDAN SONRA BİR BOŞLUK BIRAKARAKYAZIYORUZ.
vb.open vy

'OTURUM(SESSİON) NESNELERİ İNTERNET ADRESİNE GÖRE TUTULUR.
'YALNIZ AYNI ADRES ALTINDA BİR ÇOK SİTE 
'BARINDIRILABİLİR, (BEDAVA SERVERLARDA FALAN)
'HAFIZA İSMİ ALTINDA TIRNAK İÇERİSİNDE KARIŞIK BİR ŞEYLER YAZIN
'AMAÇ DİĞER SİTELER SİZİN HAFIZA ADINIZI YAZARAK KAÇAK GİRİŞ 
'YAPMASIN.(ÖNEMLİDİR)
hafiza = "2R0kK85" 
'Hafıza değişkenin adı, Üye doğru giriş yapınca bu isimdeki 
'bir değişkeni kayıt edecek

'VERİTABANINDAN SEÇİM YAPARKEN (SQL-SELECT) İLE BAZI UYANIK ZİYARETÇİLER.
'KÖTÜ AMAÇLAR İÇİN SORGUMUZA SOKUŞTURMA YAPABİLİRLER 
'BUNLARI BİZ SIFIRLAYALIM
'FUNCTİON KULLANARAK TOPLU İŞLEMLER OLUŞTURABİLİRİZ KODARA İSMİ 
'ALTINDA BİR FONKSİYON HAZIRLIYORZ
'FONKSİYONDAKİ AMAÇ BİZİM KÖTÜ NİYETLİ GÖRDÜĞÜMÜZ 
'SORGU SOKUŞTURMALARINI ÖNLEMEK.
Function kodara(duzenlenecek)
'BUNU YAPMAK İÇİNDE REPLACE (DEĞİŞTİRME) ÖZELLİĞİNİ KULLANIYORUZ
duzenlenecek = Replace(duzenlenecek,duzenlenecek,""& duzenlenecek &"", 1, -1, 1)
'FONKSİYONA GELEN DEĞERLERDE AŞAĞIDAKİ KELİMELER VAR İSE ONLARI SIFIRLIYORUZ
duzenlenecek = Replace(duzenlenecek,"<","", 1, -1, 1)
duzenlenecek = Replace(duzenlenecek,">","", 1, -1, 1)
duzenlenecek = Replace(duzenlenecek,"'","", 1, -1, 1)
duzenlenecek = Replace(duzenlenecek,"select","", 1, -1, 1)
duzenlenecek = Replace(duzenlenecek,"union","", 1, -1, 1)
duzenlenecek = Replace(duzenlenecek,"like","", 1, -1, 1)
kodara = duzenlenecek
End Function


'BİR KISAYOL KOYALIM
Response.Write "<a href='uye_kontrol.asp'>Üye Giriş Formu</a>"

'ZİYARETÇİ NE YAPMAK İSTİYOR ÜYE GİRİŞİ YAPMAKMI YOKSA ÇIKMAKMI.?
'QUERYSTRİNG İLE ZİYARETÇİNİN NE YAPMAK İSTEDİĞİ SORULUYOR. 
uyeislem=Request.QueryString("uyeislem")
'SELECT CASE İLE ZİYARETÇİ NE YAPMAK İSTİYORSA ZİYARETÇİMİZİ 
'O BÖLÜME YOLLUYORUZ.
Select Case uyeislem
Case "giris" : giris
Case "cikis" : cikis
'HİÇ BİR ŞEY BELİRTMEMİŞ İSE GİRİS BÖLÜMÜNE YOLLUYORUZ ZİYARETÇİMİZİ
Case else : giris
End Select

'SİFRE GİR DİYE BİR BÖLÜM AÇIYORUZ
'BU BÖLÜMDE ZİYARETÇİNİN KULLANICI ADINI VE ŞİFRESİNİ 
'GİRECEĞİ BİR FORM YAPIYORUZ.
SUB SifreGir
Response.Write "<table align=center width='80%' border='0'>"
Response.Write "<tr><td align='center' width='100%' colspan='2'>Lütfen Bilgilerinizi Giriniz.</td></tr>"
Response.Write "<form method=post action=''>"
Response.Write " <tr>"
Response.Write "<td align='right' width='30%'>Kullanıcı Adı...:</td>"
Response.Write "<td align='left' width='70%'><input type=text name=ad></td>"
Response.Write " </tr>"
Response.Write " <tr>"
Response.Write "<td align='right' width='30%'>Şifre...:</td>"
Response.Write "<td align='left' width='70%'><input type=password name=sifre></td>"
Response.Write " </tr>"
Response.Write " <tr>"
Response.Write "<td align='center' width='100%' colspan='2'>
<input type=submit value='Giriş' class=tus></td>"
Response.Write " </tr>"
Response.Write "</form></table>"
'Response.End
END SUB

 

'############################## ŞİFRE KORUMASI #####################
'EĞER KULLANICI ADI VE ŞİFRE DOĞRU DEĞİL İSE FORM EKRANA GELİYOR.
'ŞİMDİDE SAYFAMIZDA İKİNCİ BİR BÖLÜM AÇIYORUZ BU BÖLÜMDE ŞİFRE GİRİŞ FORMUMUZ
SUB giris

'ASP'NİN HATA KONTROL NESNESİNDEN YARARLANIYORUZ
'AMACIMIZ KULLANICIYA ANLAMSIZ VEYA BAZILARI İÇİN ANLAMLI :D ŞEYLER DÖKMEMEK
On error resume next

'DAHA ÖNCEDEN FORMDAN BİLGİ GİRİLİP İZİN ALINDI İSE HİÇ BİR ŞEY YAPILMIYOR.
'HAFIZIDAKİ OTURUM DEĞERİ EVET İSE
If session(""& hafiza &"izin")="evet" then

'HOŞGELDİNİZ DE ZİYARETÇİMİZE, VE ÇIKIŞ YAPABİLMESİ İÇİN BİR KISAYOL OLUŞTUR.
Response.Write "Hoşgeldiniz...: "& Session(""& hafiza &"dad") &",
<a href=uye_kontrol.asp?uyeislem=cikis>Çıkış</a>"

'EĞER ZİYARETÇİMİZ DAHA ÖNCE BİZDEN İZİN ALMADI İSE AŞAĞIDAKİ KODLARI YORUMLA
else

'KULLANICI FORMDA NE GİRDİ İSE O DEĞERLERİ FAD,FSIFRE 
'DİYE DEĞİŞKENLERE ATIYORUZ.
'TRİM İLE'DE FORMU GİRERKEN SAĞDAN VEYA SOLDAN BOŞLUK VERDİ 
'İSE ONLARI TEMİZLİYORUZ.
fad = trim(Request.Form ("ad"))
fsifre = trim(Request.Form ("sifre"))

'FORMUN DOLDURULUP DOLDURULMADIĞINI KONTROL EDİLİYOR.
'FORMDA GİRİLEN AD VEYA ŞİFRE BOŞ İSE
if fad="" or fsifre=""then

'SAYFANIN ÜSTÜNDE SIFRE GIR DİYE BİR BÖLÜM AÇMIŞTIK BİZ O BÖLÜMLER 
'ÇAĞIRMADAN BÖLÜMLERDEKİ KODLAR EKRANA DÖKÜLMEZ BÖLÜMLERİ ÇAĞIRMAK İÇİN 
'CALL'I KULLANIYORUZ. EĞER KULLANICI ADINI VEYA ŞİFRESİNİ YAZMADIYSA SIFREGIR 
'BOLUMUNU EKRANA GETİRKİ YAZSIN.
Call Sifregir

'SIFREGIR BÖLÜMÜNÜ ÇAĞIRDIKTAN SONRA SAYFANIN DİĞER İŞLEMLERİNİ 
'YORUMLAMASINA GEREK YOK SONLANDIRIYORUZ.
Response.End

'EĞER FAD,FSIFRE BOŞ DEĞİL İSE BU SORGUDA BİR ŞEY YAPMA,
else
end if


'ÜYE TABLOSUNDA FORMDA GİRİLEN KULLANICI ADI VARMI YOKMU BAKILIYOR
'İŞTE ASIL ÖNEMLİ OLAN YER BURASI ASLINDA TÜM YAPTIĞIMIZ İŞLEMDE BU SATIR
'KELİME,KELİME ANLATALIM
'SELECT (SEÇ)
'* TÜM ALANLARI
'FROM uyeler UYE TABLOSUNDAKİ
'ÜYELER TABLOSUNDAKİ TÜM ALANLARI SEÇ DEDİKTEN SONRA WHERE 
'İLE KISTAS(SÜZME) YAPIYORUZ.
'uyead='"& kodara(fad) &"' ÜYE AD'I FORMDA GİRİLEN ÜYE ADINA 
'EŞİT OLANLARI SEÇ
'and uyesifre='"& kodara(fsifre) &"' VE AYRICA UYESIFRE ALANI 
'FORMDA GİRİLEN ŞİFREYE EŞİT OLANLARI
'KODARA KOYMAMIZIN SEBEBİ KÖTÜ NİYETLİ KULLANICILAR 
'SEÇİMİMİZE SOKUŞTURMA YAPMAMASI
sql = "SELECT * FROM uyeler WHERE uyead='"& kodara(fad) &"' and uyesifre='"& kodara(fsifre) &"'"

'RS İSMİ İLE ADO NESNEMİZİN KAYIT SETİ ÖZELLİĞİNİ TANIMLIYORUZ.
set rs = Server.CreateObject("adodb.recordset")

'SQL İLE KAYITLARIMIZI SEÇMİŞTİK, ŞİMDİ SEÇİLEN KAYIDIMIZI 
'AÇALIM SORGULAMA YAPACAĞIZ.
rs.open sql , vb , 3 , 3

'SORGULAMIZA ŞİMDİ BAŞLIYORUZ.
'SON KAYIDA KADAR OKU VE BENİM SEÇİMİMDE BİR KAYIT VARMI BAK. (EOF)
'EĞER FORMDA GİRİLEN BİLGİLERE GÖRE KULLANICI ADI VE ŞİFRESİ VARMI.?
'BOŞ İSE
if rs.EOF then

'UYARI MESAJI YAZDIR.
Response.Write "<font color='red'><center>Yanlış Şifre veya Parola</center></font>"

'VE ŞİFRE GİRME BÖLÜMÜNĞÜ TEKRAR EKRANA DÖK DOĞRU OLANI GİRSİN.
Call Sifregir

'BUNDAN SONRA DİĞER İŞLEMLERİ YORUMLAMASINA GEREK YOK SIFIRLA
Response.End

'EĞER BOŞ DEĞİL İSE
'YANİ KULLANICININ FORMDA GİRDİĞİ KULLANICI ADI VE 
'ŞİFRESİ UYELER TABLOMUZDA VAR İSE
else


'SESSİONLARA(BU OTURUMA) KULLANICI İSMİ VE İZİNİ ATANIYOR.
session(""& hafiza &"did") = rs("uyeno")
session(""& hafiza &"dad") = rs("uyead")
session(""& hafiza &"izin") = "evet"

'VE EKRANA UYARI MESAJI GETİRİLİYOR.
Response.Write "Giriş Yapıldı."

'KULLANICI ADI VE ŞİFRESİ DOĞRUMU SORGUSU BİTİRİLİYOR.
end if


'BAĞLANTI KAPATILIYOR. (KAYIT SETİ)
rs.close

'BAĞLANTIMIZI SIFIRLIYORUZ.
set rs=nothing

'DAHA ÖNCEDEN İZİN VERİLİP VERİLMEDİĞİNİ KONTROL EDEN SORGU BİTİLİYOR.
end if

'EĞER HİÇ BİR HATA OLUŞMADI İSE BİR İŞLEM YAPILMIYOR.
'HATA OLUŞTU İSE UYARI MESAJI ÇIKARILIYOR.
if err.number = "0" then
else
Response.Write "<font class=uyari>(X) Hata Oluştu</font><br>"
Err.Clear
end if
On Error Goto 0

'VE SAYFAMIZDAKİ GİRİŞ BÖLÜMÜMÜZ BİTİRİLİYOR.
END SUB'Giris
'########################### ŞİFRE KORUMASI #####################

 

'CIKIŞ BÖLÜMÜMÜZ OLUŞTURULUYOR. ZİYARETÇİMİZ 900 DAKİKA 'DAN 
'ÖNCE ÇIKMAK İSTEDİ İSE
Sub cikis

'OTURUM İZİN DEĞERİNİ HAYIR YAPIYORUZ.
session(""& hafiza &"izin") = "hayır"

'UYARI MESAJI ÇIKARIYORUZ.
Response.Write "Çıkış işleminiz tamamlandı."

'BUNDAN SONRAKİ İŞLEMLERİ SONLANDIRIYORUZ.
Response.End

'ÇIKIŞ BÖLÜMÜMÜZDE TAMAMLANMIŞ OLDU.
End Sub 'cikis

'BAĞLANDIĞIMIZ VERİTABANINI KAPATIYOR VE SIFIRLIYORUZ.
vb.close
set vb=nothing
%>


Şimdi yapmamız gereken tek şey üye kontrolü yapmak istediğimiz sayfanın başına
<!--#INCLUDE FILE="uye_kontrol.asp"-->
yazmanız.

Son önemli not eğer bu scripti kullanacak iseniz uye.mdb dosyasının ismini ve hatta yerini
Güvenliğiniz için değiştirin, uye.mdb dosyasını değiştirdikten sonra uye_kontrol.asp 'deki
10.Satırdaki uye.mdb ismini ve yerini belirtmeyi unutmayın.
 
Geri
Üst