Tekil Mesaj gösterimi
Alt 17 Mart 2007, 20:42   #13
Çevrimdışı
telNET
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ASP Anlatımı (Dökümandır)




Hatırlarsanız, #include yoluyla sayfaya eklenen dosyanın içeriği ne ise aynen bu komutun olduğu yere yazılmış gibi olur, demiştik. sayfa1.asp’ye bakın; ve yukarıdaki kodu tam siteler.inc’in olduğu yerde düşünün. Şimdi siteler.inc, tek bir iş yapıyor: web isimli DSN’in verdiği bilgiler arasından Siteler tablosundan siteAdi ve siteNo sütunlarındaki bütün bilgileri çekiyor ve bunu HTML’in SELECT etiketinin içini doldurmakta kullanıyor. OPTION’ın nasıl yazıldığını hatırlıyorsunuz değil mi?
Şimdi siteler.inc’in içine bakabiliriz. Önce “SELECT siteAdi, siteNO FROM Siteler” ifadesini ele alalım. Bu, yukarıda sözünü ettiğimiz SQL dili ile, Windows’un ODBC arayüzüne vereceğimiz VBScript komutudur. Peki, bu edindiğimiz veriler nerede duruyor? ASP’nin çalıştığı Web Server’ın bulunduğu işletim sisteminin RAM’inde (veya sanal belleğinde) oluşturulan geçici bir tabloda duruyor. Veritabanındaki Siteler tablosunda birinci sütunda siteNo, ikinci sütunda ise siteAdi alanları var. Burada önce siteAdi’ni okutuyoruz; yani dizi değişkenin siteler(0) adlı birinci ögesi site türü adını, siteler(1) adlı ikinci ögesi ise bu türün numarasını tutuyor. Nitekim, bir Do döngüsü ile bu değerleri SELECT’in ögeleri olarak kullandığımızda önce OPTION’ın VALUE özelliğini siteNo, metnini ise siteAdi ile dolduruyoruz. Ve tabiî açtığımız veri bağlantısını kapatıyoruz: “siteler.close”.
Şimdi sayfa1.asp’nin ikinci haricî dosyası olan grafikler.inc’i yazalım:
<%
'Grafik durumuyla ilgili bilgileri Grafik tablosundan al.
SQLGRAF = "SELECT grafNO, grafDurum FROM Grafik"
Set conngraf = server.createobject("ADODB.Connection")
conngraf.open "web"
Set graf=conngraf.execute(SQLGRAF)
%>
<SELECT name="grafNO">
<% Do while Not graf.eof %>
<% 'Bu bilgilerle se&#231;enek kutusu yap. %>
<Option value = "<%= graf(0) %>"><%= graf(1) %></Option>
<%graf.movenext
loop%>
<% graf.close %>
</select>
Bu dosya &#252;zerinde uzun uzadıya durmaya gerek yok; yine aynı DSN’den, fakat bu kez veritabanıın Grafik tablosundan iki alandaki verileri &#231;ekiyoruz; Do d&#246;ng&#252;s&#252; ile yeni bir SELECT’in i&#231;ini dolduruyoruz. include dosyaları ile birlikte bu sayfa şu g&#246;r&#252;nt&#252;y&#252; veriyor:
sayfa1.asp’deki formun G&#246;nder d&#252;ğmesi tıklandığında bu bilgilerin GET metoduyla sayfa2.asp’ye g&#246;nderileceğini hatırlayacaksınız. O halde, bu HTML kodunu, sayfa2.htm adıyla kaydedin:
<%@ Language = VBscript %>
<%
Dim siteNO
Dim grafNO
Dim SQLSITEADI
Dim connsiteadi
Dim siteadi
siteNO=Request.Querystring("siteNO")
grafNO=Request.Querystring("grafNO")
SQLSITEADI="SELECT siteAdi FROM Siteler "
SQLSITEADI=SQLSITEADI & "WHERE siteNO= " & siteNO
set connsiteadi = server.createobject("ADODB.Connection")
connsiteadi.open "web"
set siteadi=connsiteadi.execute(SQLSITEADI)
%>
<HTML>
<HEAD>
<TITLE>Web Sitesi &#220;retim Merkezi</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY bgcolor
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
arkOrange text="white"><br><br><br><br><br><center>
<table width="250"><tr><td>
<font face="arial" size="6">Arzu ettiğiniz <%= siteadi(0) %> sitesini tasarlamaya hazırız.
<p>Bu sitenin kullanım amacı hakkında bilgi verir misiniz?</font>
<form action="icra.asp" method="get">
<input type="Hidden" name="siteNO" value="<%= siteNO %>">
<input type="Hidden" name="grafNO" value="<%= grafNO %>">
<% 'Bu bilgilerle T&#252;r tablosundan bilgi se&#231;. %>
<!--#include file="turler.inc"--> &nbsp;
<input type="Submit" value="G&#246;nder" align="LEFT">
</form></td></tr></table></center>
</BODY>
</HTML>
sayfa1.asp, ziyaret&#231;imizin Form’da yaptığı iki se&#231;imin değerini sayfa2.asp’ye g&#246;nderdiğinde, sayfa2.asp bunları otomatik olarak kullanamaz; bilgiler GET yoluyla geldiği i&#231;in QueryString değişkeninin i&#231;ine yazılacak bu bilgileri bizim kullanılır hale getirmemiz gerekir. Yukarıdaki kodun şu satırları bu işi yapıyor:
siteNO=Request.Querystring("siteNO")
grafNO=Request.Querystring("grafNO")
sayfa1.asp’nin g&#246;nderdiği siteNo ve grafNo değişkenlerinin değerleri (bu kez bu sayfanın aynı isimdeki) değişkenlerine değer olarak atanıyor. sayfa2.asp’de yapacağımız veri işlemlerinde bu değerleri &#246;l&#231;&#252;t olarak kullanacağız:
SQLSITEADI="SELECT siteAdi FROM Siteler "
SQLSITEADI=SQLSITEADI & "WHERE siteNO= " & siteNO
Burada aslında tek sorgu deyimi oluşturduğumuz halde, derdimizi neden iki ayrı satırda anlatıyoruz? Daha &#246;nce yazdığımız sorgu deyimlerine bakın? T&#252;m&#252; &#231;ift tırnak i&#231;inde değil mi? Peki, burada siteNo değişkenini tırnak i&#231;ine alırsak ne olur? Değişken, değişken olmaktan &#231;ıkar; metin olur; oysa biz burada siteNo değişkeninin vereceği değeri kullanmak istiyoruz. Bu yolla veritabanından &#231;ekeceğimiz değeri hemen aşağıda metnin i&#231;inde kullanacağız:
Arzu ettiğiniz <%= siteadi(0) %> sitesini tasarlamaya hazırız.
Sadece bir değer istediğimiz ve bu değiri ihtiyacımıza uygun se&#231;tiğimiz i&#231;in veri okutma işini d&#246;ng&#252;yle yapmıyoruz bu kez; okunan ilk değeri Response.Write metodunun kısaltmasıyla, sayfaya g&#246;nderiyoruz. Bu arada ziyaret&#231;imizden ek bilgi almaya devam ediyoruz; yeni bir haric&#238; dosya ile bu kez size tasarlatmak istedikleri sitenin t&#252;r&#252;n&#252; soruyoruz; bu bilgileri ise turler.inc sağlıyor:
<%
SQLTUR="SELECT turNO, turAdi FROM Tur"
set conntur = server.createobject("ADODB.Connection")
conntur.open "web"
set tur=conntur.execute(SQLTUR)
%>
<SELECT NAME="turNO">
<% Do While not tur.eof %>
<Option value = "<%= tur(0) %>"><%= tur(1) %></Option>
<%tur.movenext
Loop%>
<% tur.close %>
</select>
Bu kodun irdelenmesine gerek yok; Tur tablosundan turNo ve turAdi alanlarındaki değerleri alıyoruz ve OPTION etiketinin i&#231;ini dolduruyoruz. Devam etmeden &#246;nce sayfa2.asp’de dikkatinizi &#231;ekmiş olması gereken şu iki satıra d&#246;nelim:
<input type="Hidden" name="siteNO" value="<%= siteNO %>">
<input type="Hidden" name="grafNO" value="<%= grafNO %>">
HTML’den hatırlayacaksınız, Form’un i&#231;inde Server’a “gizli” (HIDDEN) t&#252;r&#252; değişken ve değer g&#246;nderebiliriz. Buradaki “gizli” kelimesi sizi aldatmasın; Form bir HTML &#246;gesidir ve ziyaret&#231;i Browser’ının kaynağı g&#246;r&#252;nt&#252;leme aracı vasıtasıyla gizli-a&#231;ık herşeyi g&#246;rebilir. Buradaki gizlilik sadece bu değişkenlerin sayfada g&#246;r&#252;nt&#252;lenmemesinden ibarettir. Bu iki s&#246;z&#252;m-ona gizli değişkene, taa kodumuzun başında elde ettiğimiz siteNo değişkeni ile biraz &#246;nce veritabanından &#231;ektiğimiz grafNo değişkenlerini atıyoruz. (Merak etmeyin! Hepsini daha sonra kullanacağız.)
Ve bu kullanımı, Form’umumuzun ACTION &#246;zelliğinde adı yazılı olan icra.asp yapacak. Şu uzunca kodu bu isimle kaydedin:
<%@ Language = VBscript %>
<%
Dim siteNO, grafNO, turNO, randNO
Dim SQLSITETUTAR, SQLGRAFTUTAR, SQLTURTUTAR
Dim bedel, turkatsayi, grafkatsayi, sitekatsayi
siteNO=Request.Querystring("siteNO")
grafNO=Request.Querystring("grafNO")
turNO=Request.Querystring("turNO")
randNO=Request.Querystring("randNO")

SQLSITETUTAR="SELECT siteAdi, olcRayic FROM Siteler, Olcu "
SQLSITETUTAR=SQLSITETUTAR & "WHERE Siteler.olcNO = Olcu.olcNO and siteNO=" & siteNO

Set conn = server.createobject("ADODB.Connection")
conn.open "web"
Set sitetutar=conn.execute(SQLSITETUTAR)
siteadi=sitetutar(0)
sitekatsayi=sitetutar(1)

SQLGRAFTUTAR="SELECT grafRayic, grafDurum FROM Grafik "
SQLGRAFTUTAR=SQLGRAFTUTAR & "WHERE grafNO=" & grafNO

Set graftutar=conn.execute(SQLGRAFTUTAR)
grafkatsayi=graftutar(0)
grafdurum=graftutar(1)

SQLTURTUTAR="SELECT turRayic, turAdi FROM Tur "
SQLTURTUTAR=SQLTURTUTAR & "WHERE turNO=" & turNO

set turtutar=conn.execute(SQLTURTUTAR)
turkatsayi=turtutar(0)
turadi=turtutar(1)
conn.close
SET conn = Nothing
bedel = 100 * turkatsayi * grafkatsayi * sitekatsayi
%>

<HTML>
<HEAD>
<TITLE>Web Tasarim Merkezi</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>

<BODY bgcolor
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
arkOrange text="white"><br><br><br><br><br><center>
<table width="250"><tr><td>
<font face="arial" size="6">&#199;ok g&#252;zel!<p>Grafik malzemesi <%= grafdurum %> olan <%= siteadi %> ve <%= turadi %> ama&#231;lı bir Web sitesi, i&#231;in &#252;cret US$<%= bedel %> olacaktır.</font></td></tr></table><br><br><br><br>
<table width="500"><tr><td width="150" valign="top"><font face="arial" size="5">İlk g&#246;r&#252;şme i&#231;in iki saatlik randevu almanız gerekir.</font>
<p><font face="arial" size="3">(A&#231;ık olan randevu tarihi ve saatinden beğendiğinizi tıklayınız)</font></td>
<td width="50"></td>
<td width="300" valign="top"><!--#include file="rand.inc"--></td></tr></table>
</center>
</BODY>
</HTML>
Adı icra.asp olduğuna g&#246;re, bu sayfa &#231;ok iş icra ediyor olsa gerek! Ger&#231;ekten de bu sayfa, daha &#246;nceki sayfalarda elde ettiğimiz b&#252;t&#252;n bilgileri kullanarak ziyaret&#231;i sitesini ka&#231; paraya yapacağımızı hesap edecektir. icra.asp, &#246;nce Querystring’den alacağı bilgileri, kendi işine yarayacak değişkenlere yerleştirecek ve bunlarla &#252;&#231; katsayı hesaplayacak ve bu katsayıları kullanarak m&#252;şterinin sitesi i&#231;in bir bedel &#231;ıkartacak (“bedel = 100 * turkatsayi * grafkatsayi * sitekatsayi”). Sonra “bedel” değişkeninin i&#231;indeki değeri m&#252;şteriye Dolar olarak bildirecek (Bedel form&#252;l&#252;nde 100 yerine mesela 600000 rakamını, veya bu işi yaptığınız andaki Dolar’ın TL cinsinden kurunu g&#246;steren rakamı, kullanarak, fiyatı Dolar yerine TL olarak da bildirebilirsiniz). icra.asp daha sonra rand.inc’in yardımıyla veritabanından boş saatlerimizi se&#231;erek m&#252;şteriye randevu alması i&#231;in sunacaktır. rand.inc, veritabanımızın Randevu tablosundan serbest zaman dilimlerini okumak ve elde edeceği sonucu icra.asp programına vermektedir. Şu kodu rand.inc adıyla kaydedelim:
<%
SQLRAND="SELECT randNO, randZaman FROM Randevu WHERE randDurum = 'SERBEST' ORDER BY randZaman"
Set connrand = server.createobject("ADODB.Connection")
connrand.open "web"
Set rand=connrand.execute(SQLRAND)
%>
<font face="arial" size="5">
<% do while not rand.eof
%>
<a href="rezerv.asp?siteNO=<%= siteNO %>&grafNO=<%= grafNO %>&turNO=<%= turNO %>&randNO=<%= rand(0) %>&randRayic=<%= bedel %>"><%= rand(1) %></a><br>
<%rand.movenext
loop%>
</font>
<% connrand.close
SET connrand = Nothing
%>
Bu haric&#238; dosyamız, &#246;ncekilerden farklı: bir OPTION etiketini değil; fakat bir Anchor etiketinin i&#231;ini dolduruyor. Bu etikete dikkat edersek, HREF &#246;zelliğinin değeri olan rezerv.asp’ye aslında bir &#231;ok bilginin g&#246;nderilmesine de yaradımcı oluyor, Herhangi bir ziyaret&#231;inin se&#231;imleri sonucu oluşacak bir &#246;rnek şu olabilirdi:
<a href="rezerv.asp?siteNO=1&grafNO=1&turNO=1&randNO= 10&randRayic=500"> 05.05.2000 14:00:00</a><br>
Bu, rezervasyon yaptıracak olan sayfaya, siteNo, grafNo, randNo ve biraz &#246;nce hesapladığımız randRayic değişkenlerini g&#246;nderiyor. Bu sayfa ise, aşağıdaki kodlarla kaydedeceğimiz rezerv.asp:
<%@ Language = VBscript %>
<%
Dim siteNO, grafNO, turNO, randNO, randRayic
Dim SQLZAMAN, connzaman, zaman, randzaman
siteNO=Request.Querystring("siteNO")
grafNO=Request.Querystring("grafNO")
turNO=Request.Querystring("turNO")
randNO=Request.Querystring("randNO")
randRayic=Request.Querystring("randRayic")

SQLZAMAN="SELECT randZaman FROM randevu "
SQLZAMAN=SQLZAMAN & "WHERE randNO=" & randNO

Set connzaman = server.createobject("ADODB.Connection")
connzaman.open "Web"
Set zaman=connzaman.execute(SQLZAMAN)
randzaman=zaman(0)
connzaman.close
%>
<HTML>
<HEAD>
<TITLE>Randevu Defteri</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>

<BODY bgcolor
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
arkOrange text="white"><br><br><br><br><br><center>
<table width="250"><tr><td>
<font face="arial" size="6">L&#252;tfen elverişli randevu zamanı olan<font color="blue"><%= randzaman %></font> i&#231;in rezervasyon yapmak &#252;zere gerekli bilgileri giriniz.</font>
<p><font face="arial" size="4">
<form action="guncelle.asp" method="get">
<input type="Hidden" name="siteNO" value="<%= siteNO %>">
<input type="Hidden" name="grafNO" value="<%= grafNO %>">
<input type="Hidden" name="turNO" value="<%= turNO %>">
<input type="Hidden" name="randNO" value="<%= randNO %>">
<input type="Hidden" name="randRayic" value="<%= randRayic %>">
<input type="Text" name="adi" size="20"><i>Adınız</i>
<p><input type="Text" name="soyadi" size="20"><i>Soyadınız </i>
<p><input type="Text" name="email" size="20"> <i>e-adresiniz</i>
<p><input type="Submit" value="G&#246;nder">
</form>
</td></tr></table>
<p><p></center>
</BODY>
</HTML>
Ger&#231;i bu sayfanın sadece ziyaret&#231;iye se&#231;tiği randevu tarih ve saatini bildirdiğini ve ziyaret&#231;iden bize adını, soyadını ve elektronik mektup adresini vermesi istediğini g&#246;receksiniz, ama ger&#231;ekte bu sayfa şu ana kadar oluşturduğumuz veri k&#252;mesini veritabanına yazmak &#252;zere hazırlık yapmaktadır. Gizlenmiş (HIDDEN) değişkenlerin g&#246;revi bu.
Derlenen bu değişkenlerin t&#252;m&#252;, ziyaret&#231;inin gireceği bilgiler dahil, guncelle.asp’ye g&#246;nderilecek. O halde o kodu yazalım:
<%@ Language = VBscript %>
<%
Dim siteNO, grafNO, TurNO, randNO, randRayic, adi, soyadi, email
Dim SQLINSERT, connupdate, SQLUPDATE, URL, simdi
siteNO=Request.Querystring("siteNO")
grafNO=Request.Querystring("grafNO")
turNO=Request.Querystring("turNO")
randNO=Request.Querystring("randNO")
randRayic=Request.Querystring("randRayic")
adi=Request.Querystring("adi")
soyadi=Request.Querystring("soyadi")
email=Request.Querystring("email")

SQLINSERT="INSERT INTO Musteriler (adi, soyadi, email, siteNO, grafNO, turNO) "
SQLINSERT=SQLINSERT & "VALUES ("
SQLINSERT=SQLINSERT & "'" & adi & "', "
SQLINSERT=SQLINSERT & "'" & soyadi & "', "
SQLINSERT=SQLINSERT & "'" & email & "', "
SQLINSERT=SQLINSERT & siteNO & ", "
SQLINSERT=SQLINSERT & grafNO & ", "
SQLINSERT=SQLINSERT & turNO & ") "

set connupdate = server.createobject("ADODB.Connection")
connupdate.open "web"
connupdate.execute(SQLINSERT)
simdi = FormatDateTime(now,vbLongDateTime)

SQLUPDATE="UPDATE Randevu SET "
SQLUPDATE=SQLUPDATE & "email = '" & email & "', "
SQLUPDATE=SQLUPDATE & "randNezaman = '" & simdi & "', "
SQLUPDATE=SQLUPDATE & "randDurum = 'DOLU', "
SQLUPDATE=SQLUPDATE & "randRayic = " & randRayic
SQLUPDATE=SQLUPDATE & " WHERE randNO =" & randNO

connupdate.execute(SQLUPDATE)
connupdate.close
SET connupdate = Nothing

URL="son.asp?adi=" & adi
Response.Redirect (URL)
%>
Programı &#231;alıştırdıysanız, guncelle.asp’nin Browser’ın y&#252;z&#252;n&#252; bile g&#246;rmediğini farketmiş olmalısınız; Yukarıdaki kodun, ziyaret&#231;iye kendi yerine başka bir sayfayı g&#246;nderdiğini nereden anlıyoruz? En sondaki “Response.Redirect” komutundan. Bu komut ziyaret&#231;iye, son.asp sayfasını yolluyor. Fakat bu sayfaya ge&#231;meden &#246;nce yaptığımız g&#252;ncelleme işleminin &#252;zerinde duralım. Bu programda uzunca bir SQL INSERT deyimi hazırlıyoruz:
INSERT INTO Musteriler (adi, soyadi, email, siteNO, grafNO, turNO) VALUES (adi, soyadi, email, siteNO, grafNO, turNO)
Daha &#246;nce SQL dilinin SELECT deyimini &#246;ğrenmiştik. INSERT de bir veritabanına veri ekleme işini yapan SQL deyimidir. Deyimin INTO b&#246;l&#252;m&#252;ne tablonun adını ve hangi alanların bulunduğunu; VALUES b&#246;l&#252;m&#252;ne ise bu alanlara atayacağımız değerleri yazarız. Bizim programımızda değerler, değişkenlerden alınacağı i&#231;in dikkatli bir yazma işlemi gerekiyor. Bu y&#252;zden değişken adları ile & (ve) işareti ve virg&#252;l&#252; birbirinden kolayca ayırt etmek i&#231;in uzunda bir yazma y&#246;ntemi kullanıyoruz. Hazırladığımız bu deyimle yeni m&#252;şteriyi m&#252;şteriler tablosuna ekliyoruz. Programımızda bir de SQL UPDATE deyimi var. Bu deyimle, mevcut Randevu tablomuzda m&#252;şterinin se&#231;tiği zaman aralığına ait girdiyi, SERBEST’ten DOLU’ya &#231;eviriyoruz ve bu zamanı kime ayırdığımızı, bu g&#246;r&#252;şmenin saat &#252;creti olan rayici tabloya işliyoruz. Bu ama&#231;la oluşturduğumuz SQL UPDATE deyimi ş&#246;yle g&#246;sterilebilir:
UPDATE Randevu SET email = "email", randNezaman = "simdi", randDurum = "DOLU", randRayic = "randRayic" WHERE randNO = "randNO"
SQL’in UPDATE deyiminin de b&#246;l&#252;mleri vardır. SET b&#246;l&#252;m&#252;nde hangi alana ne değeri gireceğimizi belirtiriz. Normal bir SQL deyiminde alan adının kanşısına bu alana yazılacak değer girerken, burada olduğu gibi değerleri değişkenlerden de alabiliriz. Burada g&#246;sterilen kelimeler değişken adı ise tırnak dışında yazılmalıdır. Bunu sağlamak ve aralarına gereken virg&#252;lleri koyabilmek i&#231;in, yine uzunca bir deyim yazıyoruz.
Şimdi, aşağıdaki kodu son.asp adıyla kaydedelim:
<%@ Language = VBscript %>
<%
adi=Request.Querystring("adi")
%>
<html>
<head>
<title>Randevunuz Kesinlesti</title>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</head>
<BODY bgcolor
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
arkOrange text="white">
<br><br><br><br><br><center>
<table width="250">
<tr><td><font face="arial" size="6"><%= adi %>, sizinle verimli bir işbirliği yapacağımızdan eminiz. &#199;ok teşekk&#252;rler. G&#246;r&#252;şmek &#252;zere.&lt
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
font></td></tr>
</table>
</BODY>
</html>
Bu sayfa, ziyaret&#231;imize bir &#246;nceki sayfada kaydettiğimiz adi değişkenin değeri alarak, yani m&#252;şteriye adıyla hitabediyor ve randevusunun kesinleştiğini bildiriyor; ve veri-y&#246;nlendirmeli Web uygulamamızın da sonu oluyor.
İşte hepsi bu. Ziyaret&#231;imizden veri aldık; veritabanından veri &#231;ektik; bunları sayfalarımızda kullandık ve veritabanına işledik. Fakat bu ASP programlarında, veritabanıyla ilgili unsurların dikkatten ka&#231;maması i&#231;in, g&#252;venlikle ilgili &#246;nlemler alınmadığına, ziyaret&#231;inin girdiği değerlerin denetlenmediğine dikkat etmiş olmalısınız. Normal olarak Internet’e koyacağımız ASP programlarımızda g&#252;venlikle ilgili b&#246;l&#252;mler olması gerekir. Bu ve diğer program-konulu unsurları son b&#246;l&#252;mde ele alacağız.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet reklamver