Asp İle İletişim Formu Yapımı [Beyaz Tahribat]
-
Default.asp
---------------
Hemen kodlara geçeyim. Yazının bu bölümünde herhangi bir asp kodlaması yok bu bölümde sadece formun tasarımı ve gönderilecek olan formun kodu ile ilgili bilgiler vericem.
<form action="Kaydet.asp" method="post">
<table width="50%" height="270" align="center" class="tablo" border="1" cellspacing="0" cellpadding="0">
<tr>
<td class="style1 style2">
<table width="97%" height="97%" align="center" border="0">
<tr>
<td width="25%">Adınız</td>
<td width="2%">:</td>
<td> <input type="text" name="ad" /></td>
</tr>
<tr>
<td width="25%">Soyadınız</td>
<td width="2%">:</td>
<td> <input type="text" name="soyad" /></td>
</tr>
<tr>
<td width="25%">E-Mail Adresiniz </td>
<td width="2%">:</td>
<td> <input type="text" name="email" /></td>
</tr>
<tr>
<td width="25%" valign="top">Mesajınız</td>
<td width="2%" valign="top">:</td>
<td> <textarea name="mesaj" cols="30" rows="5"></textarea></td>
</tr>
<tr>
<td width="25%" valign="top"> </td>
<td width="2%" valign="top"> </td>
<td> <input type="submit" value="Gönder" /></td>
</tr>
</table></td>
</tr>
</table>
</form>Kodların önemli olan kısımlarını turuncu renkle belirttim. Şimdi açıklamaya geçeyim. Formumuzu göndermemiz için öncelikle bir form açmamız gerekiyor. Bu formun action bölümüne formun gönderileceği adresi , method kısmınada post veya get yazmamız gerekiyor. Post methodu verilerin gönderilecek sayfaya form elementi olarak gönderilmesini , get methodu ise verilerin adres satırında string olarak gönderilmesini sağlar. Güvenlik açısından post methodunu seçmenizde fayda var.
Turuncu renkle belirttiğim inputlar ise kaydedilecek olan verilerin girildiği bölümlerdir. İnputların değerlerini text olarak belirttik çünkü göndereceğimiz değerler text tabanlı olacak. İnputların formun gönderildiği sayfada çağırılması için name bölümüne o inputa ait ismi veriyoruz. Textarea ise input alanlarından daha büyük metin alanları oluşturmamızı sağlar. Textareayıda diğer sayfada çağırabilmemiz için onun name alanına bir değer giriyoruz. En sondaki input ise formumuzu tetikleyecek olan buton. Dikkat ettiyseniz inputun type değeri submit yani gönderme butonu , value bölümüne ise butonun üzerinde görünecek olan yazıyı yazıyoruz.
Kaydet.asp
------------
Veritabanınızda olması gereken sütunlar alttaki resimdeki gibi olacak.
Veritabanınıza bu alanları eklediyseniz şimdi kodlamaya geçiyorum. Önceden veritabanı bağlantınızı yaptınız varsayıyorum.
<%
'// Formdan gelen verileri işimizi kolaylaştırması için değişkenlere bağlıyoruz. //
ad =Trim(request.form("ad"))
soyad =Trim(request.form("soyad"))
email =Trim(request.form("email"))
mesaj =Trim(request.form("mesaj"))
'// Bu değişkenlerin boş olup olmadıklarını kontrol ediyoruz , eğer boşsa geri gönderiyoruz.
if ad="" or soyad="" or email="" or mesaj="" or Len(ad)<1 or Len(soyad)<1 or Len(email)<1 or Len(mesaj)<1 then
Response.Redirect "Default.asp?DURUM=BOS_ALAN_BIRAKTINIZ_TUM_ALANLARI_DOLDURUN."
Response.End
End if
Set Kaydet = Conn.Execute("Insert into Mesajlar (adi,soyadi,email,mesaj) values ('"&ad&"','"&soyad&"','"&email&"','"&mesaj&"')")
Response.Redirect "Default.asp?DURUM=MESAJINIZ_BASARIYLA_ALINDI!"
%>Dikkat etmeniz gereken noktaları farklı renklerle belirttim. Kahverengi renkle gördüğünüz trim fonksiyonu gelen verinin başındaki ve sonundaki tüm boşlukları silmenize yarıyor. Kırmızı renkle belirttiğim request.form kodu ise formdan gelen veriyi çağırmamıza yarıyor. Biz formumuzu post methodu ile yolladığımız için bu şekilde çekiyoruz. Ancak get methodu ile yollasaydık request.querystring ile çekmemiz gerekiyordu.
Bir diğer fonksiyon olan kırmızıyla belirttiğim Len fonksiyonu. Bu fonksiyon ile gönderdiğimiz verinin uzunluğunu öğreniyoruz. Mantıksal sınama yapmak için çok iyi bir yöntem olan bu kod ile eğer formdan gelen verinin uzunluğu 1 harfden küçükse işlem yaptırmıyoruz. Hemen bir alt satırda olan Response.Redirect kodu ise tırnaklar arasında belirttiğimiz url ye yönlendirmemizi sağlıyor. Eğer formdan gelen verinin uzunluğu 1 karakterden kısa ise yönlendirmeyi yapıyor ve olası hataları önlemek için Response.End kodunu kullanıyorum. Bu kod sayesinde yönlendirme işleminden sonra gelen kodların yorumlanmasını engellemeyi sağlıyor. Sayfa bu kodun öncesine kadar çalıştırılıyor, geri kalan kısım çalıştırılmıyor.
Geri kalan kod ise gelen verilerin veritabanına kaydedilmesini gerçekleştiriyor. Bu kodun açıklamasını yapma gereği duymuyorum çünkü daha önce Asp ile Veritabanı İşlemleri yazımda bunu anlatmıştım.
Eğer uygulamayı indirmek istiyorsanız buraya tıklayın.
Bu yazıyı kendi sitemde daha az önce bitirdim. Tamamen benim tarafımdan yazılmıştır. İsterseniz formu indirip değiştirebilirsiniz.
-
eyw saolasın :) güzel döküman.Senide phpye geçiremedik bea he ?
-
oda olur abi merak etme :)
-
zamanında flash ile form hazırlayıp ona asp entegre etmiştim manyak olmuştu onu tekrar yapim paylaşim bende :)
-
eyw hocam uzun süredir girdiğim nadir işe yarar konulardan.| ASP gibisi varmı bea bırakın adamı phpye geçiştirmeyi :)
-
ha bu arada buna cache koruması lazım yoksa bombardıman yiyebilirz :)
-
JohnD bunu yazdı:
-----------------------------
ha bu arada buna cache koruması lazım yoksa bombardıman yiyebilirz :)
-----------------------------cace koruması yeriene javascript ile butona tıklanınca butonun etkisiz et
-
abi bu yazı sadece mantığı anlatmak için
yoksa farkındaysanız formdan gelen verileride temizlemiyorum.
-
if ad="" or soyad="" or email="" or mesaj="" or Len(ad)<1 or Len(soyad)<1 or Len(email)<1 or Len(mesaj)<1 then
niye bu kadar kastın ki ?
1 den küçükse zaten 0 dır 0= "", iki işlemde aynı şeyi yapyor.
bunun yerine js, ajax gibi görsel dillerle kontrol kullanıcı için daha rahattır. zaman kullanımı açısından js kontrolü daha kısa sürer.
-
el alışkanlığı.
tabiki öyle olabilir ama js veya ajax bilmediğim için ben böyle kullanıyorum :)
he piyasada o tarz kodlar var diyebilirsin ama onuda ben pek beğenmiyorum :)
-
güzel ona bide güvenlik kodu montele..