M
Massacre
Misafir
Hani görmüşsünüzdür bazı sitelerde linkler klasör yapıları şeklindedir yada dosyaların uzantıları bildiğimiz uzantılara benzemez. Dosya uzantısı olayı normalde server tarafında halledilebilen bir olay olmasına karşın sizde hata sayfası yöntemini kullanarak servera söz geçiremeseniz dahi kendi uzantınızı kullanabilirsiniz.
Mesela bu sitenin dosya uzantıları .asp değil de .vbsturk olsa hoş olmaz mı? http://www.vbsturk.com/default.vbsturk yada http://www.aksu.web.tr/index.aksu gibi linklere sahip olabilirsiniz. Yada hiçbir dosya uzantısı kullanmayıp linklerinizi klasör yapıları şeklinde verebilirsiniz. http://www.vbsturk.com/konular/20
Bunun için yapılması gereken ilk işlem herhangi bir sayfa bulunamadığı durumlarda serverin istemciye gönderdiği 404 hata kodlu hata sayfasını kendi sayfamız ile değiştirmek. Bu işlemi eğer varsa hosting panelinizden yapabilirsiniz. Yada server yöneticisinden rica edebilirsiniz. Genellikle bu hata sayfasının değiştirilmesi için kullanılan yere "/default.asp" yazmanız gerekir. Veya siz "/404.asp" gibi bir dosyada kullanabilirsiniz. Ben default.asp'yi kullandığınızı varsayıyorum.
Bu işlemden sonra artık herhangi bir sayfa bulunamadığında sayfa bulunamadı hatası yerine karşınıza default.asp sayfanız çıkacaktır. Örneklerimizde kullanmak üzere linkimizin http://www.vbsturk.com/konular/20 olduğunu varsayıyorum. Adres satırına böyle yazdığınızda yada böyle bir linki tıkladığınız da default.asp sayfasına yönlendiniz. Bilmeniz gereken şey ise siz adres satırına böyle yazdığınızda http://www.vbsturk.com/default.asp sayfasına gitmezsiniz. Adres satırı aynı kalır, sadece bulunamayan sayfa yerine default.asp sayfası işletilir.
Bu durumda default.asp dosyanızda adres satırında query string şeklindeki bu adresi alıp bunun içinden 20 sayısını süzüp kullanıcımıza veritabanımızda ki 20 id numaralı konuyu göstereceğiz. Bunun için öncelikle Request.ServerVariables("QUERY_STRING") diyerek adres satırındaki tüm veriyi alıyoruz. Bu durumda elimize geçen veri 404;http://www.vbsturk.com/konular/20 şeklinde oluyor. Baştaki 404 sayfa bulunamadı hatasının kodu.
Adres satırında ki veriyi bu şekilde aldıktan sonra 20 değerini almak için sizinde tahmin ettiğiniz gibi bu değeri "/" işaretlerinden bölmemiz gerekiyor. Kod ile örnek verelim.
<%
strQuery = Request.ServerVariables("QUERY_STRING")
strDizi = Split(strQuery,"/")
%>
Elimize geçen dizi elemanlarını buraya yazalım ve aradığımız verinin dizinin kaçıncı elemanı olduğunu görelim.
strDizi(0) =" 404;http:"
strDizi(1) ="" // işaretinin arasında bişey olmadığı için bu değer boş.
strDizi(2) = "www.vbsturk.com"
strDizi(3) = "konular"
strDizi(4) = "20"
Gördüğünüz üzere bize gereken id numarası dizinin 5 elemanı. (Diziler 0'dan başladığı için numarası 4)
Şimdi şöyle bir sorgu kuralım. Eğer gelen veriler arasında dizinin 4 elemanı "konular" ise id numarası verilen konuyu gösterelim. Değilse işlem yaptırmayalım.
<%
strQuery = Request.ServerVariables("QUERY_STRING")
strDizi = Split(strQuery,"/")
If strDizi(3) = "konular" AND IsNumeric(strDizi(4)) Then
'Conn isimli veritabanı bağlantısı açılır
strSQL = "SELECT * FROM KonularTablosu WHERE id = "& Cint(Trim(strDizi(4))) &" "
Set KayitSeti = Conn.Execute(strSQL)
Else
'Diğer işlemler
End If
%>
İşte bu kadar basit. Siz strDizi(3) dizi elemanı ile gelen veriye bakarak değişik işlemler yaptırabilirsiniz.
<%
'Conn isimli veritabanı bağlantısı açılır
'Veri http://www.vbsturk.com/konular/20 şeklinde gelmiş olabilir.
If strDizi(3) = "konular" AND IsNumeric(strDizi(4)) Then
strSQL = "SELECT * FROM KonularTablosu WHERE id = "& Cint(Trim(strDizi(4))) &" "
Set KayitSeti = Conn.Execute(strSQL)
'Veri http://www.vbsturk.com/makaleler/25 şeklinde gelmiş olabilir.
ElseIf strDizi(3) = "makaleler" AND IsNumeric(strDizi(4)) Then
strSQL = "SELECT * FROM MakalelerTablosu WHERE id = "& Cint(Trim(strDizi(4))) &" "
Set KayitSeti = Conn.Execute(strSQL)
Else
'Diğer iþlemler
End If
%>
Birde değişik dosya uzantısı için örnek verelim.
Linkimiz http://www.vbsturk.com/konular.vbsturk?konu=20
Dosya uzantımızın vbsturk olduğunu görüyorsunuz. Siz bunun yerine .aspx yada .jsp gibi bir dosya uzantısı kullanıp ziyaretçilere web programlama da çağ atlamışsınız havası verebilirsiniz.
Öncelikle query bilgimizi alıp "/" işaretlerinden parçalayalım.
<%
strQuery = Request.ServerVariables("QUERY_STRING")
strDizi = Split(strQuery,"/")
%>
Elimize geçen dizi elemanlarını buraya yazalım ve aradığımız verinin dizinin kaçıncı elemanı olduğunu görelim.
strDizi(0) =" 404;http:"
strDizi(1) ="" // işaretinin arasında bişey olmadığı için bu değer boş.
strDizi(2) = "www.vbsturk.com"
strDizi(3) = "konular.vbsturk?konu=20"
Gördüğünüz gibi üzerinde işlem yapacağımız değerimiz strDizi(3) dizi değişkeninde. Burada ? işaretinden sonraki kısımda ki değerleri alıp bunlara göre işlemleri bikaç yolla yapabilirsiniz. InStr() ile soru işaretinin nerede olduğunu bulur. sonra = işaretini bulur, bu 2 değer arasında ki veriyi Mid ile alabilirsiniz. Yada Split ile veriyi önce ? işaretinden sonrada = işaretinden parçalayabilirsiniz. Biz InStr() ve Mid() ile yapacağız.
<%
strVeri = strDizi(3)
intBaslangic = InStr(strVeri,"?")
intBitis = InStr(strVeri,"=")
strBolum = Mid(strVeri,intBaslangic+1,intBitis-intBaslangic-1)
%>
strBolum'un çıktısı "konu" olur. Birde konunun id numarasını alalım.
<%
strKonuID = Mid(strVeri,intBitis+1,Len(strVeri)-intBitis)
%>
Bölümün ismi ve konunun id numarası elimizde olduğuna göre yukarıdaki örnek gibi istediğiniz işlemi yaptırabilirsiniz.
Herkese kolay gelsin
Alıntıdır...
http://www.vbsturk.com
Yazan: Metin AKSU
Mesela bu sitenin dosya uzantıları .asp değil de .vbsturk olsa hoş olmaz mı? http://www.vbsturk.com/default.vbsturk yada http://www.aksu.web.tr/index.aksu gibi linklere sahip olabilirsiniz. Yada hiçbir dosya uzantısı kullanmayıp linklerinizi klasör yapıları şeklinde verebilirsiniz. http://www.vbsturk.com/konular/20
Bunun için yapılması gereken ilk işlem herhangi bir sayfa bulunamadığı durumlarda serverin istemciye gönderdiği 404 hata kodlu hata sayfasını kendi sayfamız ile değiştirmek. Bu işlemi eğer varsa hosting panelinizden yapabilirsiniz. Yada server yöneticisinden rica edebilirsiniz. Genellikle bu hata sayfasının değiştirilmesi için kullanılan yere "/default.asp" yazmanız gerekir. Veya siz "/404.asp" gibi bir dosyada kullanabilirsiniz. Ben default.asp'yi kullandığınızı varsayıyorum.
Bu işlemden sonra artık herhangi bir sayfa bulunamadığında sayfa bulunamadı hatası yerine karşınıza default.asp sayfanız çıkacaktır. Örneklerimizde kullanmak üzere linkimizin http://www.vbsturk.com/konular/20 olduğunu varsayıyorum. Adres satırına böyle yazdığınızda yada böyle bir linki tıkladığınız da default.asp sayfasına yönlendiniz. Bilmeniz gereken şey ise siz adres satırına böyle yazdığınızda http://www.vbsturk.com/default.asp sayfasına gitmezsiniz. Adres satırı aynı kalır, sadece bulunamayan sayfa yerine default.asp sayfası işletilir.
Bu durumda default.asp dosyanızda adres satırında query string şeklindeki bu adresi alıp bunun içinden 20 sayısını süzüp kullanıcımıza veritabanımızda ki 20 id numaralı konuyu göstereceğiz. Bunun için öncelikle Request.ServerVariables("QUERY_STRING") diyerek adres satırındaki tüm veriyi alıyoruz. Bu durumda elimize geçen veri 404;http://www.vbsturk.com/konular/20 şeklinde oluyor. Baştaki 404 sayfa bulunamadı hatasının kodu.
Adres satırında ki veriyi bu şekilde aldıktan sonra 20 değerini almak için sizinde tahmin ettiğiniz gibi bu değeri "/" işaretlerinden bölmemiz gerekiyor. Kod ile örnek verelim.
<%
strQuery = Request.ServerVariables("QUERY_STRING")
strDizi = Split(strQuery,"/")
%>
Elimize geçen dizi elemanlarını buraya yazalım ve aradığımız verinin dizinin kaçıncı elemanı olduğunu görelim.
strDizi(0) =" 404;http:"
strDizi(1) ="" // işaretinin arasında bişey olmadığı için bu değer boş.
strDizi(2) = "www.vbsturk.com"
strDizi(3) = "konular"
strDizi(4) = "20"
Gördüğünüz üzere bize gereken id numarası dizinin 5 elemanı. (Diziler 0'dan başladığı için numarası 4)
Şimdi şöyle bir sorgu kuralım. Eğer gelen veriler arasında dizinin 4 elemanı "konular" ise id numarası verilen konuyu gösterelim. Değilse işlem yaptırmayalım.
<%
strQuery = Request.ServerVariables("QUERY_STRING")
strDizi = Split(strQuery,"/")
If strDizi(3) = "konular" AND IsNumeric(strDizi(4)) Then
'Conn isimli veritabanı bağlantısı açılır
strSQL = "SELECT * FROM KonularTablosu WHERE id = "& Cint(Trim(strDizi(4))) &" "
Set KayitSeti = Conn.Execute(strSQL)
Else
'Diğer işlemler
End If
%>
İşte bu kadar basit. Siz strDizi(3) dizi elemanı ile gelen veriye bakarak değişik işlemler yaptırabilirsiniz.
<%
'Conn isimli veritabanı bağlantısı açılır
'Veri http://www.vbsturk.com/konular/20 şeklinde gelmiş olabilir.
If strDizi(3) = "konular" AND IsNumeric(strDizi(4)) Then
strSQL = "SELECT * FROM KonularTablosu WHERE id = "& Cint(Trim(strDizi(4))) &" "
Set KayitSeti = Conn.Execute(strSQL)
'Veri http://www.vbsturk.com/makaleler/25 şeklinde gelmiş olabilir.
ElseIf strDizi(3) = "makaleler" AND IsNumeric(strDizi(4)) Then
strSQL = "SELECT * FROM MakalelerTablosu WHERE id = "& Cint(Trim(strDizi(4))) &" "
Set KayitSeti = Conn.Execute(strSQL)
Else
'Diğer iþlemler
End If
%>
Birde değişik dosya uzantısı için örnek verelim.
Linkimiz http://www.vbsturk.com/konular.vbsturk?konu=20
Dosya uzantımızın vbsturk olduğunu görüyorsunuz. Siz bunun yerine .aspx yada .jsp gibi bir dosya uzantısı kullanıp ziyaretçilere web programlama da çağ atlamışsınız havası verebilirsiniz.
Öncelikle query bilgimizi alıp "/" işaretlerinden parçalayalım.
<%
strQuery = Request.ServerVariables("QUERY_STRING")
strDizi = Split(strQuery,"/")
%>
Elimize geçen dizi elemanlarını buraya yazalım ve aradığımız verinin dizinin kaçıncı elemanı olduğunu görelim.
strDizi(0) =" 404;http:"
strDizi(1) ="" // işaretinin arasında bişey olmadığı için bu değer boş.
strDizi(2) = "www.vbsturk.com"
strDizi(3) = "konular.vbsturk?konu=20"
Gördüğünüz gibi üzerinde işlem yapacağımız değerimiz strDizi(3) dizi değişkeninde. Burada ? işaretinden sonraki kısımda ki değerleri alıp bunlara göre işlemleri bikaç yolla yapabilirsiniz. InStr() ile soru işaretinin nerede olduğunu bulur. sonra = işaretini bulur, bu 2 değer arasında ki veriyi Mid ile alabilirsiniz. Yada Split ile veriyi önce ? işaretinden sonrada = işaretinden parçalayabilirsiniz. Biz InStr() ve Mid() ile yapacağız.
<%
strVeri = strDizi(3)
intBaslangic = InStr(strVeri,"?")
intBitis = InStr(strVeri,"=")
strBolum = Mid(strVeri,intBaslangic+1,intBitis-intBaslangic-1)
%>
strBolum'un çıktısı "konu" olur. Birde konunun id numarasını alalım.
<%
strKonuID = Mid(strVeri,intBitis+1,Len(strVeri)-intBitis)
%>
Bölümün ismi ve konunun id numarası elimizde olduğuna göre yukarıdaki örnek gibi istediğiniz işlemi yaptırabilirsiniz.
Herkese kolay gelsin
Alıntıdır...
http://www.vbsturk.com
Yazan: Metin AKSU