Home »
Posts tagged 'asp'
apostylee.com un eski halini yıllar önce klasik asp ile kodlamıştım. Yıllardır işimi problemsiz görüyordu fakat son zamanlarda ki gelişmelerden dolayı artık yollarımızın ayrılma zamanı geldi ve WordPress e geçtim. Neydi bu gelişmeler ?
- En önemlisi apostylee.com un ilkel ötesi yönetici panelinden içerik girmek tek kelimeyle eziyetti ve çoğu zaman yazacağım şeyleri yazmıyordum. Açıkcası paneli elden geçirmek de işime gelmiyordu.
- Tasarımdan kaynaklı ciddi problemlerim vardı, en basitinden friendfeed yada facebook aracının yerleşiminde sıkıntı yaşıyordum. Tasarımımı çok severek yapmıştım ama zamanında bu tarz durumları hesaba katmadığımdan dolayı yerleşimlerde çok ciddi sıkıntılar yaşıyordum. Onu oraya çek bunu buraya çek, zaten zamanım yok iyice bunalmıştım, yeniden tasarlamak da yine işime gelmiyordu :S
- Arama motoru optimizasyonu ve diğer kolaylıklar için, özellikle eklenti desteği ve tema desteği..
- Harekette bereket vardır inancımdan dolayı.
- Yukarıda saydıklarım işin teferruat kısmı olarak nitelendirilebilir, asıl amacım WordPress gibi bir sisemi öğrenebilmek, fırsatını bulmuşken ucundan az da olsa php ile tanışmak.
Madem durum böyle bende tamam apocum geçelim wp ye dedim, fakat ortada ciddi bir sıkıntı vardı. Bu da verilerin taşınmasıydı. Eski sistemde 2 tane tablom vardı ve veriler kendi düzenimde kayıtlıydılar. Koyuldum araştırmaya ama geçişle ilgili hiç bir şey bulamadım. Dedim ki asp.net de bir kod yazayım wp nin istediği xml çıktısını oluşturup, vereyim wp ye olsun bitsin. Koyuldum kod yazmaya baktım ki yazmakla bitecek gibi değil bıraktım :D Aklıma EMS firmasının SQL Manager for MySQL programı geldi, uzun zamandır aynı programın mssql için olanını zaten kullanıyordum. Yeni bir paragraf zamanı :) (daha fazla…)
Epey zamandır ASP ile uğraşıyorum türlü türlü Türkçe karakter problemleriyle karşılaştım fakat ilk kez böylesine rastladım. Google da ufak bir araştırma yaptıktan sonra sonuca ulaşamadım, hemen kolları sıvayıp bir replace fonksiyonu yazdım. Belki birilerinin işine yarar diye paylaşayım istedim.
[asp]
function tCevir(gelenveri)
gelenveri=Replace(gelenveri,”ı”,”ı”)
gelenveri=Replace(gelenveri,”ÄŸ”,”ğ”)
gelenveri=Replace(gelenveri,”ü”,”ü”)
gelenveri=Replace(gelenveri,”ç”,”ç”)
gelenveri=Replace(gelenveri,”İ”,”İ”)
gelenveri=Replace(gelenveri,”Ä”,”Ğ”)
gelenveri=Replace(gelenveri,”Ç”,”Ç”)
gelenveri=Replace(gelenveri,”Ü”,”Ü”)
gelenveri=Replace(gelenveri,”ö”,”ö”)
gelenveri=Replace(gelenveri,”Ö”,”Ö”)
tCevir = gelenveri
end Function
[/asp]
ASP.Net ile gün geçtikçe farklı tecrübeler ediniyor ve fırsat buldukçada sizlerle paylaşıyorum. Dün başıma gelen session olayını kendi kurallarıma göre çözmeyi başardım. Önce senaryoyu sizlere anlatayım.
Önceden klasik asp ile yapılmış bir finans modülü bulunuyor. Siteye giriş yapan kullanıcı session nesnesine atanan id numarası ile burda işlemlerini yapıyor.
Sonradan site Asp.Net ile yeniden yapılıyor fakat Finans modülüne el değmiyor, nedenide geliştirilecek veya değiştirilecek bir durumun olmaması.
Sitenin Giriş (Login) bölümü asp.net ile yapıldığından, klasik asp ile asp.net ile oluşturulan session bilgilerini okuyamıyoruz ve haliyle modülü çalıştıramıyoruz.

Açık konuşmak gerekirse bu durumu farkettiğimde, Google’ dan ufak bir araştırmayla sonuca gidebileceğimi düşünmüştüm. Sonuçta Microsoft bunu bir şekilde düşünmüş olmalıydı. Bir sürü sonuca ulaştım fakat istediğim kalitede, istediğim işlevsellikte bir sonuca ulaşamadım. Zamanımda ciddi anlamda kısıtlıydı, genel olarak izlenilen yollar burda, burda ve burdaki adreslerde bulunuyor. Emre abi ve Yunus Emre ile biraz beyin fırtınası yaptıktan sonra aklıma birkaçtane fikir geldi. Kafadan veritabanını olaya bulaştırmak istemiyordum, bu yüzden bir çereze (cookie) id bilgisini atıp asp okumak geldi. Güvensiz olduğunu biliyorum fakat güven konusuna gelmeden önce zaten çerezi okuyamıyorsunu, yani sessiondaki durum çerezde de bulunuyor. (Belkide ben becerememişimdir.) Sonrasında işin içine veritabanını birşekilde bulaştırmam gerektiğini anladım. Veritabanına bir tablo ekleyip session.sessionid bilgisini, kullanıcı id sini, birde rastgele bir sayıyı eklemeyi düşündüm. Çokta mantıklı geldi çünkü session.sessionid siteye giren her kullanıcıya iis tarafından atanan bir kimlik numarasıydı. Rastgele sayıyı adres satırından gönderip, sql cümlesinde de rastgele sayı ve session.sessionid ile birlikte doğrulamayı yapıp bilgiyi klasik asp de bir sessiona atayıp dilediğim gibi kullanabilirim diye düşündüm ve işe giriştim. Ama gördüğüm bu teorimide çürüttü. ASP.Net’ in sessionid si ile ASP nin ki çok farklıydı. Oyy Allah’ ım dedim bir yolu olmalı, bu sefer kafamdaki lamba projektör edasıyla yandı ve kullanıcının ip adresini kullanabileceğimi düşündüm.
1. ASP.NET Giriş sayfasından giriş yapılır.
o Veritabanındaki Session adındaki tablonun içindeki alanlara gerekli bilgileri yazıyoruz.
- ID = Gerekli olan bilgi, yani sessiona ne atamak istiyorsanız o bilgi.
- RastgeleSayi = Randomize sayı üreten bir fonksiyonla üretilen sayı.
- IP = Kullanıcının ip adresi.
o Yukarıdaki RastgeleSayi yi ASP.NET’ de de bir sessiona da atıyoruz.
2. ASP.NET ile Yapılmış Sayfalardan ASP ye Session Transferi İçin.
o ASP.NET ile RastgeleSayi sessionunda tutulan sayıyı adrese iliştiriyoruz. Örnek: deneme.asp?R= gibi..
3. Deneme.asp Sayfasından İstediğimiz Session Bilgisine Ulaşmak.
o Select * from Session where RastgeleSayi=’”&request.queryString(“R”)&”’ and IP = ‘”&Request.ServerVariables(“remote_addr”)&”’ cümlesiyle istediğimiz ID değerine ulaşabiliyoruz. Buradaki cümleyi örnek olsun diye yazdım. Kesinlikle Sql Enjeksiyon için veya benzeri durumlar için gerekli düzenlemeleri yapın.

Saat gibi işleyen bir sistem olduğunu söyleyebilirim. Bu şekilde performans açısından da ödün vermiyoruz ek bileşende yüklemiyoruz. Burada beni düşündüren tek nokta güvenlik oldu. Düşünüldüğünde neredeyse bu işin imkansıza yakın olduğunu anlıyorsunuz. Bilgi adres ile birlikte gönderildiği için elle müdehale yapılıp farklı kullanıcıların hesaplarına erişilebilir. Fakat fakat fakat ! kafadan atacağı rakamın veritabanında olması gerekiyor, aynı zamanda karşısındaki kayıtlı ip adresinide bilmesi gerekiyor. Ip adresini bilse bile kendi ip sini nasıl değiştirir bilemiyorum. Burada çok ince bir nokta üzerinde güvenliğimiz ayakta duruyor. %100 güvenliğin olmadığını ve sadece ” Yaradan Hatasız Kodlamıştır.” lafını hatırlatmak isterim :)
Kod yazıp, ortalığı bulandırmak istemedim, sadece mantığı anlatmaya çalıştım. Belki biraz karışıkmış gibi duruyor fakat görüldüğünden çok daha basit. Hertürlü görüşe, taktiğe tekniğe açığım. Yorumlarınızı bekliyorum.
Merhabalar efendim, uzun bir zamandan sonra yeni bir makale ile tekrardan karşınızdayım. Bu yazımda ASP ile SEO (Arama motoru optimizasyonu) için gerekli olan en önemli işlemlerden olan linklerin yazı başlığı şeklinde uzantısının .html şeklinde olması olayını (SEF) kendimce anlatmaya çalışacağım. Bu ne için gereklidir dilerseniz önce bunu anlamaya çalışalım. Google bu konu hakkında şunu der; kullanıcı bir arama sonucunda yada bir yerde sitenizin içeriği hakkında bir link gördüğünde, linkten konunun içeriğini anlamalıdır.Olayın özeti budur. Bakınız bu site. Linkler; baslik-deneme-1-2.html şeklindedir. Burdaki .html uzantısı ise sayfanın sabit bir içerik olduğunu temsil eder. PHP ASP.NET gibi dillerde bu işlemi yapmak gayet basitken ASP gibi modası geçmiş bir dilde birazcık zahmetlidir. Birden fazla yolu vardır fakat bence en kolay şu şekilde yapılmaktadır. Sitemde ki yapıda aynen anlatacağım şekildedir.
Öncelikle asp sayfalarımızı yorumlayan programımız olan IIS e ufak bir ayar yapmamız gerekiyor. Bunun nedeni de şu; www.sitemiz.com/deneme.html diye bir istek olduğunda eğer böyle bir sayfa yoksa dizinimizde 404 numaralı hatanın sayfası çıkar ve Aradığınız sayfa bulunamadı gibisinden bir uyarıyla karşılaşırız. Bizim kuracağımız yapıda her başlığa ait bir .html dosyası olmayacağından bu duruma el atıp 404 uyarısı verildiğinde default.asp sayfamıza yönlendirme yapmamız gerekiyor. Sonrasında gerekli kodlarımızı yazıp veritabanı sorgulama işlemimizi sağlıklı bir şekilde yapıp kullanıcının ruhu bile duymadan istediği sayfayı istediğimiz şekilde kendisine sunacağız.
Denetim Masası\Yönetimsel Araçlar \ Internet Information Services (IIS) Yöneticisini çalıştırıyoruz. Şuandaki bilgisayarımda Windows Vista olduğu için IIS 7 üzerinden yönlendirme işlemini göstereceğim. Bu IIS 6 da ve farklı versiyonlarda değişiklik gösterebilir, fakat ufak bir araştırmayla 404 yönlendirmesini basit bir şekilde yapabilirsiniz.
IIS açıldıktan sonra sol taraftaki ağaç menüden Default Web Site yi tıklıyoruz. Sonrasında karşımıza çıkan ekrandan Hata Sayfaları simgesine tıklıyoruz.

Gördüğünüz gibi hata kodlarıyla birlikte hata olduğunda hangi sayfanın görüntüleneceği bir kısım geldi karşımıza. Bu ekrandayken direk sağ taraftaki Özellik Ayarlarını Düzenle linkine tıklıyoruz.

Normalde Ayrıntılı Hatalar seçili durumdadır, biz bunu Özel Hata Sayfaları olarak değiştiriyoruz.

Daha sonra bir önceki sayfada bulunan hata sayfalarından 404 numaralı hatanın üzerine çift tıklayıp Bu sitedeki bir URL’ i yürüt kısmına ister default.asp dosyamızı veya kendinizin belirleyeceği bir yorumlama sayfasının yolunu giriyoruz. Ben örneğimde default.asp kullandım, sizde olayı kavramak açısından bu ismi kullanın ilerde konuyu anladığınızda istediğiniz değişikliği rahatlıkla yapabilirsiniz ;)

Herşey bukadar basit arkadaşlar. Hemen wwwroot klasörümüzün altına deneme amaçlı bir aspUrl klasörü oluşturup içinede default.asp adında bir dosya oluşturuyor ve içine Response.Write “deneme” yazıyoruz. Tarayıcımızın adres satırına localhost/aspUrl yazdığımızda ekrana deneme yazısı çıkıyor. localhost/aspUrl/asdasdasd yazınca ne oluyor peki ? yine deneme yazısı çıkıyor. Nedenide hata olduğunda default.asp sayfamıza yönlen işlemini yapmamış olmamızdır. Buraya kadar sorun yoksa burdan sonrası yaratıcılığımıza kalıyor. Örneklerimize hemen geçelim.
Öncelikle adres satırında yazan yazıyı alıp işlememiz gerekiyor. Bunun için ben Request.QueryString komutunu kullanacağım.
Default.asp sayfamı aşşağıdaki gibi değiştirip olanları gözlüyoruz.
<%
gelenAdres = Request.QueryString
response.write gelenAdres
%>
Adres çubuğuna http://localhost/aspUrl/seo-deneme-linki yazdığımda sayfamızda 404;http://localhost:80/aspUrl/seo-deneme-linki şeklinde bir çıktı göreceğiz. Yaşasın diyoruz çünki herşey istediğimiz gibi ilerliyor. Şimdi biraz kod yazmaya başlıyoruz.
Default.asp sayfamızın içine aşşağıdaki kodları yazıyoruz.
<a href="hakkimda">hakkımda</a> <br />
<a href="seo">seo</a> <br />
<%
gelenAdres = Replace(Request.QueryString,"404;<a href="http://localhost:80/aspUrl/%22,">http://localhost:80/aspUrl/",</a>"") ' burada baştaki istemediğimiz kısımdan kurtuluyoruz ve elimize sadece istediğimiz kısım geliyor.
if gelenAdres="hakkimda" Then ' eğer adres satırına hakkimda yazarsak burası
call hakkimda
elseif gelenAdres="seo" Then ' eğer adres satırına seo yazarsak burası çalışıyor.
call seo
end if
Sub hakkimda
response.write "Burası Hakkımda"
End Sub
Sub seo
Response.Write "Seoooo Seooooo"
End Sub
%>
Bu kısımdan sonrası yaratıcılığa kalıyor, gelen adresi istediğiniz gibi parçalayıp işleyebilirsiniz. Mesela Kategori/UrunAdı şeklinde olan bir link yapısını nası yapabilirdik bunu inceleyelim.
Default.asp sayfamızın içine aşşağıdaki kodları yazıyoruz. Burda geçen Split fonksiyonunu daha önce şurada anlatmıştım.
<a href="Anakart/Islemci">Kategori / Ürün Adı</a> <br />
<%
gelenAdres = Replace(Request.QueryString,"404;http://localhost:80/aspUrl/","")
if not gelenAdres="" Then ' gelenAdres değişkenimiz boş değilse aşşağıdaki işlemleri yapıyoruzki, sayfamız hata vermesin.
gelenAdresParcala = Split(gelenAdres,"/") ' / karakterini split edip isteğimiz olan birinci ve ikinci bölümleri alıyoruz. (Anakart/Islemci)
response.write gelenAdresParcala(0) &"<br />" ' birinci dizide Anakart
response.Write gelenAdresParcala(1) ' ikinci dizide de Islemci geliyor.
end if
%>
İşte bu kadar basit arkadaşlar. Korkulacak en ufak bişiy bulunmuyor. Zaman bulursam Veritabanı işlemlerine bir örnekle bukonuyu sonlandıracağım. Anlamadığınız noktaları sorabilirsiniz. Herkese kolaylıklar dilerim.
Belki başlık biraz alakasız oldu ama aklıma bu olaya verecek Türkçe bir isim gelmedi. Bir veriyi düzenlemek için ya yeni bir pencere açtıyoruz veya olduğu sayfayı yeninden düzenleyip düzenleme formunu kullanıcıya sunuyoruz. Genellikle yorucu bir işlem olan bu olayı gösterecek olduğum şekilde rahatça ve oldukça şık bir şekilde halledebilirsiniz. Bir çok kullanım alanına sahip olan bu scriptin orjinal sayfası Burası fakat herzamanki gibi PHP :D burda ASP versiyonuna çevrilmiş hali var. Çalışır halini ise buradan indirebilirsiniz..
Default.asp
<script type="text/javascript" src="instantedit.js"></script><span id="id degeri" class="editText">icerik icerik icerik</span>
Update.asp
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
id=Request.QueryString("fieldname") ' gelen id miz..
veri=Request.QueryString("content") ' gelen verimiz..
'-------------------------- verileri veritabanına kayıt edeceksek
'Set Rs = Server.CreateObject("AdoDb.RecordSet")
'Sql = "Select * from Tablo_Adi" 'eğer koşul belirteceksek cümlemizi - Select * from Tablo_Adi where alan_adi = '"&id&"' - şeklinde düzenlememiz yeterli olacaktır.
'rs.open sql,baglantimiz,1,3
' rs.addnew
' rs("alanadi")=veri
' rs.Update
'----------------------------------------------------------------
Response.Write veri

Çok güzel bir menü navigasyonu olan bu script, orjinalinde PHP ile yapılmış. Bende ASP ye çevirdim. Kolay ve anşalır bir biçimde sizlerle paylaşmak istedim. Scriptin orjinal sayfası
http://labs.activespotlight.net/jQuery/menu_demo.html
Demo http://www.apostylee.com/scripts/FastFindMenu/
İndir http://www.apostylee.com/scripts/FastFindMenu/ffm.rar
Older Posts »