Bu sistem 404 mantığıdır.Linkler
www.sitenizinadresi.com/haber/123 şeklinde yani klasör gibi gözüküyor. Ancak bu isimde bu kadar klasör oluşturulmuyor. Bunun yerine basit bir hile kullanılıyor.
Çalışma mantığı şu şekilde siz böyle bir adres yazdığınız zaman 404 hatası olarak Default ayarlarda gelen 404 sayfasına gidiyorsunuz.404 sayfasını kendi oluşturmuş olduğumuz herhangi bir sayfaya yönlendirerek bu kodu işleterek ID numarasını ve hangi sayfanın çağrılacağını inceleyeceğiz.
Bu yönlendirme için 404.asp adında bir sayfamız olsun. Eğer bu sayfa FTP'nizde ana dizinde ise Kontrol Panel'inizden veya hosting sağlayıcınız ile bu yönlendirmeyi yapmak için 404 hatasının Türünü URL olarak seçilmesi ve /404.asp yapmanız gerekir. URL olarak seçilmesi önemlidir çünkü diğer türlü sayfanın içerik kodları gözükecektir.
Ben ise size bunu kendi localhost'umuzda nasıl yapılacağını anlatacağım.
Control Panel'deki Administrative Tools(Yönetimsel Araçlar) bölümünü açın. Orada Default Web Site'in özelliklerine girin ve yukarıdan Custom Errors bölümüne gelin. Hemen aşağıdaki 404 olarak yazan hata türünü bulun ve ve çift tıklayarak özelliklerine girin.Burada Message Type(Mesaj Türü)'nü URL seçin ve URL olarak da alta /404.asp yazın.
Tamam diyerek uyguladıktan sonra IIS Manager'ı kapatabilirsiniz. Şimdi ise sayfamızı nasıl düzenleyeceğimize geldi sıra.
Default olarak kurduysanız root dizininiz yani c:\inetpub\wwwroot\ klasörü altında bir 404.asp adında text sayfası oluşturun.İçi boş şimdilik boş olsun.
Diyelimki veritabanınızda haberler tablosu var ve buna göre bir adres yazacağız. Sayfa linkimiz
http://localhost/haberler/14 şeklinde olsun ve bu kodu nasıl işleterek veritabanından 14 nolu ID ye göre seçtirme işlemi yapılacağını görelim.
Önclikle veritabanı ile bağlantımızı yapalım.
Daha sonra tıklanan adreste hangi sayfanın ve hangi kayıtın gösterileceğini seçeceğiz. Bu kodlar aşağıdaki gibi.
<%
Set data = Server.CreateObject("ADODB.Connection")
data.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db.mdb"))
%>
<%
strURL = Request.ServerVariables("QUERY_STRING")&"//"
secici = split(strURL,"/")
sayfaadi = secici(2)
' burada adreste 2 / (slashdan) sonraki isimi belirledik yani web sitemizin ismini belirletik çünkü yönlendirme için gerekli olacaktır.
sayfaadi = secici(3)
' burada adreste 3 / (slashdan) sonraki isimi belirledik
serino = secici(4)
' burada adreste 4 / (slashdan) sonraki isimi belirledik yani id yi belirlemiş olduk
%>
QUERY_STRING ile adres çubuğuna yazılmış olan bütün yazıyı alıyoruz ve secici değişkenimiz ile alınan adresi parçalara bölüyoruz
siteadresi = secici(2)
dediğimizde adreste bulunan 2. slashtan sonraki yazıdır örneğin
http://sitenizinadresi.com/ adresinte 2 slashdan sonra sitemizin adresini alıyoruz...
sayfaadi = secici(3)
dediğimizde 3. slashdan sonra sayfaadi dediğimiz kategorileri alıyoruz haberler , makaleler , haberdetay gibi....
serino = secici(4)
dediğimizde ise de 4. slashdan sonra seri dediğimiz kayıt ID lerini alıyoruz yani normalde
http://sitenizinadresi.com/haberdetay.asp?ID=16
burada 16 yı almış oluyoruz...
/ secicileri istediğimiz kadar arttırabiliriz...
şimdi secici ile aldığımız bilgileri if else yardımı ile sayfamızı hazırlıyoruz...
<%
If sayfaadi="haberler" then
' eğerki sayfaadi yani 3 slashdan sonraki yazi haberler ise bu arada yapacağımız işlemler gözükecektir.
' burada biz örnek amaçlı olsun diye kayıtlı haberlerimizi sıraladık.
set hbr = Server.CreateObject("ADODB.RecordSet")
SQL_hbr = "SELECT * FROM tbl_haber ORDER BY hbr_id DESC"
hbr.open sql_hbr,data,1,3
do while not hbr.eof
%>
<a href="/haberdetay/<%=hbr("hbr_id")%>"> <%=hbr("hbr_adi")%> - <%=hbr("hbr_detay")%></a><br>
<%
hbr.movenext
loop%>
<%
ElseIf sayfaadi="haberdetay" then
' eğerki sayfaadi yani 3 slashdan sonraki yazi haberdetay ise bu arada yapacağımız işlemler gözükecektir.
' burada biz örnek amaçlı olsun diye ayrıca serino dediğimiz yani kayıt ID sinide aldığımız haberin detaylarını görüntüledik
' 3 satır altta serino diye dediğimiz olay secicide 4. slashdan sonra aldığımız kayı ID sidir..
hbr_id = Request.QueryString("hbr_id")
set hbrd = Server.CreateObject("ADODB.RecordSet")
SQL_hbrd = "SELECT * FROM tbl_haber WHERE hbr_id = " & serino& ""
hbrd.open sql_hbrd,data,1,3
%>
---<%=hbrd("hbr_id")%><br>
--<%=hbrd("hbr_adi")%><br>
-<%=hbrd("hbr_detay")%>
bu sitemi if else mantığı ile çoğaltabiliriz...
yanlız dikkat etmemiz gereken bir olay vardırki, o şudur eğerki kullanıcı sitemizin adresinden sonra rastgele bir şeyler yazdı ise
doğal olarak kodlar bir işlem yapamayacaktır..
ve en son altta yazdığımız kodlarda else dedik yani hiç bir sayfaadi bizim sayfalarimizda yoksa bu alttaki kodlar işlem yapacaktır.
bunu secicilerimizden aldığımızı siteadresi ile aldığımız değişkenle işlem yapıyoruz
ve özel bir sayfaya böyle bir sayfa yoktur gibisinden bir sayfaya yönlendiriyoruz
buda aşağıdaki kodlar ile gerçekleşmekte.
<% else %>
böle bir sayfa yok
isterseniz burada ana sayfaya yönlendirme yapabilirsiniz
aynen şuan yaptığımız gibi
3 saniye sonra ana sayfaya yönleneceksiniz
<%
Response.Write "<meta http-equiv=""Refresh"" content=""3;URL=http://" & siteadresi & "/index.asp"">"
%><%end if%>
örnek uygulamayı indirip inceleyerek hayal gücünüze göre uygulamayı geliştirebilirsiniz..
Serdar TAYLAN
ANKARA
örnek uygulama :
http://www.aspindir.com/Goster/4442
NOT : Alıntıdır ...
saygılar,