<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Program market</title>
	<atom:link href="http://yukle.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://yukle.wordpress.com</link>
	<description></description>
	<lastBuildDate>Sun, 01 Apr 2007 14:32:23 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>tr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='yukle.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/3ca638ce10d5d3529edd01af93a91e55?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Program market</title>
		<link>http://yukle.wordpress.com</link>
	</image>
			<item>
		<title>Joomlaboard da video yayınlama</title>
		<link>http://yukle.wordpress.com/2007/04/01/joomlaboard-da-video-yayinlama/</link>
		<comments>http://yukle.wordpress.com/2007/04/01/joomlaboard-da-video-yayinlama/#comments</comments>
		<pubDate>Sun, 01 Apr 2007 14:32:23 +0000</pubDate>
		<dc:creator>Super Admin</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Joomla Dersanesi]]></category>
		<category><![CDATA[Joomla!]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Web Master Kaynakları]]></category>

		<guid isPermaLink="false">http://yukle.wordpress.com/2007/04/01/joomlaboard-da-video-yayinlama/</guid>
		<description><![CDATA[components icindeki com_joomlaboard ın icindeki smile.class.php dosyasını acıp baştaki
quote// ve url// gibi yazıların arasına aşagıdaki kodu yapıştırıyoruz kaydediyoruz bu kadar.
KOD:


Code:



//video

$sb_message_txt = preg_replace("/\[video\](.*?)\[\/video\]/si","&#60;object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http:\/\/fpdownload.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=6,0,0,0\" width=\"400\" height=\"325\" align=\"middle\"&#62;&#60;param name=\"movie\" value=\"$1\"
&#62;&#60;embed src=\"$1\" quality=\"high\" bgcolor=\"#ffffff\" width=\"425\" height=\"350\" align=\"
middle\" allowScriptAccess=\"sameDomain\" type=\"application/x-shockwave-flash\" pluginspage=\"http:
\/\/www.macromedia.com\/go\/getflashplayer\" \/&#62;&#60;\/object&#62;",$sb_message_txt);






sonra da forumda mesaj yazarken artık:
http://www.youtube.com/watch?v=8lWefkq3FzE adresli video icin
adresi asagıdaki gibi düzenliyorsun.ve asagıdaki gibi kod kullanıyorsun.
[video]http://www.youtube.com/v/8lWefkq3FzE[/video]
KAYNAK 
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=142&subd=yukle&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>components icindeki com_joomlaboard ın icindeki smile.class.php dosyasını acıp baştaki<br />
quote// ve url// gibi yazıların arasına aşagıdaki kodu yapıştırıyoruz kaydediyoruz bu kadar.</p>
<p>KOD:</p>
<table align="center" border="0" cellpadding="3" cellspacing="1" width="90%">
<tr>
<td><strong>Code:</strong></td>
</tr>
<tr>
<td>
<pre><code><font color="#000000"><font color="#ff8000">//video

</font><font color="#0000bb">$sb_message_txt </font><font color="#007700">= </font><font color="#0000bb">preg_replace</font><font color="#007700">(</font><font color="#dd0000">"/\[video\](.*?)\[\/video\]/si"</font><font color="#007700">,</font><font color="#dd0000">"&lt;object classid=\"</font><font color="#0000bb">clsid</font><font color="#007700">:</font><font color="#0000bb">d27cdb6e</font><font color="#007700">-</font><font color="#0000bb">ae6d</font><font color="#007700">-</font><font color="#0000bb">11cf</font><font color="#007700">-</font><font color="#0000bb">96b8</font><font color="#007700">-</font><font color="#0000bb">444553540000\</font><font color="#dd0000">" codebase=\"</font><font color="#0000bb">http</font><font color="#007700">:</font><font color="#0000bb">\</font><font color="#007700">/</font><font color="#0000bb">\</font><font color="#007700">/</font><font color="#0000bb">fpdownload</font><font color="#007700">.</font><font color="#0000bb">macromedia</font><font color="#007700">.</font><font color="#0000bb">com\</font><font color="#007700">/</font><font color="#0000bb">pub\</font><font color="#007700">/</font><font color="#0000bb">shockwave\</font><font color="#007700">/</font><font color="#0000bb">cabs\</font><font color="#007700">/</font><font color="#0000bb">flash\</font><font color="#007700">/</font><font color="#0000bb">swflash</font><font color="#007700">.</font><font color="#0000bb">cab</font><font color="#ff8000">#version=6,0,0,0\" width=\"400\" height=\"325\" align=\"middle\"&gt;&lt;param name=\"movie\" value=\"$1\"
</font><font color="#007700">&gt;&lt;</font><font color="#0000bb">embed src</font><font color="#007700">=</font><font color="#0000bb">\</font><font color="#dd0000">"$1\" </font><font color="#0000bb">quality</font><font color="#007700">=</font><font color="#0000bb">\</font><font color="#dd0000">"high\" </font><font color="#0000bb">bgcolor</font><font color="#007700">=</font><font color="#0000bb">\</font><font color="#dd0000">"#ffffff\" </font><font color="#0000bb">width</font><font color="#007700">=</font><font color="#0000bb">\</font><font color="#dd0000">"425\" </font><font color="#0000bb">height</font><font color="#007700">=</font><font color="#0000bb">\</font><font color="#dd0000">"350\" </font><font color="#0000bb">align</font><font color="#007700">=</font><font color="#0000bb">\</font><font color="#dd0000">"
middle\" </font><font color="#0000bb">allowScriptAccess</font><font color="#007700">=</font><font color="#0000bb">\</font><font color="#dd0000">"sameDomain\" </font><font color="#0000bb">type</font><font color="#007700">=</font><font color="#0000bb">\</font><font color="#dd0000">"application/x-shockwave-flash\" </font><font color="#0000bb">pluginspage</font><font color="#007700">=</font><font color="#0000bb">\</font><font color="#dd0000">"http:
\/\/www.macromedia.com\/go\/getflashplayer\" </font><font color="#0000bb">\</font><font color="#007700">/&gt;&lt;</font><font color="#0000bb">\</font><font color="#007700">/</font><font color="#0000bb">object</font><font color="#007700">&gt;</font><font color="#dd0000">",$sb_message_txt);
</font>
</font>
</code></pre>
</td>
</tr>
</table>
<p>sonra da forumda mesaj yazarken artık:</p>
<p><a href="http://www.youtube.com/watch?v=8lWefkq3FzE" target="_new">http://www.youtube.com/watch?v=8lWefkq3FzE</a> adresli video icin<br />
adresi asagıdaki gibi düzenliyorsun.ve asagıdaki gibi kod kullanıyorsun.<br />
[video]http://www.youtube.com/v/8lWefkq3FzE[/video]</p>
<p><a href="http://tbkdizayn.com/component/option,com_joomlaboard/Itemid,27/func,view/id,37/catid,4/" target="_blank">KAYNAK </a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yukle.wordpress.com/142/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yukle.wordpress.com/142/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yukle.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yukle.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yukle.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yukle.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yukle.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yukle.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yukle.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yukle.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yukle.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yukle.wordpress.com/142/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=142&subd=yukle&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yukle.wordpress.com/2007/04/01/joomlaboard-da-video-yayinlama/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/498ea01ee88beecb59be73ea42c1f3c6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Administrator</media:title>
		</media:content>
	</item>
		<item>
		<title>50 adet flash saat bedeva</title>
		<link>http://yukle.wordpress.com/2007/04/01/50-adet-flash-saat-bedeva/</link>
		<comments>http://yukle.wordpress.com/2007/04/01/50-adet-flash-saat-bedeva/#comments</comments>
		<pubDate>Sun, 01 Apr 2007 13:40:32 +0000</pubDate>
		<dc:creator>Super Admin</dc:creator>
				<category><![CDATA[Web Master Kaynakları]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://yukle.wordpress.com/2007/04/01/50-adet-flash-saat-bedeva/</guid>
		<description><![CDATA[50 adet flash saat bedeva ve reklamsız
Demo
İndir
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=141&subd=yukle&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>50 adet flash saat bedeva ve reklamsız<br />
<a href="http://tbkdizayn.com/wmk/flash/indexsaat.htm" target="_blank">Demo</a><br />
<a href="http://tbkdizayn.com/component/option,com_remository/Itemid,33/func,fileinfo/id,4/" target="_blank">İndir</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yukle.wordpress.com/141/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yukle.wordpress.com/141/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yukle.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yukle.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yukle.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yukle.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yukle.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yukle.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yukle.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yukle.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yukle.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yukle.wordpress.com/141/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=141&subd=yukle&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yukle.wordpress.com/2007/04/01/50-adet-flash-saat-bedeva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/498ea01ee88beecb59be73ea42c1f3c6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Administrator</media:title>
		</media:content>
	</item>
		<item>
		<title>joomla tema kaynakları</title>
		<link>http://yukle.wordpress.com/2007/03/29/joomla-tema-kaynaklari/</link>
		<comments>http://yukle.wordpress.com/2007/03/29/joomla-tema-kaynaklari/#comments</comments>
		<pubDate>Thu, 29 Mar 2007 19:49:26 +0000</pubDate>
		<dc:creator>Super Admin</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Joomla!]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Templates (tema) joomla]]></category>

		<guid isPermaLink="false">http://yukle.wordpress.com/2007/03/29/joomla-tema-kaynaklari/</guid>
		<description><![CDATA[www.pixelthemes.com
 http://tema.mambo.gen.tr
www.joomla.org
www.opensourcematters.com
www.joomla-templates.com/
www.joomlart.com/
www.joomlashack.com/
www.joomplates.com/
www.joomladirectory.co.uk/
www.joomladesigns.co.uk/
www.joomlahut.com
www.mamboteam.com/
www.joomlasolutions.com
www.webraydian.com
www.joomlaawards.com
http://templates.joomlaya.com/
www.joomlashack.com/
www.cmsdesign.it/index.php?categoryid=7&#38;s=&#38;
http://showcase.mambosolutions.com/free/
www.mambohut.com/templates_gallery/
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=140&subd=yukle&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://www.pixelthemes.com/" target="_blank">www.pixelthemes.com</a><a href="http://www.pixelthemes.com/" target="_blank"><br />
</a><a href="http://tema.mambo.gen.tr/" target="_blank"> http://tema.mambo.gen.tr</a><br />
<a href="http://www.joomla.org/" target="_blank">www.joomla.org</a><br />
<a href="http://www.opensourcematters.com/" target="_blank">www.opensourcematters.com</a><br />
<a href="http://www.joomla-templates.com/" target="_blank">www.joomla-templates.com/</a><br />
<a href="http://www.joomlart.com/" target="_blank">www.joomlart.com/</a><br />
<a href="http://www.joomlashack.com/" target="_blank">www.joomlashack.com/</a><br />
<a href="http://www.joomplates.com/" target="_blank">www.joomplates.com/</a><br />
<a href="http://www.joomladirectory.co.uk/" target="_blank">www.joomladirectory.co.uk/</a><br />
<a href="http://www.joomladesigns.co.uk/" target="_blank">www.joomladesigns.co.uk/</a><br />
<a href="http://www.joomlahut.com/" target="_blank">www.joomlahut.com</a><br />
<a href="http://www.mamboteam.com/" target="_blank">www.mamboteam.com/</a><br />
<a href="http://www.joomlasolutions.com/" target="_blank">www.joomlasolutions.com</a><br />
<a href="http://www.webraydian.com/" target="_blank">www.webraydian.com</a><br />
<a href="http://templates.joomlaya.com/" target="_blank">www.joomlaawards.com<br />
http://templates.joomlaya.com/</a><br />
<a href="http://www.joomlashack.com/" target="_blank">www.joomlashack.com/</a><br />
<a href="http://www.cmsdesign.it/index.php?categoryid=7&amp;s=&amp;" target="_blank">www.cmsdesign.it/index.php?categoryid=7&amp;s=&amp;</a><br />
<a href="http://showcase.mambosolutions.com/free/" target="_blank">http://showcase.mambosolutions.com/free/</a><br />
<a href="http://www.mambohut.com/templates_gallery/" target="_blank">www.mambohut.com/templates_gallery/</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yukle.wordpress.com/140/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yukle.wordpress.com/140/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yukle.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yukle.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yukle.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yukle.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yukle.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yukle.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yukle.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yukle.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yukle.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yukle.wordpress.com/140/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=140&subd=yukle&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yukle.wordpress.com/2007/03/29/joomla-tema-kaynaklari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/498ea01ee88beecb59be73ea42c1f3c6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Administrator</media:title>
		</media:content>
	</item>
		<item>
		<title>sNews TR</title>
		<link>http://yukle.wordpress.com/2007/03/23/snews-tr/</link>
		<comments>http://yukle.wordpress.com/2007/03/23/snews-tr/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 19:40:07 +0000</pubDate>
		<dc:creator>Super Admin</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Hazır Scriptler - PHP]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Web Master Kaynakları]]></category>
		<category><![CDATA[haberler]]></category>

		<guid isPermaLink="false">http://yukle.wordpress.com/2007/03/23/snews-tr/</guid>
		<description><![CDATA[sNews Türkiye ayağını oluşturma çalışmaları büyük bir hızla başlamış. Öğrendiğimiz kadarı ile öncelikli olarak sNews türkçe olarak cevrilecek ve destek sitesi oluşturulacak test yayınına başlanılmış bile ziyaret etmenizde fayda vardiye düşünüyoruz. sNews Türkiye  Bu kullanışlı ve basit scripti bize gerektiği gibi kazandırabilirlerse çok sevineceğiz. Peki ama bu sNews de neyin nesidir diyenleriniz olabilir ve şöyle [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=139&subd=yukle&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img src="http://www.solucija.com/images/snewslogo.gif" align="left" height="51" width="167" />sNews Türkiye ayağını oluşturma çalışmaları büyük bir hızla başlamış. Öğrendiğimiz kadarı ile öncelikli olarak sNews türkçe olarak cevrilecek ve destek sitesi oluşturulacak test yayınına başlanılmış bile ziyaret etmenizde fayda vardiye düşünüyoruz. <a href="http://snews.tbkdizayn.com/">sNews Türkiye  </a>Bu kullanışlı ve basit scripti bize gerektiği gibi kazandırabilirlerse çok sevineceğiz. Peki ama bu sNews de neyin nesidir diyenleriniz olabilir ve şöyle kısaca açıklaması yapılabilir ;</p>
<p><span id="more-139"></span><span class="left_articles"><strong>sNews</strong> bir <strong>CMS</strong>(Content Management Systems)&#8217;dir.Yani internet üzerinden sayfa oluşturmak ve yönetmek için kullanılan sistemlerden bir tanesidir.Kullanımı çok kolay dır bir kaç dosya ile yapabildiklerinize şaşıracaksınız.Ancak çok ileri düzelde siteler beklemeyin ama <strong>Cms</strong> sistemlerin en kolayı ve esneği olduğunu söliyebilirim. bu kadar açıklama şimdilik yeter sanırım.</span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yukle.wordpress.com/139/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yukle.wordpress.com/139/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yukle.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yukle.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yukle.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yukle.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yukle.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yukle.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yukle.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yukle.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yukle.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yukle.wordpress.com/139/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=139&subd=yukle&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yukle.wordpress.com/2007/03/23/snews-tr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/498ea01ee88beecb59be73ea42c1f3c6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Administrator</media:title>
		</media:content>

		<media:content url="http://www.solucija.com/images/snewslogo.gif" medium="image" />
	</item>
		<item>
		<title>camfrog sonsürüm 3.9 video chat</title>
		<link>http://yukle.wordpress.com/2007/03/18/camfrog-sonsurum-39-video-chat/</link>
		<comments>http://yukle.wordpress.com/2007/03/18/camfrog-sonsurum-39-video-chat/#comments</comments>
		<pubDate>Sun, 18 Mar 2007 21:27:06 +0000</pubDate>
		<dc:creator>Super Admin</dc:creator>
				<category><![CDATA[Diğer]]></category>
		<category><![CDATA[Gerekli Programlar]]></category>
		<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[Sohbet]]></category>
		<category><![CDATA[haberler]]></category>
		<category><![CDATA[İnternet Araçları]]></category>

		<guid isPermaLink="false">http://yukle.wordpress.com/2007/03/18/camfrog-sonsurum-39-video-chat/</guid>
		<description><![CDATA[internette yaygın olarak kullanılan bu vide chat programının son sürümünü deneyin Download link 
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=138&subd=yukle&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img src="http://www.programlar.org/resimler/Camfrog.video.chat.3.5.jpg" align="right" height="95" width="127" />internette yaygın olarak kullanılan bu vide chat programının son sürümünü deneyin<img src="http://camfrogshop.com/portal/images/camfrog.gif" align="right" height="68" width="68" /> <a href="http://www.camfrogshop.com/portal/">Download link </a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yukle.wordpress.com/138/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yukle.wordpress.com/138/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yukle.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yukle.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yukle.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yukle.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yukle.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yukle.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yukle.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yukle.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yukle.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yukle.wordpress.com/138/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=138&subd=yukle&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yukle.wordpress.com/2007/03/18/camfrog-sonsurum-39-video-chat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/498ea01ee88beecb59be73ea42c1f3c6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Administrator</media:title>
		</media:content>

		<media:content url="http://www.programlar.org/resimler/Camfrog.video.chat.3.5.jpg" medium="image" />

		<media:content url="http://camfrogshop.com/portal/images/camfrog.gif" medium="image" />
	</item>
		<item>
		<title>Asp dersanesi 7 -son-</title>
		<link>http://yukle.wordpress.com/2007/03/16/asp-dersanesi-7-son/</link>
		<comments>http://yukle.wordpress.com/2007/03/16/asp-dersanesi-7-son/#comments</comments>
		<pubDate>Fri, 16 Mar 2007 08:30:25 +0000</pubDate>
		<dc:creator>Super Admin</dc:creator>
				<category><![CDATA[Asp]]></category>
		<category><![CDATA[Asp Dersanesi]]></category>
		<category><![CDATA[Web Master Kaynakları]]></category>

		<guid isPermaLink="false">http://yukle.wordpress.com/2007/03/16/asp-dersanesi-7-son/</guid>
		<description><![CDATA[&#60;%@ Language = VBscript %&#62;
&#60;%
Dim siteNO
Dim grafNO
Dim SQLSITEADI
Dim connsiteadi
Dim siteadi
siteNO=Request.Querystring(&#8220;siteNO&#8221;)
grafNO=Request.Querystring(&#8220;grafNO&#8221;)
SQLSITEADI=&#8221;SELECT siteAdi FROM Siteler &#8220;
SQLSITEADI=SQLSITEADI &#38; &#8220;WHERE siteNO= &#8221; &#38; siteNO
set connsiteadi = server.createobject(&#8220;ADODB.Connection&#8221;)
connsiteadi.open &#8220;web&#8221;
set siteadi=connsiteadi.execute(SQLSITEADI)
%&#62;
&#60;HTML&#62;
&#60;HEAD&#62;
&#60;TITLE&#62;Web Sitesi Üretim Merkezi&#60;/TITLE&#62;
&#60;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&#62;
&#60;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&#62;
&#60;/HEAD&#62;
&#60;BODY bgcolor=DarkOrange text=&#8221;white&#8221;&#62;&#60;br&#62;&#60;br&#62;&#60;br&#62;&#60;br&#62;&#60;br&#62;&#60;center&#62;
&#60;table width=&#8221;250&#8243;&#62;&#60;tr&#62;&#60;td&#62;
&#60;font face=&#8221;arial&#8221; size=&#8221;6&#8243;&#62;Arzu ettiğiniz &#60;%= siteadi(0) %&#62; sitesini tasarlamaya hazırız.
&#60;p&#62;Bu sitenin kullanım amacı hakkında bilgi verir misiniz?&#60;/font&#62;
&#60;form action=&#8221;icra.asp&#8221; method=&#8221;get&#8221;&#62;
&#60;input [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=137&subd=yukle&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%@ Language = VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim siteNO</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim grafNO</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim SQLSITEADI</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim connsiteadi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim siteadi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">siteNO=Request.Querystring(&#8220;siteNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">grafNO=Request.Querystring(&#8220;grafNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLSITEADI=&#8221;SELECT siteAdi FROM Siteler &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLSITEADI=SQLSITEADI &amp; &#8220;WHERE siteNO= &#8221; &amp; siteNO</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">set connsiteadi = server.createobject(&#8220;ADODB.Connection&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connsiteadi.open &#8220;web&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">set siteadi=connsiteadi.execute(SQLSITEADI)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;Web Sitesi Üretim Merkezi&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY bgcolor=DarkOrange text=&#8221;white&#8221;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;center&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;table width=&#8221;250&#8243;&gt;&lt;tr&gt;&lt;td&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;font face=&#8221;arial&#8221; size=&#8221;6&#8243;&gt;Arzu ettiğiniz &lt;%= siteadi(0) %&gt; sitesini tasarlamaya hazırız.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;Bu sitenin kullanım amacı hakkında bilgi verir misiniz?&lt;/font&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;form action=&#8221;icra.asp&#8221; method=&#8221;get&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;input type=&#8221;Hidden&#8221; name=&#8221;siteNO&#8221; value=&#8221;&lt;%= siteNO %&gt;&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;input type=&#8221;Hidden&#8221; name=&#8221;grafNO&#8221; value=&#8221;&lt;%= grafNO %&gt;&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% &#8216;Bu bilgilerle Tür tablosundan bilgi seç. %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;!&#8211;#include file=&#8221;turler.inc&#8221;&#8211;&gt;  </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;input type=&#8221;Submit&#8221; value=&#8221;Gönder&#8221; align=&#8221;LEFT&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/form&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/center&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font><span id="more-137"></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font size="3"><font face="Times New Roman"><u>sayfa1.asp</u>, ziyaretçimizin Form’da yaptığı iki seçimin değerini <u>sayfa2.asp</u>’ye gönderdiğinde, sayfa2.asp bunları otomatik olarak kullanamaz; bilgiler GET yoluyla geldiği için <u>QueryString</u> değişkeninin içine yazılacak bu bilgileri bizim kullanılır hale getirmemiz gerekir. Yukarıdaki kodun şu satırları bu işi yapıyor:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">siteNO=Request.Querystring(&#8220;siteNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">grafNO=Request.Querystring(&#8220;grafNO&#8221;)</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font size="3"><font face="Times New Roman"><u>sayfa1.asp</u>’nin gönderdiği <u>siteNo</u> ve <u>grafNo</u> değişkenlerinin değerleri (bu kez bu sayfanın aynı isimdeki) değişkenlerine değer olarak atanıyor. <u>sayfa2.asp</u>’de yapacağımız veri işlemlerinde bu değerleri ölçüt olarak kullanacağız:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLSITEADI=&#8221;SELECT siteAdi FROM Siteler &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLSITEADI=SQLSITEADI &amp; &#8220;WHERE siteNO= &#8221; &amp; siteNO</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Burada aslında tek sorgu deyimi oluşturduğumuz halde, derdimizi neden iki ayrı satırda anlatıyoruz? Daha önce yazdığımız sorgu deyimlerine bakın? Tümü çift tırnak içinde değil mi? Peki, burada siteNo değişkenini tırnak içine alırsak ne olur? Değişken, değişken olmaktan çıkar; metin olur; oysa biz burada <u>siteNo</u> değişkeninin vereceği değeri kullanmak istiyoruz. Bu yolla veritabanından çekeceğimiz değeri hemen aşağıda metnin içinde kullanacağız:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Arzu ettiğiniz &lt;%= siteadi(0) %&gt; sitesini tasarlamaya hazırız.</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Sadece bir değer istediğimiz ve bu değiri ihtiyacımıza uygun seçtiğimiz için veri okutma işini döngüyle yapmıyoruz bu kez; okunan ilk değeri <u>Response.Write</u> metodunun kısaltmasıyla, sayfaya gönderiyoruz. Bu arada ziyaretçimizden ek bilgi almaya devam ediyoruz; yeni bir haricî dosya ile bu kez size tasarlatmak istedikleri sitenin türünü soruyoruz; bu bilgileri ise <u>turler.inc</u> sağlıyor:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLTUR=&#8221;SELECT turNO, turAdi FROM Tur&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">set conntur = server.create<u>object</u>(&#8220;ADODB.Connection&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">conntur.open &#8220;web&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">set tur=conntur.execute(SQLTUR)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;SELECT NAME=&#8221;turNO&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Do While not tur.eof %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>&lt;Option value = &#8220;&lt;%= tur(0) %&gt;&#8221;&gt;&lt;%= tur(1) %&gt;&lt;/Option&gt;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>&lt;%tur.movenext </font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Loop%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New">&lt;% tur.close %&gt;<span>   </span></font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/select&gt;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Bu kodun irdelenmesine gerek yok; Tur tablosundan turNo ve turAdi alanlarındaki değerleri alıyoruz ve OPTION etiketinin içini dolduruyoruz. Devam etmeden önce <u>sayfa2.asp</u>’de dikkatinizi çekmiş olması gereken şu iki satıra dönelim:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;input type=&#8221;Hidden&#8221; name=&#8221;siteNO&#8221; value=&#8221;&lt;%= siteNO %&gt;&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;input type=&#8221;Hidden&#8221; name=&#8221;grafNO&#8221; value=&#8221;&lt;%= grafNO %&gt;&#8221;&gt;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">HTML’den hatırlayacaksınız, Form’un içinde Server’a “gizli” (HIDDEN) türü değişken ve değer gönderebiliriz. Buradaki “gizli” kelimesi sizi aldatmasın; Form bir HTML ögesidir ve ziyaretçi Browser’ının kaynağı görüntüleme aracı vasıtasıyla gizli-açık herşeyi görebilir. Buradaki gizlilik sadece bu değişkenlerin sayfada görüntülenmemesinden ibarettir. Bu iki sözüm-ona gizli değişkene, taa kodumuzun başında elde ettiğimiz <u>siteNo</u> değişkeni ile biraz önce veritabanından çektiğimiz <u>grafNo</u> değişkenlerini atıyoruz. (Merak etmeyin! Hepsini daha sonra kullanacağız.)</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;veriuyg0003.tif&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Ve bu kullanımı, Form’umumuzun ACTION özelliğinde adı yazılı olan <u>icra.asp</u> yapacak. Şu uzunca kodu bu isimle kaydedin:</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;%@ Language = VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">Dim siteNO, grafNO, turNO, randNO</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">Dim SQLSITETUTAR, SQLGRAFTUTAR, SQLTURTUTAR</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">Dim bedel, turkatsayi, grafkatsayi, sitekatsayi</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">siteNO=Request.Querystring(&#8220;siteNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">grafNO=Request.Querystring(&#8220;grafNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">turNO=Request.Querystring(&#8220;turNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">randNO=Request.Querystring(&#8220;randNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">SQLSITETUTAR=&#8221;SELECT siteAdi, olcRayic FROM Siteler, Olcu &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">SQLSITETUTAR=SQLSITETUTAR &amp; &#8220;WHERE Siteler.olcNO = Olcu.olcNO and siteNO=&#8221; &amp; siteNO</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">Set conn = server.create<u>object</u>(&#8220;ADODB.Connection&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">conn.open &#8220;web&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">Set sitetutar=conn.execute(SQLSITETUTAR)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">siteadi=sitetutar(0)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">sitekatsayi=sitetutar(1)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">SQLGRAFTUTAR=&#8221;SELECT grafRayic, grafDurum FROM Grafik &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">SQLGRAFTUTAR=SQLGRAFTUTAR &amp; &#8220;WHERE grafNO=&#8221; &amp; grafNO</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">Set graftutar=conn.execute(SQLGRAFTUTAR)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">grafkatsayi=graftutar(0)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">grafdurum=graftutar(1)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">SQLTURTUTAR=&#8221;SELECT turRayic, turAdi FROM Tur &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">SQLTURTUTAR=SQLTURTUTAR &amp; &#8220;WHERE turNO=&#8221; &amp; turNO</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">set turtutar=conn.execute(SQLTURTUTAR)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">turkatsayi=turtutar(0)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">turadi=turtutar(1)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">conn.close</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">SET conn = Nothing</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">bedel = 100 * turkatsayi * grafkatsayi * sitekatsayi</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;TITLE&gt;Web Tasarim Merkezi&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;BODY bgcolor=DarkOrange text=&#8221;white&#8221;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;center&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;table width=&#8221;250&#8243;&gt;&lt;tr&gt;&lt;td&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;font face=&#8221;arial&#8221; size=&#8221;6&#8243;&gt;Çok güzel!&lt;p&gt;Grafik malzemesi &lt;%= grafdurum %&gt; olan &lt;%= siteadi %&gt; ve &lt;%= turadi %&gt; amaçlı bir Web sitesi, için ücret US$&lt;%= bedel %&gt; olacaktır.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;table width=&#8221;500&#8243;&gt;&lt;tr&gt;&lt;td width=&#8221;150&#8243; valign=&#8221;top&#8221;&gt;&lt;font face=&#8221;arial&#8221; size=&#8221;5&#8243;&gt;İlk görüşme için iki saatlik randevu almanız gerekir.&lt;/font&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;p&gt;&lt;font face=&#8221;arial&#8221; size=&#8221;3&#8243;&gt;(Açık olan randevu tarihi ve saatinden beğendiğinizi tıklayınız)&lt;/font&gt;&lt;/td&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;td width=&#8221;50&#8243;&gt;&lt;/td&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;td width=&#8221;300&#8243; valign=&#8221;top&#8221;&gt;&lt;!&#8211;#include file=&#8221;rand.inc&#8221;&#8211;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;/center&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Adı <u>icra.asp</u> olduğuna göre, bu sayfa çok iş icra ediyor olsa gerek! Gerçekten de bu sayfa, daha önceki sayfalarda elde ettiğimiz bütün bilgileri kullanarak ziyaretçi sitesini kaç paraya yapacağımızı hesap edecektir. <u>icra.asp</u>, önce Querystring’den alacağı bilgileri, kendi işine yarayacak değişkenlere yerleştirecek ve bunlarla üç katsayı hesaplayacak ve bu katsayıları kullanarak müşterinin sitesi için bir bedel çıkartacak (“bedel = 100 * turkatsayi * grafkatsayi * sitekatsayi”). Sonra “bedel” değişkeninin içindeki değeri müşteriye Dolar olarak bildirecek (Bedel formülünde 100 yerine mesela 600000 rakamını, veya bu işi yaptığınız andaki Dolar’ın TL cinsinden kurunu gösteren rakamı, kullanarak, fiyatı Dolar yerine TL olarak da bildirebilirsiniz). <u>icra.asp</u> daha sonra <u>rand.inc</u>’in yardımıyla veritabanından boş saatlerimizi seçerek müşteriye randevu alması için sunacaktır. <u>rand.inc</u>, veritabanımızın Randevu tablosundan serbest zaman dilimlerini okumak ve elde edeceği sonucu <u>icra.asp</u> programına vermektedir. Şu kodu <u>rand.inc</u> adıyla kaydedelim:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLRAND=&#8221;SELECT randNO, randZaman FROM Randevu WHERE randDurum = &#8216;SERBEST&#8217; ORDER BY randZaman&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set connrand = server.create<u>object</u>(&#8220;ADODB.Connection&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connrand.open &#8220;web&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set rand=connrand.execute(SQLRAND)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;font face=&#8221;arial&#8221; size=&#8221;5&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% do while not rand.eof</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;a href=&#8221;rezerv.asp?siteNO=&lt;%= siteNO %&gt;&amp;grafNO=&lt;%= grafNO %&gt;&amp;turNO=&lt;%= turNO %&gt;&amp;randNO=&lt;%= rand(0) %&gt;&amp;randRayic=&lt;%= bedel %&gt;&#8221;&gt;&lt;%= rand(1) %&gt;&lt;/a&gt;&lt;br&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%rand.movenext </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">loop%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/font&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% connrand.close</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SET connrand = Nothing </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Bu haricî dosyamız, öncekilerden farklı: bir OPTION etiketini değil; fakat bir Anchor etiketinin içini dolduruyor. Bu etikete dikkat edersek, HREF özelliğinin değeri olan <u>rezerv.asp</u>’ye aslında bir çok bilginin gönderilmesine de yaradımcı oluyor, Herhangi bir ziyaretçinin seçimleri sonucu oluşacak bir örnek şu olabilirdi:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;a href=&#8221;rezerv.asp?siteNO=1&amp;grafNO=1&amp;turNO=1&amp;randNO=10&amp;randRayic=500&#8243;&gt; 05.05.2000 14:00:00&lt;/a&gt;&lt;br&gt;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;veriuyg0004.tif&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Bu, rezervasyon yaptıracak olan sayfaya, <u>siteNo</u>, <u>grafNo</u>, <u>randNo</u> ve biraz önce hesapladığımız <u>randRayic</u> değişkenlerini gönderiyor. Bu sayfa ise, aşağıdaki kodlarla kaydedeceğimiz <u>rezerv.asp</u>:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%@ Language = VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim siteNO, grafNO, turNO, randNO, randRayic</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim SQLZAMAN, connzaman, zaman, randzaman</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">siteNO=Request.Querystring(&#8220;siteNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">grafNO=Request.Querystring(&#8220;grafNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">turNO=Request.Querystring(&#8220;turNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">randNO=Request.Querystring(&#8220;randNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">randRayic=Request.Querystring(&#8220;randRayic&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLZAMAN=&#8221;SELECT randZaman FROM randevu &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLZAMAN=SQLZAMAN &amp; &#8220;WHERE randNO=&#8221; &amp; randNO</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set connzaman = server.create<u>object</u>(&#8220;ADODB.Connection&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connzaman.open &#8220;Web&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set zaman=connzaman.execute(SQLZAMAN)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">randzaman=zaman(0)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connzaman.close</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;Randevu Defteri&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY bgcolor=DarkOrange text=&#8221;white&#8221;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;center&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;table width=&#8221;250&#8243;&gt;&lt;tr&gt;&lt;td&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;font face=&#8221;arial&#8221; size=&#8221;6&#8243;&gt;Lütfen elverişli randevu zamanı olan&lt;font color=&#8221;blue&#8221;&gt;&lt;%= randzaman %&gt;&lt;/font&gt; için rezervasyon yapmak üzere gerekli bilgileri giriniz.&lt;/font&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;&lt;font face=&#8221;arial&#8221; size=&#8221;4&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;form action=&#8221;guncelle.asp&#8221; method=&#8221;get&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;input type=&#8221;Hidden&#8221; name=&#8221;siteNO&#8221; value=&#8221;&lt;%= siteNO %&gt;&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;input type=&#8221;Hidden&#8221; name=&#8221;grafNO&#8221; value=&#8221;&lt;%= grafNO %&gt;&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;input type=&#8221;Hidden&#8221; name=&#8221;turNO&#8221; value=&#8221;&lt;%= turNO %&gt;&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;input type=&#8221;Hidden&#8221; name=&#8221;randNO&#8221; value=&#8221;&lt;%= randNO %&gt;&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;input type=&#8221;Hidden&#8221; name=&#8221;randRayic&#8221; value=&#8221;&lt;%= randRayic %&gt;&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;input type=&#8221;Text&#8221; name=&#8221;adi&#8221; size=&#8221;20&#8243;&gt;&lt;i&gt;Adınız&lt;/i&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;&lt;input type=&#8221;Text&#8221; name=&#8221;soyadi&#8221; size=&#8221;20&#8243;&gt;&lt;i&gt;Soyadınız &lt;/i&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;&lt;input type=&#8221;Text&#8221; name=&#8221;email&#8221; size=&#8221;20&#8243;&gt; &lt;i&gt;e-adresiniz&lt;/i&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;&lt;input type=&#8221;Submit&#8221; value=&#8221;Gönder&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/form&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;&lt;p&gt;&lt;/center&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Gerçi bu sayfanın sadece ziyaretçiye seçtiği randevu tarih ve saatini bildirdiğini ve ziyaretçiden bize adını, soyadını ve elektronik mektup adresini vermesi istediğini göreceksiniz, ama gerçekte bu sayfa şu ana kadar oluşturduğumuz veri kümesini veritabanına yazmak üzere hazırlık yapmaktadır. Gizlenmiş (HIDDEN) değişkenlerin görevi bu. </font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;veriuyg0005.tif&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Derlenen bu değişkenlerin tümü, ziyaretçinin gireceği bilgiler dahil, <u>guncelle.asp</u>’ye gönderilecek. O halde o kodu yazalım:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%@ Language = VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim siteNO, grafNO, TurNO, randNO, randRayic, adi, soyadi, email</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim SQLINSERT, connupdate, SQLUPDATE, URL, simdi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">siteNO=Request.Querystring(&#8220;siteNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">grafNO=Request.Querystring(&#8220;grafNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">turNO=Request.Querystring(&#8220;turNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">randNO=Request.Querystring(&#8220;randNO&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">randRayic=Request.Querystring(&#8220;randRayic&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">adi=Request.Querystring(&#8220;adi&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">soyadi=Request.Querystring(&#8220;soyadi&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">email=Request.Querystring(&#8220;email&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLINSERT=&#8221;INSERT INTO Musteriler (adi, soyadi, email, siteNO, grafNO, turNO) &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLINSERT=SQLINSERT &amp; &#8220;VALUES (&#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLINSERT=SQLINSERT &amp; &#8220;&#8216;&#8221; &amp; adi &amp; &#8220;&#8216;, &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLINSERT=SQLINSERT &amp; &#8220;&#8216;&#8221; &amp; soyadi &amp; &#8220;&#8216;, &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLINSERT=SQLINSERT &amp; &#8220;&#8216;&#8221; &amp; email &amp; &#8220;&#8216;, &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLINSERT=SQLINSERT &amp; siteNO &amp; &#8220;, &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLINSERT=SQLINSERT &amp; grafNO &amp; &#8220;, &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLINSERT=SQLINSERT &amp; turNO &amp; &#8220;) &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">set connupdate = server.createobject(&#8220;ADODB.Connection&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connupdate.open &#8220;web&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connupdate.execute(SQLINSERT)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">simdi = FormatDateTime(now,vbLongDateTime)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLUPDATE=&#8221;UPDATE Randevu SET &#8221; </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLUPDATE=SQLUPDATE &amp; &#8220;email = &#8216;&#8221; &amp; email &amp; &#8220;&#8216;, &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLUPDATE=SQLUPDATE &amp; &#8220;randNezaman = &#8216;&#8221; &amp; simdi &amp; &#8220;&#8216;, &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLUPDATE=SQLUPDATE &amp; &#8220;randDurum = &#8216;DOLU&#8217;, &#8220;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLUPDATE=SQLUPDATE &amp; &#8220;randRayic = &#8221; &amp; randRayic </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLUPDATE=SQLUPDATE &amp; &#8221; WHERE randNO =&#8221; &amp; randNO</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connupdate.execute(SQLUPDATE)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connupdate.close</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SET connupdate = Nothing</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">URL=&#8221;son.asp?adi=&#8221; &amp; adi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Redirect (URL)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Programı çalıştırdıysanız, <u>guncelle.asp</u>’nin Browser’ın yüzünü bile görmediğini farketmiş olmalısınız; Yukarıdaki kodun, ziyaretçiye kendi yerine başka bir sayfayı gönderdiğini nereden anlıyoruz? En sondaki “Response.Redirect” komutundan. Bu komut ziyaretçiye, <u>son.asp</u> sayfasını yolluyor. Fakat bu sayfaya geçmeden önce yaptığımız güncelleme işleminin üzerinde duralım. Bu programda uzunca bir SQL INSERT deyimi hazırlıyoruz:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">INSERT INTO Musteriler (adi, soyadi, email, siteNO, grafNO, turNO) VALUES (adi, soyadi, email, siteNO, grafNO, turNO)</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Daha önce SQL dilinin SELECT deyimini öğrenmiştik. INSERT de bir veritabanına veri ekleme işini yapan SQL deyimidir. Deyimin INTO bölümüne tablonun adını ve hangi alanların bulunduğunu; VALUES bölümüne ise bu alanlara atayacağımız değerleri yazarız. Bizim programımızda değerler, değişkenlerden alınacağı için dikkatli bir yazma işlemi gerekiyor. Bu yüzden değişken adları ile &amp; (ve) işareti ve virgülü birbirinden kolayca ayırt etmek için uzunda bir yazma yöntemi kullanıyoruz. Hazırladığımız bu deyimle yeni müşteriyi müşteriler tablosuna ekliyoruz. Programımızda bir de SQL UPDATE deyimi var. Bu deyimle, mevcut Randevu tablomuzda müşterinin seçtiği zaman aralığına ait girdiyi, SERBEST’ten DOLU’ya çeviriyoruz ve bu zamanı kime ayırdığımızı, bu görüşmenin saat ücreti olan rayici tabloya işliyoruz. Bu amaçla oluşturduğumuz SQL UPDATE deyimi şöyle gösterilebilir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">UPDATE Randevu SET email = &#8220;email&#8221;, randNezaman = &#8220;simdi&#8221;, randDurum = &#8220;DOLU&#8221;, randRayic = &#8220;randRayic&#8221; WHERE randNO = &#8220;randNO&#8221;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">SQL’in UPDATE deyiminin de bölümleri vardır. SET bölümü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österilen kelimeler değişken adı ise tırnak dışında yazılmalıdır. Bunu sağlamak ve aralarına gereken virgülleri koyabilmek için, yine uzunca bir deyim yazıyoruz.</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Şimdi, aşağıdaki kodu <u>son.asp</u> adıyla kaydedelim:</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;%@ Language = VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">adi=Request.Querystring(&#8220;adi&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;html&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;head&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;title&gt;Randevunuz Kesinlesti&lt;/title&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;/head&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;BODY bgcolor=DarkOrange text=&#8221;white&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;center&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;table width=&#8221;250&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;tr&gt;&lt;td&gt;&lt;font face=&#8221;arial&#8221; size=&#8221;6&#8243;&gt;&lt;%= adi %&gt;, sizinle verimli bir işbirliği yapacağımızdan eminiz. Çok teşekkürler. Görüşmek üzere.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;/table&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -14.2pt;"><font face="Courier New">&lt;/html&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu sayfa, ziyaretçimize bir önceki sayfada kaydettiğimiz <u>adi</u> değişkenin değeri alarak, yani müşteriye adıyla hitabediyor ve randevusunun kesinleştiğini bildiriyor; ve veri-yönlendirmeli Web uygulamamızın da sonu oluyor.</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;veriuyg0006.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">İşte hepsi bu. Ziyaretçimizden veri aldık; veritabanından veri çektik; bunları sayfalarımızda kullandık ve veritabanına işledik. Fakat bu ASP programlarında, veritabanıyla ilgili unsurların dikkatten kaçmaması için, güvenlikle ilgili önlemler alınmadığına, ziyaretç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üvenlikle ilgili bölümler olması gerekir. Bu ve diğer program-konulu unsurları son bölümde ele alacağız.</font></p>
<p class="ChapterTitle" style="margin:24pt 108pt 18pt 0;"><a title="_Toc481830289" name="_Toc481830289"></a><font face="Arial Black" size="6">ASP’de Güvenlik</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Internet’te iyiniyetli olunmaz. Acı, ama gerçek. Internet’e içine zararlı kod yerleştirilebilecek bir Form koyarsanız, emin olmalısınız ki, birisi bu zararlı kodu koyacaktır. Sadece kötüniyetli kişilerin size söz gelimi elektronik posta adresi veya mesaj görünümünde zararlı kod göndermesini önlemek için değil, fakat normal kullanıcıların yapabilecekleri sıradan hataları yakalamak ve düzeltmek için de önlem almanız gerekir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Server güvenliği son derece önemli bir konu olmakla birlikte, bunu sağlamak genellikle tasarımcının sorumluluğunda değildir. Bununla birlikte sayfalarımızın ve veritabanımızın güvenliği ve Web uygulamalarımızın doğru işlemesi bizden sorulur.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bir form ile sizin sayfalarınıza veya veritabanınıza ne gibi zararlar verilebilir? Bu zararların başında, en hafifinden sizin sayfanızı başka yere yönlendirmek gelebilir. Kötüniyetin ölçüsü arttıkça bu, Server programının açıklarından yararlanarak, Server’daki dosyaları değiştirmeye veya tahrip etmeye kadar gidebilir. Normal ziyaretçi hataları arasında ise sözgelimi elektronik posta adresini iki @ işaretiyle yazmaktan tutun, bu işareti koymamaya, metktubun gideceği bilgisayarın adresini eksik yazmaya kadar uzanan bir dizi yanlışlık bulunabilir. Ziyaretçiler formu eksik doldurabilirler. Bu gibi eksiklikler ve yanlışlıkları daha sonra düzeltmek zaman kaybına yol açar. Kimi zaman eksik doldurulmuş bir Form, bu bilgilerin ulaştırılacağı ASP programında hataya yol açabilir. Bu sebeple, özellikle Form yoluyla alınan bilgilerin denetimi ve doğrulatılması şarttır.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bir Form’un içerdiği bilgilerin denetimi ve doğrulanması iki yerde yapılabilir: istemci-tarafında, sunucu-tarafında. İstemci tarafında, yani ziyaretçiye göndereceğimiz HTML sayfasının içinde yer alan kodlarla yapacağımız denetim-doğrulama, hızlı çalışır; ve ziyaretçi ile sunucu arasında iletişim kurulmadan önce yapılır; böylece ziyaretçinin sözgelimi gönder düğmesini tıkladıktan sonra çok beklemesi gerekmez. Ne var ki bu yöntemde denetim-doğrulama kodu ziyaretçiye gönderilmiştir; kötü niyetli kişi neyi denetlediğinizi görecek ve isterse bu denetimi kaldıracak size zararlı kod parçacıkları gönderebilecektir. Denetimin sunucu tarafında yapılması, belki biraz daha fazla zaman harcamayı gerektirir, fakat güvenlik açısından daha etkili olabilir.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman">Bu bölümde ASP programlarınızın güvenliği ve etkinliği açısından almanız gereken bir çok önlemden ikisini, elektronik posta adresi doğırulama ile mesajların içinden zararlı kodları ayıklama yöntemlerini görelim.</font></font></p>
<h1><a title="_Toc481830290" name="_Toc481830290"></a><font face="Arial Black" size="5">Elektronik Adres Doğrulama</font></h1>
<p class="MsoBodyTextIndent" style="margin:0;"><font face="Times New Roman" size="3">Ziyaretçimizin doğru adres verdiğini, bu adresin geçerli bir elektronik posta alıcısına ait olduğunu doğrulamamız mümkün değil, ama en azından adresin doğru yazılıp yazılmadığını denetleyebiliriz. Bunu yapmanın bir yolu elektronik adresin içinde @ karakteri ile en az bir adet nokta bulunduğunu garantilemek olabilir. </font></p>
<p class="MsoBodyTextIndent" style="margin:0;"><font face="Times New Roman" size="3">Bunu denetleyecek kodu içeren aşağıdaki örnek kodu <u>email.asp</u> adıyla kaydedin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% @Language = VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;E-Mail Form’u&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">If Not IsEmpty(Request.Form(&#8220;Email&#8221;)) Then</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span> </span>strEmail = Request.Form(&#8220;Email&#8221;) </font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span> </span>If dogruMu(strEmail) Then</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>Response.Write strEmail &amp; &#8221; adresini aldık; teşekkür ederiz.&lt;BR&gt;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&#8216;<span>           </span>&#8230;..[BURAYA DIĞER KODLAR GİRECEK]&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span> </span>Else<span>   </span></font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>  </span>Response.Write strEmail &amp; &#8221; adresi doğru görünmüyor.&lt;BR&gt;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span> </span>End If</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">End If</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM &#8220;Name=&#8221;Email&#8221; Action=&#8221;email.asp&#8221; Method=&#8221;post&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Enter an email address: </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;INPUT Name=&#8221;Email&#8221; Type=Text&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;!- &#8211; Buraya formun diğer unsurları girecek &#8211; - &gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;INPUT Type=Submit Value=&#8221;Gönder&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;/FORM&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;SCRIPT RUNAT=SERVER LANGUAGE=VBScript&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Function dogruMu (byval adres)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>AtIsareti=0<span>       </span><span>           </span>&#8217;sayaç olarak kullanacağımız</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Nokta=0<span>      </span><span>    </span>&#8216;değişkenleri sıfırlayalım</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>dogruMu=false<span>     </span><span>           </span>&#8216;Fonksiyonun değerini yanlış olarak belirleyelim</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>KacKarakter=len(adres)<span>  </span><span>     </span>&#8216;adresin boyutunu bir değişkene atayalım</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>For i=1 to KacKarakter <span>      </span>&#8216;döngüyü başlatalım</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span>  </span>karakter=mid(adres, i, 1) <span>  </span>&#8217;sayacın gösterdiği karakteri alalım</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span>  </span>if karakter=&#8221;@&#8221; then<span>   </span><span>     </span>&#8216;@ işareti olup olmadığına bakalım</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span>   </span>AtIsareti=AtIsareti + 1 <span>   </span>&#8216;@ işareti ise sayacı bir arttıralım</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span>  </span>End If</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span>  </span>if karakter=&#8221;.&#8221; Then<span>     </span><span>   </span>&#8216;nokta işaretini arayalım</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span>   </span>Nokta=Nokta + 1<span>  </span><span>          </span>&#8216;nokta ise nokta sayasını bir arttıralım</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span>  </span>End if</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Next<span>            </span><span></span>&#8216;bir sonraki karaktere geçelim</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">If AtIsareti=1 and Nokta &gt;0 Then<span>          </span>&#8216;Bir @ ve en az bir nokta olduysa</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">dogruMu=true<span>                              </span>&#8216;Fonksiyonun değerini doğru yapalım</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">End If</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">End Function</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;/SCRIPT&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;/HTML&gt;</font></p>
<p class="MsoBodyTextIndent" style="margin:0;"><font face="times new roman" size="3">Bu programı, bu şekliyle sınama amacıyla çalıştırabilirsiniz. Fakat daha sonra programlarınızda kullanmanız gerekirse, bazı değişiklikler yapmanız gerekir. Bu değişiklikleri kodu inceledikten sonra ele alalım.</font></p>
<p class="MsoBodyTextIndent" style="margin:0;"><font face="times new roman" size="3">Sayfamızda tek elemanlı bir Form var ve sınama amacıyla buraya elektronik posta adresimizi yazabiliriz. Sayfa açıldığında çalışan VBScript’in kendi-içinde varolan <u>isEmpty</u> fonksiyonunu bir If döngüsü içinde çağırarak, kendi içindeki formdan kendisine bir değer gelip gelmediğine bakacak; değer olmadığını görünce formu sunacaktır. Forma herhangi bir şey yazıp, Gönder düğmesini tıkladığımız zaman ASP kodumuz, bu kez <u>dogruMu</u> adlı fonksiyona formdan gelen Email değişkeninin değerini vererek sonucu bekleyecektir. </font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="times new roman">&lt;aspguv0001.tif&gt;</font></font></span></p>
<p class="MsoBodyTextIndent" style="margin:0;"><font size="3"><font face="times new roman"><u>dogruMu</u> fonksiyonu güvenlik kaygısıyla Server’da çalışan sunucu-tarafı Script’tir; metni ve sonuçları kesinlikle kullanıcıya gönderilmeyecektir. Bu fonksiyon, kendisine aktarılan değişken değerinde, içiçe iki <u>If</u> döngüsü ile @ ve nokta işaretlerini arayarak sayacaktır. Bu sayımın sonucu iki değişkenin değerleri arzu ettiğimiz sayıda (<u>AtIsareti</u> bire eşit ve <u>Nokta</u> sıfırdan büyük) ise kendisini çağıran satıra <u>True</u> (doğru), değilse <u>False</u> (yanlış) değerini gönderecektir. Biliyoruz ki, bir fonksiyon doğru sonuç verirse, <u>If</u> döngüsü birinci komuttan, yanlış sonuç verirse <u>Else</u> bölümünden yoluna devam eder. Bu örnekte, dogruMu fonksiyonu doğru sonuç verirse <u>Response.Write</u> metoduyla Browser penceresine elektronik posta adresinin alındığına ilişkin teşekkür mesajı yazdırılacak; yanlış sonuç verirse, adresin yanlış olduğu bildirilecektir.</font></font></p>
<p class="MsoBodyTextIndent" style="margin:0;"><font face="times new roman" size="3">Gerçek Internet uygulamasında bu tür bir sınama yapacağınız zaman, yukardaki programın fonksiyonu içeren SERVER SCRIPT (“&lt;SCRIPT RUNAT=SERVER&#8230;.&gt;” diye başlayan ve “&lt;/SCRIPT&gt;” diye biten) bölümünü aynen sayfanızın herhangi bir yerine koyabilirsiniz. Daha sonra ziyaretçiden gelecek elektronik posta adresine göndermede bulunduğunuz ilk yerde ve bu adresi tutan değişken ile herhangi bir işlem yapmadan, örneğin veri tabanına yazmadan veya programın içinde bir başka şekilde kullanmadan önce, sadece şuna benzer bir kod bölümü yazmanız yeter:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">strEmail = Request.Form(&#8220;Email&#8221;) </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>If dogruMu(strEmail) Then</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&#8230;..[BURAYA KODLAR GİRECEK]&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Else<span>   </span></font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span>  </span>Response.Write strEmail &amp; &#8221; adresi doğru görünmüyor.&lt;BR&gt;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>End If</font></font></p>
<p class="MsoBodyTextIndent" style="margin:0;"><font face="times new roman" size="3">Programınızın gereği olarak döngünün ELSE bölümünü değiştirebilirsiniz.</font></p>
<h1><a title="_Toc481830291" name="_Toc481830291"></a><font face="arial black" size="5">Zararlı Kod Temizleme</font></h1>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">ASP-uyumlu Server dendiği zaman akla ilk gelen Microsoft Internet Information Server, site güvenliği açısından sürekli sınanan ve açığı bulunduğu taktirde MS’un yama programları ile bu açığı giderilen bir sunucu programı olarak bilinir. Bu, IIS’in ve diğer MS ürünü Web sunucu programlarının (MS Site Server ve MS Transaction Server ürünlerinin) “kurşun geçirmez” olduğu anlamına gelmez. Fakat sunucu program üreticisi ne kadar önlem alırsa alsın, sizin sitenize, kulllanıcıların yollayacağı zararlı kodları önlemeye çalışmayacaktır. Bu bir zorunluktur. Sizin için zararlı kod sayılan metin, bir başka Internet sitesi için normal kullanıcı girdisi olabilir. Server programını geliştirenler sizin ne tür girdiyi zararlı sayacağını bilemezler. Bunu siz bilmek zorundasınız.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Son yılların deneyimleri gösteriyor ki, başka yollarla Internet sitenizin kök dizinine ulaşmaya çalışan <u>Hacker</u> tiplerin dışında kalan zararlı kullanıcılar (<u>Hacker</u> özentisi kişiler!), genellikle bir veritabanına gittiğini anladıkları Form bilgilerinin içine <u>Server Side Include</u> (sunucu tarafında çalışacak haricî dosya) içeriği görevini yapacak kod parçacıkları katabilirler. Bu amaçla kullanılabilecek zararlı bir kod şöyle olabilir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;script language=&#8221;JavaScript&#8221;&gt;&lt;!&#8211;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">function reload() { </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">self.focus(); </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">document.location.href=&#8221;http://www.geocities.com/rasimy&#8221;; </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">} </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">setTimeout(&#8220;reload();&#8221;, 5000); </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">// &#8211;&gt;&lt;/script&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bu kodun bütün zararı, içerdiği veritabanını ASP sayfasının herhangi bir etiketi içinde kullanıldığı taktirde ziyaretçiyi burada yazılı URL’e götürmesi ve buradaki sayfayı Browser’ınızda görüntülemek olacaktır. Acemi <u>Hacker</u>’ın ziyaretçinizi <u>zorla</u> götürdüğü yeni Internet sitesi, sadece içerik bakımından sakıncalı olmayabilir; ziyaretçiniz açısından gerçekten tehlikeli bir alan olabilir; göndereceği çerezlerle (<u>cookie</u>) ziyaretçinin bilgisayarında zararlı işler yapabilir. Ziyaretçi bu tuzağa sizin sitenizde bulunduğu sırada düştüğü için, sorumluluk, en azından manevi olarak, size ait demektir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Zararlı kodlar genellikle bu örnekte olduğu gibi büyüktür-küçüktür işaretleri, düz ve ters bölü ile kesme işareti içerir. Örneğin bir konuk defterinde ziyaretçimizden ne gibi bilgi istersek isteyelim, yazacağı metinde “&lt;” ve “&gt;” işaretlerinin bulunmaması gerekir. Normal bir mesajda, ancak kod yazarken kullanılan bu işaretlerin yeri olamaz. Hatta daha hassas bir düşünceyle, normal ve kısa bir konuk defteri mesajında tek ve çift tırnak, noktalı virgül satır başı (CR) ve yeni satır (LF) işaretleri de bulunmamalıdır. Eğer normal bir ziyaretçi bu gibi işaretlerle dolu bir mesaj yazmışsa, kötü niyetli kişilere karşı alacağımız önlemlerle bu iyiniyetli mesaj da yazarının verdiği biçimi kaybedecektir. Bir kaç ziyaretçimizin konuk defterine fiyakalı yazılar yazmasını sağlamak için, güvenlikten vaz geçmemek gerektiğine göre, “Kurunun yanı sıra yaş da yanar!” demekten başka bir çare düşünmek kolay değil!)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Daha önceki bölümlerde yazdığımız kodları hatırlıyorsanız (veya kimse bakmazken o sayfaları çevirir bakarsanız!), ziyaretçilerimizin Form yoluyla gönderdikleri verileri iki yolla alır ve bir değişkene yazarız: <u>QueryString</u> ve <u>Request.Form</u>. İşte size bir Internet’te gerçekten kullanılan bir konuk defterinin konuk girdilerini veritabanına işleyen bölümü:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Ad = Request.Form(&#8220;Isim&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Mektup = Request.Form(&#8220;MailAdr&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Gorus = Request.Form(&#8220;Mesaj&#8221;)</font></p>
<p class="NorKod" style="text-indent:-99.25pt;margin:0 0 6pt 99.25pt;"><font face="courier new">Defter = &#8220;INSERT INTO mesaj (Isim, Email, Mesaj) VALUES ( &#8220;&amp;&#8221; &#8216;&#8221; &amp; Ad &amp;&#8221;&#8216; , &#8220;&amp;&#8221; &#8216;&#8221; &amp; Mektup &amp;&#8221;&#8216; , &#8220;&amp;&#8221; &#8216;&#8221; &amp; Gorus &amp;&#8221;&#8216;)&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Set Veriyolu = Server.Create<u>Object</u>(&#8220;ADODB.Connection&#8221;) </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Veriyolu.Open(&#8220;DSN=misdefter;&#8221;) </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Set RS = Veriyolu.Execute(Defter) </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Tasarımcı, Form’dan gelen üç değişkenin (<u>Isim</u>, <u>MailAdr</u> ve <u>Mesaj</u>) değerini, yeni üç değişkene atamakta ve bunları oluşturduğu SQL INSERT deyimi yoluyla “misdefter” adlı veriye yazdırmaktadır. Tasarımcının dünyayı sadece iyi insanlardan oluşan bir cennet sandığı, kendisini tanımasanız bile, bu koddan anlaşılıyor. Dünyayı cennet yapmak elimizde olmakla birlikte, henüz bütün insanlar bu konuda görüşbirliği içinde olmadığına göre, ziyaretçiden gelen Form değişkenlerini atadığımız yeni değişkenlerin değerlerini elden geçirmeli ve içindeki zararlı kodları ayıklamalıyız, ki sonra misafir defteriniz kevgire dönmesin!</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bu işlemi, sözgelimi yukarıdaki kodun sadece birinci değişkeni (Ad) için yapalım. Buradaki <u>Ad = Request.Form(&#8220;Isim&#8221;)</u> satırını atacağız ve yerine şu 14 satırı koyacağız:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Ad = Trim(Request.Form(&#8220;Isim&#8221;))&#8217;önündeki sonundaki boşluklari atalım</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">If Len(ad) Then</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&#8216;**************** BURADA ISTENMEYEN KARAKTERLERI AYIKLIYORUZ ******************</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Ad = Replace(Ad, Chr(10) , &#8220;&#8221;) &#8217;satır başı</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Ad = Replace(Ad, Chr(34) , &#8220;&#8221;) &#8216;çift tıarnak</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Ad = Replace(Ad, &#8220;&#8216;&#8221; , &#8220;&#8221;)<span>   </span>&#8216;tek tırnak</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Ad = Replace(Ad, Chr(13) , &#8221; &#8220;) &#8216;yeni satır</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Ad = Replace(Ad, &#8220;&lt;&#8221; , &#8221; &#8220;)<span>   </span>&#8216;küçüktür</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Ad = Replace(Ad, &#8220;&gt;&#8221; , &#8221; &#8220;)<span>   </span>&#8216;büyüktür</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Do While Instr(Ad, &#8221; &#8220;)<span>    </span>&#8216;iki aralık</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span>  </span>ad = Replace(Ad, &#8221; &#8221; , &#8221; &#8220;)</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Loop</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>Ad = Trim(Ad)<span>  </span>&#8216;önündeki sonundaki boşlukları da attık mı tamam</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="courier new"><span> </span>End If</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bu kod, Ad değişkenini, VBScript’in kullanılmaya hazır Replace() fonksiyonundan geçirerek, içindeki istenmeyen karakterleri ya yok edecek ya da aralıkla değiştirecektir. Böylece eğer kötüniyetli bir kişi, Form bilgisi olarak bize kod olarak kullanılacak bir takım metinler yollamışsa, kodun ana içeriği yerinde kalmakla birlikte, kod olarak kullanılmasını sağlayacak işaretler yok olacağı için kod düz yazıya dönmüş olacaktır. </font></p>
<h1><a title="_Toc481830292" name="_Toc481830292"></a><font face="arial black" size="5">ADO Güvenliği ve Hata Mesajları</font></h1>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">MS Internet Information Server (IIS) ve diğer Web Server programları, istemcinin siteye gönderebileceği talepleri hem kendi açılarından, hem de işletim sistemi açısından belirleme ve sınırlama imkanı sağlarlar. Windows NT işletim sistemi bakımından Internet ziyaretçisi herhangi bir ağ kullanıcısından farksızdır ve ulaşabileceği sayfalar (dosyalar) ve bu dosyalarla yapabileceği işler, “Internet Kullanıcı Hesabı” denen kullanıcının haklarına bağlıdır. IIS’i kuran Web Yöneticisi, bu hesaba istediği gibi haklar kazandırabilir veya sınırlamalar getirebilir. Burada iki noktayı birbirinden dikkatle ayırmak gerekir:</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Web ziyaretçisinin bir Web Sitesi’nde kullanabileceği haklar HTTP kaynakları ile sınırlıdır. İşletim sistemi ile ilgili haklar bunun dışındadır. Fakat ikisinin çakıştığı nokta, özellikle veritabanına dayanan Web sitelerinde, veritabanı dosyasının güncelleştirilmesi sırasında ortaya çıkar. HTTP’nin ziyaretçiye sağlayabileceği bütün okuma-yazma hakları tanınsa bile, işletim sistemi bir veritabanı dosyasının yeniden yazılmasına izin vermeyebilir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bunu, önceki bölümlerde veritabanı dosyasını güncelleştirme örneklerini yeniden çalıştırarak sınayabilirsiniz. Kullandığınız veri tabanını sözgelimi Windows Gezgini’nde bulun ve sağ tıklayarak “Salt okunur” hale getirin ve ilgili ASP programını çalıştırın; ODBC hata mesajı verecektir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bu noktada Web Tasarımcısı olarak akılda tutacağımız ilke şudur: HTTP izinleri ne olursa olsun, eğer işletim sisteminin izinleri daha kısıtlayıcısı ile, işletim sisteminin dediği olur.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Tasarımcı olarak bunun bize etkisi, genellikle Web sitemize evsahipliği yapan Server işletmecisinin veritabanı dosyalarımıza yazma-okuma izni vermesini sağlamaktır. Web sitesi evsahibi (<u>Hosting</u>) firması, veritabanı dosyasına DSN ayarı yaparken bu izni verecektir. Ancak DSN kaydı yaptırıldığı halde veritabanınız ziyaretçilerinize ODBC hata mesajı veriyorsa evsahibi firmanın yönetimine, veritabanı dosyasının “haklarını” yeniden belirlemesini hatırlatmanız gerekebilir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Veritabanı ile yönlendirilmiş Web sayfalarımızda en sık aldığımız hata mesajı:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">[Microsoft] [ODBC Driver Manager] Data source name not found</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">olsa gerek. Bu mesaj, veritabanının ODBC’ye tanıtılması ile ilgili işlemde arıza olduğunu gösterir. Ya veritabanı dosyasının sürümü, ODBC sürücülerinin kapsamı dışındadır, ya da ODBC sürücüleri eksik kurulmuştur. Bunu, Windows’un Denetim Masası’nda ODBC Yönieticisi’ni çalıştırarak ve sürücüler sekmesini seçerek denetleyebilirsiniz.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bir diğer sık alınan hata türü ise 80004005’dir. Bu hatanın bir kaç türü olabilir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet database engine cannot open the file ‘(unknown)’..</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bu hata mesajına bir kaç farklı durum sebep olabilir:</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">1. Internet kullanıcısına veritabanının işletim sistemi düzeyinde yazma-okuma yetkisi verilmemiş olabilir. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">2. Veritabanının bulunduğu dizinin işletim sistemi açısından dosya oluşturma ve silme yetkileri yoktur.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">3. Veritabanının bulunduğu dizin bir ağ sabit diskinde ise Internet kullanıcısının bu diske erişim hakkı yoktur.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">4. DSN oluşturulurken veritabanı salt okunur veya Exclusive olarak işaretlenmiş olabilir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">5. O anda dosyaya Server tarafında InterDev gibi bir Web Tasarım Programı erişiyor olabilir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">6. Sözkonusu Access dosyası, bulunduğu ağda yerel kullanıcıların hizmetine açık olabilir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bu sorunların çözümü için ODBC yapılandırma işleminin dikkatle yeniden tekrarı ve özellikle sabit disk izinlerinin gözden geçirilmesi gerekir. Bu hata mesajını evsahibi firmanın bilgisayarından alıyorsanız; Web Server yönetimine yeniden başvurmanız şarttır.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC Microsoft Access 97 Driver] Couldn’t use the file ‘(unknown)’; the file already in use</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bu hata mesajının tek sebebi veritabanı dosyasının birden fazla kullanıcı tarafından kullanılmasını önleyen kilit deyimlerinin kullanılmış olmasıdır. Çözümü, dosya ile ilgili <u>.Recordset</u> deyiminin kilidi önleyecek şekilde yazılmasından ibarettir.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC Microsoft Access 97 Driver] Data source name not found and no default driver specified</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Veri tabanı ile veri-yolu bağlantısı kuracak <u>Connection</u> komutu, Global.asa dosyasından alınmak isteniyorsa ve IIS <u>Global.asa</u> dosyasını çalıştıramıyorsa bu hata mesajıyla karşılaşırsınız. <u>Global.asa</u> dosyasında şu kodun bulunup bulunmadığını kontrol edin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;%=”’auth_user’ ise &amp; request.servervariables(“auth_user”)%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;%=”’auth_type’ is &amp; request.servervariables(“auth_type”)%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;%=”connection string is &amp; session(“baglanti_deyimi”%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">&lt;p&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Burada “baglanti_deyimi ifadesi yerinde sizin <u>Connection</u> deyiminiz yer almalıdır. Global.asa’da bu ifadelerin bulunmasına rağmen yine de çalışmıyorsa, Web Server programına, global.asa’nın içinde bulunduğu kök dizin için çalıştır (execute) izni verilmemiş olabilir. Bu kişisel Web Server’da veya yerel IIS’te oluyorsa, bütün yapacağınız şey kök dizin olan klasörü sağ tıklayarak izinlerini değiştirmektir. Bu hata evsahibi firmanın sitesinde oluyorsa, Web Sitesi yönetimi ile temasa geçmeniz gerekir.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC Microsoft Access 97 Driver] Data source name not ??</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Web Server’ın bulunduğu bilgisayarda MDAC (Microsoft Data Access Component) dosyaları ya bozulmuş ya da yanlış kurup kaldırma yüzünden bazı bileşenleri arasında sürüm farkı doğmuş demektir. MDAC’ın güncellenmesi çözüm sağlayabilir.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC Microsoft Access ODBC driver Driver] General error Unable to open registry key&#8230;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Registry Editor ile burada adı verilen kayıt anahtarı (Key) için verilen izinlerikontrol etmelisiniz. Bunun için Regedt32.exe programını kullanabilirsiniz.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="courier new">Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC SQL Server Driver] [dbnmpntw] ConnectionOpen (CreateFile()).</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Aynı bilgisayarda bile olsa SQL Server izinleri yeterli değilse, ODBC sürücüleri veritabaına ulaşamazlar. Sorunu çözmek için SQL Server yönetimiyle görüşmek ve izinleri değiştirmek gerekir. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bu ve diğer 80004005 hata mesajları için Microsoft’un sitesinde Q189408, Q174943, Q173742, ve Q175671 numaralı bilgi notlarına (<u>Knowledgebase articles</u>) başvurabilirsiniz.</font></p>
<h1><a title="_Toc481830293" name="_Toc481830293"></a><font face="arial black" size="5">ASP Hatası Arama</font></h1>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">ASP teknolojisi, Internet’in kendisine göre nisbeten eski HTTP protokolü ile işbirliği yapmak zorundadır ve bazen ASP sayfalarımızda oluşan hatalar, bizden (yazdığımız VBScript veya diğer Script kodlarından) değil, bu iki teknolojinin Server’daki uyumsuzluğundan kaynaklanıyor olabilir. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">ASP teknolojisi üç adımda çalışır:</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">1. Ziyaretçi bir ASP sayfası talep eder</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">2. Server talep edilen belgenin bir ASP programı olduğunu belirler ve bunu ziyaretçiye göndermeden önce ASP.DLL aracılığıyla çalıştırır.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">3. Ortaya çıkacak olan HTML belgesi ziyaretçiye gönderilir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bu bakımdan ASP hatasını ararken sorulacak birinci soru hatanın nerede olduğu olmalıdır. Hata istemci tarafında ise ASP sayfamız muhtemelen ziyaretçinin Browser’ı ile uyumlu olmayan HTML kodu üretiyor olabilir. Ayrıca hatanın hangi aşamada olduğunu yakalamamız gerekir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Sık alacağımız bir ASP hatası, Server’ın vereceği “VBS Script Error:” şeklinde başlayan mesajlar olacaktır. Bu, gerçekten de sayfamızdaki VBScript kodlarında hata olduğunu gösterir. Yapılacak tek şey, iyi bir programcı gibi, biraz açık havada gezdikten sonra kodu baştan sonra yeniden gözden geçirmek veya en iyisi başka bir programcının yardımını istemektir. Bir süre sonra insan kendi yazdığı kodlardaki hataları göremez hale gelir!</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Nesne oluşturma hataları ise “<u>Failed to create &#8230;</u>” diye başlar ve hemen hemen daima ASP sayfanızdaki <u>Server.Create</u><u>Object</u><u>..</u> diye başlayan deyimin icra edilemediğini gösterir. Bu sizin yanlış nesneye yanlış metod kullandırmaya kalkmanızdan olabileceği gibi, Web Server’ın size bazı bileşen dosyalarına (.dll ve .exe) erişim hakkı vermiyor olmasından kaynaklanabilir. Ücretsiz ASP desteği veren sitelerde çoğu zaman bu tür komutlar içeren Script’lere izin verilmez.</font></p>
<h1><a title="_Toc481830294" name="_Toc481830294"></a><font face="arial black" size="5">İleri ASP Konuları</font></h1>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">ASP’ye giriş niteliğindeki bu iki kitapçığın kapsamı dışında bırakılan bazı ASP konularını burada sıralayarak, bundan sonraki adımlarınıza yardımcı olabiliriz. Server izin verdiği ve gerekli yazılımı sağladığı taktirde, ASP sayfalarınızdan elektronik posta gönderebilirsiniz. Bunun bir Form’un Server’ın Create<u>Object</u> metodu ile Server’ın SMTP protokülünü kullanan mesaj gönderme programına (IIS’te “CDONTS.Mail” nesnesine) ulaşması ve bu nesneye alıcı ve gönderenin adresleri ile konu ve mesaj bölümlerini iletmesi gerekir. Bunun için gerekli program (veya nesne) adını ve ASP sayfalarınızdan mektup gönderme izniniz olup olmadığını Web Server yönetiminden öğrenmeniz gerekir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Bir diğer ileri ASP tekniği ise <u>COM</u> bileşenlerini kullanarak, ASP sayfalarınızı VBScript veya JavaScript yerine daha hızlı ve daha güvenli <u>binary</u> (program) dosyaları ile birleştirmek olabilir. C++, Visual Basic, Borland Delphi gibi bir dille yazılmış ve derlenmiş olan COM bileşenleri, kendilerine ASP sayfası tarafından gönderilen çağrı üzerine harekete geçerler ve büyük bir ihtimalle Server dışında yapmaları gereken işi yaparak sonucunu ASP sayfasına ulaştırılmak üzere Server’a bildirirler. Derlenmiş (program haline getirilmiş) oldukları için COM bileşenleri daha hızlı çalışırlar ve Server’ın kaynaklarını kullanmadıkları için de Web iletişimini yavaşlatmazlar. Bu tür bileşenlere çoğu zaman ADODB nesnesinin <u>.Command</u> metodu ile erişiriz. Microsoft ve diğer firmalar, ASP sayfalarımızla birlikte kullanılmak üzere COM programları üretmeye ve pazarlamaya başlamış bulunuyorlar. Bu tür bileşenleri gerçek Internet Server ortamında kullanabilmek için, programın Server’ın bulunduğu bilgisayarda Registry kaydının yapılması gerekir. Bunu Web Server yönetimi ile görüşmeniz şarttır.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="times new roman" size="3">Teşekkürler <a href="http://tbkdizayn.com/">TBKD</a></font></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yukle.wordpress.com/137/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yukle.wordpress.com/137/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yukle.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yukle.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yukle.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yukle.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yukle.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yukle.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yukle.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yukle.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yukle.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yukle.wordpress.com/137/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=137&subd=yukle&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yukle.wordpress.com/2007/03/16/asp-dersanesi-7-son/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/498ea01ee88beecb59be73ea42c1f3c6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Administrator</media:title>
		</media:content>
	</item>
		<item>
		<title>Asp dersanesi 6</title>
		<link>http://yukle.wordpress.com/2007/03/16/asp-dersanesi-6/</link>
		<comments>http://yukle.wordpress.com/2007/03/16/asp-dersanesi-6/#comments</comments>
		<pubDate>Fri, 16 Mar 2007 08:28:42 +0000</pubDate>
		<dc:creator>Super Admin</dc:creator>
				<category><![CDATA[Asp]]></category>
		<category><![CDATA[Asp Dersanesi]]></category>
		<category><![CDATA[Web Master Kaynakları]]></category>

		<guid isPermaLink="false">http://yukle.wordpress.com/2007/03/16/asp-dersanesi-6/</guid>
		<description><![CDATA[arasında &#38; işareti konularak gönderilir. Bu yöntemi, HTTP yoluyla Browser nasıl kullanıyorsa, biz de istediğimiz anda kullanabiliriz. Burada; 
bekle02.asp?BEKLE_SURE=3&#38;BEKLE_MESAJ=&#8221; &#38; mesaj &#38; _ &#8220;&#38;GONDER_URL=index.htm”
şeklindeki ifade de sayfa adından sonra konan soru işareti, Server’a bu bilgi kümesinin bu sayfaya iletilmesi komutunu vermenizi sağlar; bir bakıma Server’a “Şu bilgileri al; bekle02.asp sayfasına ver!” demiş oluyoruz. Bu bilgiler [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=136&subd=yukle&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">arasında &amp; işareti konularak gönderilir. Bu yöntemi, HTTP yoluyla Browser nasıl kullanıyorsa, biz de istediğimiz anda kullanabiliriz. Burada; </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">bekle02.asp?BEKLE_SURE=3&amp;BEKLE_MESAJ=&#8221; &amp; mesaj &amp; _ &#8220;&amp;GONDER_URL=index.htm”</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">şeklindeki ifade de sayfa adından sonra konan soru işareti, Server’a bu bilgi kümesinin bu sayfaya iletilmesi komutunu vermenizi sağlar; bir bakıma Server’a “Şu bilgileri al; <u>bekle02.asp</u> sayfasına ver!” demiş oluyoruz. Bu bilgiler hatırlayacaksınız, Server’da Request nesnesinde tutulur; eşittir işaretinin önündeki kısım değişken, arkasındaki kısım ise değer sayılır.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Dedik ki: <u>bekle02.asp</u> kendinise üç değişken verilmesi beklemektedir. Bunu sağlayan nedir? <u>Resquest</u> nesnesinden alınıp, bu sayfanın içindeki değişkenlere atanan üç değer bulunması. <u>bekle02.asp</u>’yi de yazalım:</font><span id="more-136"></span></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%@ LANGUAGE=&#8221;VBSCRIPT&#8221; %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">BEKLE_SURE = Request(&#8220;BEKLE_SURE&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">GONDER_URL = Request(&#8220;GONDER_URL&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">BEKLE_MESAJ = Request(&#8220;BEKLE_MESAJ&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;html&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;head&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Refresh&#8221; content=&#8221;&lt;% =BEKLE_SURE %&gt;; URL=&lt;% =GONDER_URL %&gt;&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;title&gt;ASP ile Bekletme&lt;/title&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/head&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;body color=&#8221;#FFFFFF&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;font face=&#8221;Arial&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p align = &#8220;center&#8221;&gt;&lt;strong&gt;&lt;% =BEKLE_MESAJ%&gt;&lt;/strong&gt; &lt;/p&gt; &lt;/font&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/body&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/html&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Daha önce yazdığımız <u>bekle01.asp</u>, ziyaretçiyi <u>bekle02.asp</u>’ye yönlendirirken ona üç “değişken=değer” çiftti gönderiyor; <u>bekle02.asp</u> bunları <u>Request</u> nesnesinden alarak, kendi değişkenlerine atıyor. Bu üç değişkenini inceleyelim.</font></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 72pt;"><span style="font-family:Symbol;"><span><font size="3">·</font><span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;">        </span></span></span><font face="Times New Roman" size="3">Ziyaretçinin bekleme süresince Browser penceresinde göreceği mesaj, BEKLE_MESAJ değişkeninde yer alıyor; </font></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 72pt;"><span style="font-family:Symbol;"><span><font size="3">·</font><span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;">        </span></span></span><font face="Times New Roman" size="3">Bu mesajı görüntülendiği sayfanın ziyaretçinin Browser’ında kalacağı süreyi BEKLE_SURE değişkenin değeri belirliyor:</font></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 72pt;"><span style="font-family:Symbol;"><span><font size="3">·</font><span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;">        </span></span></span><font face="Times New Roman" size="3">Bu sayfanın yerini alacak olan hedef sayfa veya ziyaretçinin Browser’ına gönderilecek yeni sayfanın adresini, GONDER_URL değişkeni belirliyor.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu programları çalıştırdığınızda ziyaretçinin Browser’ında üç saniye süreyle “Arzu ettiğiniz iş yapılıyor.. Lütfen bekleyiniz!” yazısı görüntülenecek; daha sonra Browser’a i<u>ndex.htm</u> sayfası gönderilecektir. Bu iki programı kendi ihtiyaçlarınıza uyarlamak isterseniz, sözgelimi bir veritabanının güncellenmesi sırasında veya benzeri bir muhtemel gecikme durumunda, ziyaretçiye durumu bildirmek için, köprüyü <u>bekle01.asp</u>’e verebilirsiniz; asıl hedef URL’i ise <u>bekle01.asp</u>’de verebilirsiniz. </font></p>
<h2><a title="_Toc481830282" name="_Toc481830282"></a><font face="Arial Black" size="3">Form Değerlerini Yakalayalım</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bir veritabanından çektiğimiz verilerle, Form etiketi içinde kullanabileceğimiz ve ziyaretçinin ya metin girmesine ya da seçim yapmasına imkan veren kutuları, seçenekleri nasıl doldurabileceğimize ilişkin bir örneği birinci kitapçıkta görmüştük. Burada şimdi bir Form’dan gelen verileri nasıl değişkenlere atayacağımızı ve bunları nasıl kullanacağımızı ele alalım.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu amaçla iki sayfa hazırlayacağız: birincisi içinde bir çok tercihler bulunan formlar olan bir HTML dosyası, diğeri ise bu Formun değerlerini alarak, kullanılır hale getirecek bir ASP programı olacak.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Önce <u>FormOrnek.htm</u> adlı şu dosyayı kaydedelim:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;Form Ornegi&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;H4&gt;Birinci Form&lt;/H4&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM ACTION=&#8221;FormOrnek.asp?HangiForm=1&#8243; METHOD=&#8221;POST&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Text&#8221; NAME=&#8221;MetinGir&#8221; VALUE=&#8221;Mesajınızı buraya yazınız&#8221; SIZE=&#8221;30&#8243; MAXLENGTH=&#8221;75&#8243;&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Password&#8221; NAME=&#8221;ParolaAlani&#8221; SIZE=&#8221;30&#8243; VALUE=&#8221;parola&#8221;&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TEXTAREA NAME=&#8221;MetinAlani&#8221; COLS=&#8221;30&#8243; ROWS=&#8221;3&#8243; WRAP=&#8221;VIRTUAL&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Buraya istediğiniz yazıyı yazabilirsiniz&#8230;&lt;/TEXTAREA&gt;&lt;P&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Submit&#8221; VALUE=&#8221;Gönder&#8221;&gt;  &lt;INPUT TYPE=&#8221;RESET&#8221; VALUE=&#8221;Sil&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/FORM&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;H4&gt;İkinci Form&lt;/H4&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM ACTION=&#8221;FormOrnek.asp?HangiForm=2&#8243; METHOD=&#8221;POST&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TABLE BORDER = 0&gt;&lt;TR&gt;&lt;TD&gt;&lt;INPUT TYPE=&#8221;Radio&#8221; NAME=&#8221;Radyo&#8221; VALUE=&#8221;Tercih1&#8243; CHECKED&gt;Radyo Düğmesi Tercih 1&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Radio&#8221; NAME=&#8221;Radyo&#8221; VALUE=&#8221;Tercih2&#8243;&gt;Radyo Düğmesi Tercih 2&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Radio&#8221; NAME=&#8221;Radyo&#8221; VALUE=&#8221;Tercih3&#8243;&gt;Radyo Düğmesi Tercih 3&lt;/TD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TD width=30&gt; &lt;/TD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TD&gt;&lt;INPUT TYPE=&#8221;Checkbox&#8221; NAME=&#8221;IsaretKutusu&#8221; VALUE=&#8221;Isaret1&#8243;&gt;İşaret Kutusu 1&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Checkbox&#8221; NAME=&#8221;IsaretKutusu&#8221; VALUE=&#8221;Isaret2&#8243;&gt;İşaret Kutusu 2&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Checkbox&#8221; NAME=&#8221;IsaretKutusu&#8221; VALUE=&#8221;Isaret3&#8243;&gt;İşaret Kutusu 3&lt;/TD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/TR&gt;&lt;/TABLE&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Submit&#8221; VALUE=&#8221;Gönder&#8221;&gt;  &lt;INPUT TYPE=&#8221;RESET&#8221; VALUE=&#8221;Sil&#8221;&gt;&lt;/FORM&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;H4&gt;Üçüncü Form&lt;/H4&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM ACTION=&#8221;FormOrnek.asp&#8221; METHOD=&#8221;GET&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Hidden&#8221; NAME=&#8221;HangiForm&#8221; VALUE=&#8221;3&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;SELECT NAME=&#8221;SecmeListesi&#8221; SIZE=&#8221;1&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=&#8221;ListeTercih1&#8243;&gt;Liste Tercih 1</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=&#8221;ListeTercih2&#8243;&gt;Liste Tercih 2</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=&#8221;ListeTercih3&#8243;&gt;Liste Tercih 3</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/SELECT&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;SELECT NAME=&#8221;CokluSecme&#8221; SIZE=&#8221;3&#8243; MULTIPLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=&#8221;ListeKutu1&#8243;&gt;Çoklu Seçme Kutusu 1</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=&#8221;ListeKutu2&#8243;&gt;Çoklu Seçme Kutusu 2</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=&#8221;ListeKutu3&#8243;&gt;Çoklu Seçme Kutusu 3</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/SELECT&gt;&lt;P&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Submit&#8221; VALUE=&#8221;Gönder&#8221;&gt;  &lt;INPUT TYPE=&#8221;RESET&#8221; VALUE=&#8221;Sil&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/FORM&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Daha sonra belirlediğimiz değişkenlerin Form’un hangi öğelerinden geldiğinin rahat anlaşılması için burada Form unsurlarının değeri olarak unsurun adına yakın kelimeleri kullandığımıza dikkat edin. Sayfada üç ayrı Form bulunduğu, ilk iki formun POST, üçüncüsünün ise GET metoduyla Server’a bilgi gönderdiği de dikkatinizi çekmiş olmalı. POST metodunda Server’a giden bilgiler, talep edilen sayfanın adına URL kodlama yöntemiyle (ve dolayısıyla Browser’ınızın URL kutusuna yazılarak) gönderilmez; Fakat ilk iki Form’da POST metodu kullanmış olmamıza rağmen, formu işleyecek programa bilgilerin hangi formdan gittiği sanki GET metodu kullanılmış gibi bildiriliyor. Bu yöntemi, <u>Request.Form</u> kolleksiyonuna yazılmasını istemediğimiz bilgiler için kullanabibiliriz. Üçüncü Form ise bilgilerini GET yoluyla gönderiyor ve kendisinin hangi form olduğuna ilişkin bilgiyi ise gizli bir değişkene yazıyor. Her üç durumda da HagiForm değişkeninin değeri olarak, ASP programına formun sıra numarası anlamına gelen sayı gönderiliyor. Birinci form 1, ikinci form 2, üçüncü form ise 3 değerini yolluyor. Bu HTML dosyasını Browser’da açarsanız, üç ayrı formu göreceksiniz.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0018&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Her üç formun gönderdiği bilgiler aşağıdaki programa ulaşıyor. Bu programı <u>FormOrnek.asp</u> adıyla kaydedebilirsiniz:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;ORNEK FORM SONUCLARI&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">dim FormTercihi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">FormTercihi = Request.QueryString(&#8220;HangiForm&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Select Case FormTercihi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Case 1</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Metin alanı sonuçları&lt;P&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TABLE BORDER=1 CELLPADDING=5 width=75%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TR&gt;&lt;TD&gt;Input/Text Alanı&lt;/TD&gt;&lt;TD&gt;&lt;B&gt;&lt;%= Request.Form(&#8220;MetinGir&#8221;) %&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TR&gt;&lt;TD&gt;Input/Passsword Alanı&lt;/TD&gt;&lt;TD&gt;&lt;B&gt;&lt;%= Request.Form(&#8220;ParolaAlani&#8221;) %&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TR&gt;&lt;TD&gt;TextArea Alanı&lt;/TD&gt;&lt;TD&gt;&lt;B&gt;&lt;%= Request.Form(&#8220;MetinAlani&#8221;) %&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/TABLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Case 2</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Radyo Düğmesi ve İşaret Kutusu Sonuçları&lt;P&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TABLE BORDER=1 CELLPADDING=5 width=25%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TR&gt;&lt;TD&gt;Seçilen Radyo Düğmesi&lt;/TD&gt;&lt;TD&gt;&lt;B&gt;&lt;%= Request.Form(&#8220;Radyo&#8221;) %&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TR&gt;&lt;TD&gt;İşaretlenen Kutular&lt;/TD&gt;&lt;TD&gt;&lt;B&gt;&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">dim strIsaretlenen</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>for each strIsaretlenen in Request.Form(&#8220;IsaretKutusu&#8221;)</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>Response.Write strIsaretlenen &amp; &#8220;&lt;BR&gt;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>next</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span> </span>%&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/TABLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Case 3</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Seçme Alanları sonuçları&lt;P&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TABLE BORDER=1 CELLPADDING=5 width=35%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TR&gt;&lt;TD&gt;Seçilen Liste Ögesi&lt;/TD&gt;&lt;TD&gt;&lt;B&gt;&lt;%= Request(&#8220;SecmeListesi&#8221;) %&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TR&gt;&lt;TD&gt;Seçilen Çoklu Liste Ögeleri&lt;/TD&gt;&lt;TD&gt;&lt;B&gt;&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>for each strIsaretlenen in Request(&#8220;CokluSecme&#8221;)</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>Response.Write strIsaretlenen &amp; &#8220;&lt;BR&gt;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>next</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/TABLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">End Select</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu programda, üç ayrı formdan gelebilecek bilgiler, <u>HangiForm</u> değişkeninin değerine göre, <u>Select Case</u> döngüsü ile üç ayrı bölümde işleniyor. İlk iki formda, bilgiler POST metodu ile geldiği için <u>Request.Form</u> nesnesinin içinde, değişken adıyla aranabilir. Üçüncü Formda ise bilgiler Request.<u>QueryString</u> nesnesinde bulunuyor. Burada bu bilgilerin daha önce görmediğimiz kısaltma yöntemiyle alınıp, sayfaya aktarıldığını görüyorsunuz; <u>&lt;%=Request(&#8220;SecmeListesi&#8221;)&gt;</u>, aslında;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Write Request.<u>QueryString</u>(“SecmeListesi”) </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ifadesinin kısaltılmışıdır. </font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>FormOrnek.htm</u>’in her üç formunda da bazı tercihler yaparak Gönder düğmesini tıkladığınızda, <u>FormOrnek.asp</u>’ye gönderilen URL bilgisine dikkat edin. İlk ikisinde sadece seçilen formun <u>HangiForm</u> değeri yer aldığı halde. üçüncüsünde formdaki bütün bilgiler burada URL-kodlanmış olarak yer alacaktır.</font></font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0019&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp00208&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0021&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Programın bilgi işleyen bölümünü kendiniz irdeleyebilir misiniz?</font></p>
<p class="ChapterTitle" style="margin:24pt 108pt 18pt 0;"><a title="_Toc481830283" name="_Toc481830283"></a><font face="Arial Black" size="6">Konuk Defteri Uygulaması</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu bölümde ilk tam ASP sitesini adım adım birlikte oluşturacağız; daha önce teorik veya kısaca uygulamalı gördüğümüz komutları, metodları ve ifadeleri toplu halde kullanma imkanı bulacağız.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Konuk Defteri, Internet sitemizi ziyaret edenlerle en kolay bilgi alışverişi yöntemidir; konuklarımız defterimize kendileri hakkında bazı bilgiler girerler. Burada yapacağımız örnekte, ziyaretçimize önce konuk defterimize bilgi girmek isteyip istemediğini soran bir sayfa sunacağız; burada konuk defteri bilgilerinin yer aldığı bir Form sayfasına gitmesini sağlayan köprü olacak. Form sayfamızdaki Gönder düğmesi tıklandığında bir ASP sayfası, Form’un yolladığı bilgileri ziyaretçimize gösterecek ve arzu ederse defterde yer alan diğer bilgileri okuma imkanı verecek. Ziyaretçimiz defterdeki diğer bilgileri okumak isterse, bir diğer ASP sayfası, bu bilgileri dosyadan okuyarak ziyaretçimize sunacak.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Birinci sayfamız burada basit bir HTMLsayfası ancak siz bunu isterseniz kendi ana sayfanızla bütünleştirebilirsiniz. Diyelim ki aşağıdaki kodu, <u>konuk01.htm</u> adıyla kaydettik:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;KONUK DEFTERIM&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;H1&gt;&lt;CENTER&gt;Hoşgeldiniz!&lt;/CENTER&gt;&lt;/H1&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Konuk Defterimi imzalamak ister misiniz?</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Çok teşekkürler</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;&lt;A href=&#8221;konuk02.htm&#8221;&gt;Deftere Git&lt;/A&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada konuk defterini izmalamak isteyenler için konuk defterini içeren dosyaya bir köprü var. Aşağıdaki form da konuk defterimiz olsun! Bunu da <u>konuk02.htm</u> adıyla kaydedelim: </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;KONUK DEFTERIM&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;H1&gt;&lt;CENTER&gt;Konuk Defteri!&lt;/CENTER&gt;&lt;/H1&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Konuk defteri sayfama hoşgeldiniz. Buraya kaydedeceğiniz bilgilerle birbirimizi daha iyi tanıma imkanı bulabiliriz.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;Çok teşekkürler&lt;/p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM ACTION=&#8221;konuk_isle.asp&#8221; METHOD=&#8221;post&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;Adınız: &lt;INPUT TYPE=&#8221;Text&#8221; SIZE=&#8221;20&#8243; NAME=&#8221;Adi&#8221;&gt;&lt;/p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;Soyadınız: &lt;INPUT TYPE=&#8221;Text&#8221; SIZE=&#8221;20&#8243; NAME=&#8221;Soyadi&#8221;&gt;&lt;/p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;E-Posta Adresiniz: &lt;INPUT TYPE=&#8221;Text&#8221; SIZE=&#8221;20&#8243; NAME=&#8221;Email&#8221;&gt;&lt;/p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;Düşünceleriniz: &lt;br&gt;&lt;TEXTAREA NAME=&#8221;Mesaj&#8221; COLS=&#8221;40&#8243; ROWS=&#8221;4&#8243;&gt;Sitem hakkındaki düşünceleriniz&lt;/TEXTAREA&gt;&lt;/p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Submit&#8221; NAME=&#8221;Gonder&#8221; VALUE=&#8221;Gönder!&#8221;&gt; &lt;INPUT TYPE=&#8221;Reset&#8221; NAME=&#8221;Sil&#8221; VALUE=&#8221; Sil! &#8220;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada oluşturduğumuz HTML alanlarından dördü, daha sonra işlenmek üzere, bize dört değişken verecek: Adi, Soyadi, Email ve Mesaj.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0015.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Aşağıdaki kod ile bu verileri işleyeceğiz. Bu kodları da <u>konuk_isle.asp</u> adıyla kaydedelim:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">@LANGUAGE=VBscript</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Option Explicit </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;KONUK DEFTERI KAYIT&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;h2&gt;Verdiğiniz Bilgiler:&lt;/h2&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Adınız: &lt;%=Request.Form(&#8220;Adi&#8221;)%&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Soyadınız: &lt;%=Request.Form(&#8220;Soyadi&#8221;)%&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">E-Posta Adresiniz: &lt;%=Request.Form(&#8220;Email&#8221;)%&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Düşünceleriniz: &lt;%=Request.Form(&#8220;Mesaj&#8221;)%&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim DosyaSistemi, KonukDosyasi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set DosyaSistemi = CreateObject(&#8220;Scripting.FileSystemObject&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set KonukDosyasi = DosyaSistemi.OpenTextFile(&#8220;c:\inetpub\wwwroot\konuklar.txt&#8221;,8, True)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">KonukDosyasi.WriteLine Request.Form(&#8220;Adi&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">KonukDosyasi.WriteLine Request.Form(&#8220;Soyadi&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">KonukDosyasi.WriteLine Request.Form(&#8220;Email&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">KonukDosyasi.WriteLine Request.Form(&#8220;Mesaj&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">KonukDosyasi.Close</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;H3&gt;Konuk Defterime kaydedildi. Çok teşekkür ederim.&lt;/H3&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;A href=&#8221;konuk_oku.asp&#8221;&gt;Konuk Defterini Oku!&lt;/A&gt;   &lt;A href=&#8221;index.htm&#8221;&gt;Ana Sayfaya Dön!&lt;/A&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada biraz duralım ve <u>konuk_isle.asp</u>’yi irdeleyelim. Form’u oluşturan sayfamızda dikkat ettiğiniz gibi, verileri POST metodu ile alıyoruz; dolayısıyla Form’dan gelen bilgiler, Request nesnesinin Form kolleksiyonunda yer alıyor; ve önce bu bilgileri ziyearetçimizin Browser penceresine yazdırıyoruz. Ziyaretçimiz böylece ne bilgi verdiğini ber kere daha görmüş oluyor. Sonra, <u>FileSystem</u> nesnesini kullanarak, bu bilgileri Web Server’ın kök dizininde <u>konuklar.txt</u> adlı dosyaya eklettiriyoruz. Bu işlemi yapan <u>WriteLine</u> metodu, her bir değişkenin değerini yazdıktan sonra satır sonuna yeni satır karakteri girecektir. Yine Bu bilgilerin kaydedildiğini ziyaretçiye bildirdikten sonra, kendisine defterimizdeki diğer girdileri okuma veya ana sayfaya dönme seçeneğini veriyoruz. Ziyaretçi, defterdeki diğer bilgileri okuma seçeneğini seçecek olursa gideceği sayfanın kodları ise aşağıda. Bu kodları da <u>konuk_oku.asp</u> adıyla kaydedelim:</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">@LANGUAGE=VBscript</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">Option Explicit </font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;TITLE&gt;KONUK DEFTERI OKUMA&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;h2&gt;Konuk Defterimde Yeralan Bilgiler:&lt;/h2&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">Bugüne kadar konuk defterimi imzalayan bütün dostlarıma teşekkür ederim.</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">Dim DosyaSistemi, KonukDosyasi, Adi, Soyadi, Email, Mesaj</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">Set DosyaSistemi = Create<u>Object</u>(&#8220;Scripting.<u>FileSystemObject</u>&#8220;)</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">Set KonukDosyasi = DosyaSistemi.OpenTextFile(&#8220;c:\inetpub\wwwroot\konuklar.txt&#8221;,1)</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">Do While Not KonukDosyasi.AtEndOfStream</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font><font face="Courier New"><span>                </span>Adi = KonukDosyasi.ReadLine</font></font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font><font face="Courier New"><span>                </span>Soyadi = KonukDosyasi.ReadLine</font></font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font><font face="Courier New"><span>                </span>Email = KonukDosyasi.ReadLine</font></font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font><font face="Courier New"><span>                </span>Mesaj = KonukDosyasi.ReadLine</font></font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font><font face="Courier New"><span>                </span>Response.Write Adi &amp; &#8220;&lt;BR&gt;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font><font face="Courier New"><span>                </span>Response.Write Soyadi &amp; &#8220;&lt;BR&gt;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font><font face="Courier New"><span>                </span>Response.Write Email &amp; &#8220;&lt;BR&gt;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font><font face="Courier New"><span>                </span>Response.Write Mesaj &amp; &#8220;&lt;P&gt;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">Loop</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">KonukDosyasi.Close</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;A href=&#8221;index.htm&#8221;&gt;Ana Sayfaya Dön!&lt;/A&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt -21.3pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Şimdi de bu kodun üzerinde duralım: Yine <u>FileSystem</u> nesnesinin <u>OpenTextFile</u> metodu ile, mevcut konuk girdileri dosyasını açıyoruz; ve içeriğini <u>Do</u> döngüsü ile, dosya sonuna varıncaya kadar <u>ReadLine</u> metodu ile okutuyoruz. ReadLine, dosyayı satır –satır okuyacaktır; burada ”satır” ölçüsü, dosya başı ile satırsonu-yeni satır (CRLF veya enter/Return) karakteri, iki satırsonu arası, veya bir satırsonu ve dosya sonu işareti arasında kalan metindir. Dosyamızın her bir satırı bir değişkenin değeri olarak yazıldığına göre, okunan her satır sırasıyla, Adi, Soyadi, Email ve Mesaj değişkenlerine değer olarak kaydedilecek ve ziyaretçininin Brıowser penceresine yazılacaktır.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu ana kodun etrafında sayfalarını görsel olarak zenginleştirmek, tabiî sizin elinizde! </font></p>
<p class="ChapterTitle" style="margin:24pt 108pt 18pt 0;"><a title="_Toc481830284" name="_Toc481830284"></a><font face="Arial Black" size="6">Veri Yönlendirmeli Web Uygulaması</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Birinci kitapçıkta, ADO nesnesini tanıdık ve ne işe yaradığını gördük. Bu bölümde ADO nesnesinin nasıl kullanıldığını ele alacağız; bu amaçla veritabanına dayanan, HTML etiketlerinin içeriğini bir veritabanından alan ve ziyaretçinin girdilerini bir veritabanına yazan örnek uygulama oluşturacağız. Bunu yaparken ADO’yu tanıtırken ele almadığımız bazı SQL komutları ile tanışacağız. </font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Örnek uygulamamız, ünlü bir Web Tasarımcısının müstakbel müşterilerine randevu verdiği bir site olacak. Müstakbel müşterilerimiz, Web sitemize bağlanacaklar, nasıl bir Web sitesi oluşturmak istediklerini onlara sunacağımız bir listeden seçecekler; sitelerinin özelliklerini ve bizimle ilk görüşmeyi yapmak istedikleri zamanı belirtecekler; Web programımız, bütün bu bilgileri bir veritabanındaki veri tablolarına dayanarak müstakbel müşterimize seçenek olarak sunacak; ziyaretçinin kabul ettiği randevu zaman dilimini veritabanındaki tabloda başka müşterilere verilmemek üzere, kapatacak. Fakat bu işe başlamadan önce hızlı bir bir veritabanı oluşturma kursu görelim.</font></p>
<h1><a title="_Toc481830285" name="_Toc481830285"></a><font face="Arial Black" size="5">Veri için hazırlık</font></h1>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Kullanacağımız veritabanını burada <u>MS Access</u> ile oluşturacağız. Fakat siz istediğiniz herhangi bir programı, örneğin <u>FileMaker Pro</u> veya <u>Paradox</u>’u kullanabilirsiniz. Elinizin altında <u>Oracle</u> veya <u>MS SQL Server</u> varsa, onları kullanmanızdan daha tabiî bir şey olamaz.</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">İlişkilendirilmiş Veritabanı (<u>Relational Database</u>) deyimini daha öce duymuş olmalısınız. Web Programımızda, böyle bir veritabanı kullanacağız. İlişkilendirilmiş Veritabanı, bir dosya içinde tabloların en az bir sütunundaki kaydın diğer tablolardaki en az bir sütunla aynı olduğu ve bu iki sütun birbirine bağlanmış veritabanı demektir. (Bu örnekte kullanacağımız veritabanının <u>Microsoft Access</u> ile oluşturulmuş örneğini, bu kitapçığın kod örnekleri arasında bulabilir ve bilgisayarınızda kurulu bir veritabanı işleme programı ile inceleyebilirsiniz. Bu tabloları kendi programınızda oluşturmak isterseniz, kayıt alanları ve özelliklerini buradaki örneklere uygun olarak oluşturmalısınız.)</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Veritabanı tablolarının ilişkilendirilme durumunu, oluşturacağımız veritabanının iki tablosu üzerinde gösterelim:</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;musteri_tablo.jpg&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Bu tabloda, müşterinin kurmak istediği site türünü belirten bir endeks sütunu var: TurNO. (Daha sonra bu veritabanını yükleyeceğimiz Web Server’ın işletim sistemini bilmediğimiz için, Türkçe alfabeyi desteklemeyen bir Server’ın “Tablo veya Alan Bulunamadı” hatası vermesini önlemek için alan adlarında Türkçe karakter kullanmamaya özen göstermemiz gerekir.) Bu kayıt, Site Türleri tablosunda da var:</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;tur_tablo.jpg&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Veritabanını oluştururken bu iki tabloyu TürNO sütunlarından ilişkilendirir ve ilerde veritabanına, “Bana, Müşteriler ve Site Türleri tablolarından TürNo sütunundaki veri aynı olan bütün kayıtları bul” şeklinde bir sorgulama emri (SQL JOIN komutu) verecek olursanız, Windows’un ODBC programı, veritabanını inceleyecek ve ortaya çıkartacağı verilerden biri şöyle olacaktır:</font></p>
<p class="MsoToa" style="margin:0 -8.8pt 6pt -14.2pt;"><u><font size="3"><font face="Times New Roman">ADI<span>          </span>SOYADI<span>              </span>EMAIL<span>              </span>SİTENO<span>   </span>GRAFNO<span>       </span>TURNO<span>          </span>TURADI<span>         </span>TURRAYİÇ</font></font></u></p>
<p class="MsoToa" style="margin:0 -8.8pt 6pt -14.2pt;"><font face="Times New Roman" size="3">Abdullah<span>      </span>Can<span>          </span>acan@sirket.com.tr<span>             </span>1<span>               </span>1<span>            </span>2<span>            </span>Intranet<span>           </span>4</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Şimdi diyebilirsiniz ki, daha sonra iki tabloyu birleştirmek yerine, neden baştan tek tablo yapmadık da, ilişkilendirme ve bir bir yığın SQL komutu yazma (ve tabiî öğrenme) külfetine girdik? Bunun çeşitli sebepleri var: Bir kere veritabanı uzmanları, birden fazla tabloda aynen tekrar eden değerleri, ayrı bir tabloda toplamayı bilgisayarın bellek yönetimi açısından daha etkin bir çalışma tarzı sayarlar. İkincisi, fiyat belirlerken Intranet türü Web siteleri için uygulayacağımız katsayıyı ilerde değiştirmek zorunda kalırsak, (bu iş tutarsa, en kısa zamanda fiyatlara zam yapacağımız şüphesiz olduğuna göre!) ve elimizde içinde 1500 kayıt bulunan bir tablo varsa, herbirinde türRayiç sütundaki veriyi tek-tek güncelleştirmek çok zor olabilir. Oysa bu tür ilişkilendirilmiş bir veritabanında bir tabloda bir kaydı değiştirmekle, bir diğer tablodaki binlerce, hatta milyonlarca kaydı güncelleştirmiş oluruz. Siz kendi veritabanınızı oluştururken, hangi verilerin hangi tabloda toplanacağına ve hangilerinin ayrı tablolara konulacağına şu kriterle karar verebilirsiniz: Bir tablonun birincil endeksine bağımlı olmayan bütün bilgiler o tablonun dışına çıkmalıdır. (Bu kriter size bir ölçüde şifreli görünüyorsa, veritabanı oluşturma ve yönetme konusunda bir kitap edinmeniz yerinde olur!)</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Veritabanı konularına aşina olmayanlar için bir iki noktaya daha açıklık getirmek gerekir. Tablolarımızın alan adlarını ve alanlardaki verilerin türlerini gösteren tabloya bakarsanız, bütün tablolarda bir sütunun “Birincil endeks” diye işaretlendiğini göreceksiniz. Bu alan, biri dışında bütün tablolarda otomatik sıra numarası şeklinde; Müşteri tablosunda ise müşterinin elektronik posta adresi şeklinde tayin edilmiş bulunuyor. Bu alanın varlık sebebi, kayıtlarımızda diğer bütün alanlardaki verileri aynı bile olsa her bir müşterinin ayrı bir varlık olarak korunmasını sağlar. (Tabiî, burada, iki müşterinin aynı elektronik posta adresine sahip olmayacağını varsayıyoruz!)</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;randevu_tablo.jpg&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;siteler_tablo.jpg&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;olcu_tablo.jpg&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;graf_tablo.jpg&gt;</font></font></span></p>
<h1><a title="_Toc481830286" name="_Toc481830286"></a><font face="Arial Black" size="5">İnşaata Başlarken</font></h1>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Biraz daha teknik olarak ifade edersek, inşa ettiğimiz programın (Web sitesinin) fonksiyonu, müşteriden bazı temel bilgileri alıp, bu bilgileri müşteri tablosuna işlemek, müşteriye bizim randevu defterimize (veri tabanındaki Randevu tablosuna) bakarak, boş bir zaman önermek, müşterinin kabul ettiği zaman dilimini Randevu tablosuna işlemek, ve bu zaman dilimini başkasına vermemek üzere kapatmak olacak. Biz, Web sitesi tasarımcısı olarak, sürekli, veritabanı dosyasını açarak, yeni randevu alan olup olmadığını kontrol etmek zorundayız. Yine arada bir, Randevu tablosuna yeni müşteri kabul edebileceğimiz boş zamanlarımızı eklememiz gerekir. Bu işlemi, örneğin <u>Access</u> programını kullanarak yapabiliriz.</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Bu amaçla kullanacağımız tabloların ilişkilerini şöyle gösterebiliriz:</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;relation.jpg&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Bu şemada görülen ilişkiler şu anda bir anlam ifade etmiyorsa, biraz sonra tablo çok daha aydınlanacaktır. Şimdilik, ya bu tablolara ve ilişkilere sahip bir veritabanı oluşturun; ya da örnek veritabanı dosyasını Kişisel Web Server’ın dizini içine kopyalayın.</font></p>
<h2><a title="_Toc481830287" name="_Toc481830287"></a><font face="Arial Black" size="3">ODBC’e Veritabanımızı Bildirelim</font></h2>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Windows’un Denetim Masası’nı açtığınızda, ya ODBC Data Sources, ya da ODBC(32 Bit) adlı bir simge göreceksiniz.</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;DATA00001.TIF&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">İkinci sekme olan <u>System DSN</u>’i açın ve <u>Add</u> (Ekle) düğmesini tıklayın. Açılacak kutuda, veritabanı dosyanıza uygun sürücüyü seçin. Bu kitapçığın örnek kodları arasında bulacağınız <u>web.mdb</u> adlı dosyayı kullanıyorsanız, <u>Microsoft Access Driver</u> adlı sürücüyü seçin) ve Son düğmesini tıklayın.</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;DATA00002.TIF&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Açılacak kutuda <u>Data Source Name</u> (Veri kaynağının adı) kutusuna Web (veya kendi veritabanınızın adını) yazın, isterseniz <u>Description</u> kutusuna veritabanını tanımlayan bir kaç kelime yazabilirsiniz. Database bölümünde <u>Select</u> (Seç) düğmesini tıklayarak veritabanı dosyanızı bulun.</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;DATA00003.TIF&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Şimdi, bilgisayarınızın ODBC arayüzü, Kişisel Web Server’ınız (vereceğimiz ASP komutları dolayısıyla) talep ettiği anda Browser’ınıza Web adlı veritabanından arzu edilen verileri seçip verecek veya bu dosyadaki tablolarda (yine ASP komutları ile talep edeceğiniz) güncelleştirmeleri yapacaktır.</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font face="Times New Roman" size="3">&lt;DATA00004.TIF&gt;</font></span></p>
<h2><a title="_Toc481830288" name="_Toc481830288"></a><font face="Arial Black" size="3">Sıra Web Programı’nda</font></h2>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Kuracağımız sitenin işleyiş tarzını veya stratejisini bir kere daha belirtelim: Sitemize ev sahipliği yapan Web Server’da bir veritabanı dosyamız var ve elimizdeki iş durumuna göre randevu verebileceğimiz, serbest olduğumuz günleri bu veritabanındaki Randevu tablosuna işliyoruz. Ziyaretçilerimiz, ana sayfadan geçtikten sonra, bir Web sitesi yaptğrmek için bizimle görüşmek istiyorlarsa, bazı bilgiler veriyorlar ve bu bilgilere göre, Web programımız, müşteriye tanımladığı siteyi kaça yapacağımızı bildiriyor ve boş olduğumuz zamanların bir listesini sunuyor. Müşteri adayı, bu listeden kendisi için elverişli zamanı seçiyor. Web programımız müşterinin verdiği bilgileri veritabanına işliyor; ve müşterinin seçtiği zamanı randevu tablosunda kapalı hale getiriyor, ki aynı zaman aralığı başka bir müşteriye daha önerilmesin! (Aşağıda, sayfalarımızı adım-adım oluştururken, oluşturduğmuz bazı değişkenlerin ne işe yarayacağı o anda belli olmayabilir. Bunları anlamadan geçmemek için önerim, bu kitapçığın kodlarını edindiyseniz, veritabanını sisteminize tanıtarak, ilgili ASP programını <u>index.htm</u>’den başlayarak bir kaç kere çalıştırmanızdır.)</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Önce index.htm sayfamızı yapalım. Bu basit bir “Hoşgeldiniz!” sayfası olacak. aşağıdaki kodu <u>index.htm</u> adıyla kaydedin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;Web Sitesi Yapılır&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY bgcolor=DarkOrange text=&#8221;white&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;center&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;table width=&#8221;250&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;tr&gt;&lt;td&gt;&lt;font face=&#8221;arial&#8221; size=&#8221;6&#8243;&gt;Web Sitenize Sahip Olmak İstiyorsunuz?&lt;br&gt;&lt;/font&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;&lt;p&gt;&lt;p&gt;&lt;font face=&#8221;arial&#8221; size=&#8221;3&#8243;&gt;Ama nasıl? HTML, ASP, ADO, ODBC ve daha bir çok alfabe çorbası öğrenmek zorundasınız</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;Ama bunları öğrenmeye zamanınız yok. Aslında öğrenirsiniz öğrenmeye, fakat zaman meselesi.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;Biz çook siteler yaptık, ve size de yardıma hazırız. Bizim işimiz Web sitesi yapmak! </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;Sizin de sitenizi yapalım.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;&lt;p&gt;&lt;center&gt;&lt;a href=&#8221;sayfa1.asp&#8221;&gt;Size de yardımcı olalım&lt;/a&gt;&lt;/center&gt;&lt;/font&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/center&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;&lt;/HTML&gt;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;veriuyg0001.tif&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Bu sayfamızda verdiğimiz mesajı beğenen müstakbel müşterilerimiz, sayfadaki köprüyü tıklayarak, nereye gidecekler? Şu aşağıdaki kodun yer aldığı sayfaya. Bunu da <u>sayfa1.asp</u> adıyla kaydedin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% @Language = VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;Web Sitesi Yapilir&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY bgcolor=darkorange text=&#8221;white&#8221; language=Turkish&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;table width=&#8221;250&#8243;&gt;&lt;tr&gt;&lt;td&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;font face=&#8221;arial&#8221; size=&#8221;6&#8243;&gt;Arzu ettiğiniz siteyi sür&#8217;atle oluşturabiliriz.&lt;p&gt;Önce</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">nasıl bir site istediğinizi ve grafik malzemenin durumunu belirtin?&lt;/font&gt; &lt;/P&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;&lt;p&gt;&lt;table width=&#8221;500&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;form action=&#8221;sayfa2.asp&#8221; method=&#8221;get&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TBODY&gt;&lt;tr&gt;&lt;td width=&#8221;500&#8243; align=&#8221;middle&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;&lt;!&#8211;#include file=&#8221;siteler.inc&#8221;&#8211;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kullanılacak grafik malzemenin durumu: &lt;!&#8211;#include file=&#8221;grafikler.inc&#8221;&#8211;&gt;&lt;br&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New">&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;&lt;input type=&#8221;submit&#8221; value=&#8221;Gönder&#8221; align=&#8221;left&#8221;&gt;&lt;/p&gt;<span>   </span></font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/td&gt;&lt;/tr&gt;&lt;/form&gt;&lt;/TBODY&gt;&lt;/table&gt;&lt;/center&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">“Bu sayfada ASP tekniği kullanmayı gerektiren hemen hemen hiç bir öge yok!” diyebilirsiniz; ama demeyin. İki haricî dosyayı <u>#include</u> yoluyla sayfaya eklediğimizi göruyor musunuz? Bu sayfanın bütün işlevi işte bu iki dosyada gizli!</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font size="3"><font face="Times New Roman"><u>siteler.inc</u> ve <u>grafikler.inc</u>, veritabanından veri çeken ve bunu getirip yukarıdaki yerlere yazmakla görevli olacaklar. Önce <u>siteler.inc</u>’i yapalım:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&#8216;Siteler tablosundan siteAdi sütunundaki bilgileri al.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLSITE = &#8220;SELECT siteAdi, siteNO FROM Siteler&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">set connsite = server.create<u>object</u>(&#8220;ADODB.Connection&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connsite.open &#8220;web&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">set siteler=connsite.execute(SQLSITE)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;select name=&#8221;siteNO&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% &#8216;Listedeki her kayit için su isi yap. %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Do while Not siteler.eof %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>      </span>&lt;Option value = &#8220;&lt;%= siteler(1) %&gt;&#8221;&gt;&lt;%= siteler(0) %&gt;&lt;/Option&gt;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>      </span>&lt;%siteler.MoveNext </font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Loop%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/select&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% siteler.close %&gt;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Hatırlarsanız, <u>#include</u> yoluyla sayfaya eklenen dosyanın içeriği ne ise aynen bu komutun olduğu yere yazılmış gibi olur, demiştik. <u>sayfa1.asp</u>’ye bakın; ve yukarıdaki kodu tam <u>siteler.inc</u>’in olduğu yerde düşünün. Şimdi <u>siteler.inc</u>, tek bir iş yapıyor: <u>web</u> isimli DSN’in verdiği bilgiler arasından <u>Siteler</u> tablosundan <u>siteAdi</u> ve <u>siteNo</u> 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?</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Şimdi <u>siteler.inc</u>’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 <u>siteNo</u>, ikinci sütunda ise <u>siteAdi</u> alanları var. Burada önce <u>siteAdi</u>’ni okutuyoruz; yani dizi değişkenin <u>siteler(0)</u> adlı birinci ögesi site türü adını, <u>siteler(1)</u> adlı ikinci ögesi ise bu türün numarasını tutuyor. Nitekim, bir <u>Do</u> döngüsü ile bu değerleri SELECT’in ögeleri olarak kullandığımızda önce OPTION’ın VALUE özelliğini <u>siteNo</u>, metnini ise <u>siteAdi</u> ile dolduruyoruz. Ve tabiî açtığımız veri bağlantısını kapatıyoruz: “siteler.close”.</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Şimdi <u>sayfa1.asp</u>’nin ikinci haricî dosyası olan <u>grafikler.inc</u>’i yazalım:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&#8216;Grafik durumuyla ilgili bilgileri Grafik tablosundan al.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQLGRAF = &#8220;SELECT grafNO, grafDurum FROM Grafik&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set conngraf = server.create<u>object</u>(&#8220;ADODB.Connection&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">conngraf.open &#8220;web&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set graf=conngraf.execute(SQLGRAF)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;SELECT name=&#8221;grafNO&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Do while Not graf.eof %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% &#8216;Bu bilgilerle seçenek kutusu yap. %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>&lt;Option value = &#8220;&lt;%= graf(0) %&gt;&#8221;&gt;&lt;%= graf(1) %&gt;&lt;/Option&gt;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>&lt;%graf.movenext </font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">loop%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New">&lt;% graf.close %&gt;<span>  </span></font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/select&gt;</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font face="Times New Roman" size="3">Bu dosya üzerinde uzun uzadıya durmaya gerek yok; yine aynı DSN’den, fakat bu kez veritabanıın Grafik tablosundan iki alandaki verileri çekiyoruz; <u>Do</u> döngüsü ile yeni bir SELECT’in içini dolduruyoruz. include dosyaları ile birlikte bu sayfa şu görüntüyü veriyor:</font></p>
<p class="MsoToa" style="margin:0 0 6pt;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;veriuyg0002.tif&gt;</font></font></span></p>
<p class="MsoToa" style="margin:0 0 6pt;"><font size="3"><font face="Times New Roman"><u>sayfa1.asp</u>’deki formun Gönder düğmesi tıklandığında bu bilgilerin GET metoduyla <u>sayfa2.asp</u>’ye gönderileceğini hatırlayacaksınız. O halde, bu HTML kodunu, <u>sayfa2.htm</u> adıyla kaydedin:</font></font></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yukle.wordpress.com/136/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yukle.wordpress.com/136/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yukle.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yukle.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yukle.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yukle.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yukle.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yukle.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yukle.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yukle.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yukle.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yukle.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=136&subd=yukle&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yukle.wordpress.com/2007/03/16/asp-dersanesi-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/498ea01ee88beecb59be73ea42c1f3c6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Administrator</media:title>
		</media:content>
	</item>
		<item>
		<title>Asp dersleri 5</title>
		<link>http://yukle.wordpress.com/2007/03/16/asp-dersleri-5/</link>
		<comments>http://yukle.wordpress.com/2007/03/16/asp-dersleri-5/#comments</comments>
		<pubDate>Fri, 16 Mar 2007 08:26:09 +0000</pubDate>
		<dc:creator>Super Admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[&#60;FORM ACTION=”&#8230;” METHOD=POST&#124;GET&#62;
&#60;INPUT TYPE=”checkbox” NAME=metin1 VALUE=deger1&#62;
&#60;INPUT TYPE=”checkbox” NAME=metin1 VALUE=deger2&#62;
&#60;INPUT TYPE=”checkbox” NAME=metin1 VALUE=deger3&#62;
&#60;/SELECT&#62;
Bu Form’un gönder (Submit) düğmesi ile sağlanan hareket (ACTION) seçilen değeri Forma gönderecektir. Radyo düğmesi ile Checkbox’ın arasındaki fark, ziyaretçinin aynı ismi taşıyan radyo düğmelerinden birini işaretleyebilirken; istediği kadar Checkbox’a işaret koyabilmesidir. Birden fazla Checkbox işaretlendiği taktirde Server’a “metin1=deger1, deger2..” şeklinde bilgi gönderirler. (ASP [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=135&subd=yukle&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM ACTION=”&#8230;” METHOD=POST|GET&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=”checkbox” NAME=<em>metin1</em> VALUE=<em>deger1</em>&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=”checkbox” NAME=m<em>etin1</em> VALUE=<em>deger2</em>&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=”checkbox” NAME=<em>metin1</em> VALUE=<em>deger3</em>&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/SELECT&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu Form’un gönder (Submit) düğmesi ile sağlanan hareket (ACTION) seçilen değeri Forma gönderecektir. Radyo düğmesi ile Checkbox’ın arasındaki fark, ziyaretçinin aynı ismi taşıyan radyo düğmelerinden birini işaretleyebilirken; istediği kadar Checkbox’a işaret koyabilmesidir. Birden fazla Checkbox işaretlendiği taktirde Server’a “<u>metin1=deger1, deger2..</u>” şeklinde bilgi gönderirler. (ASP programlama açısından, bu değişken <u>Request.Form</u> nesnesinde <u>Checkbox</u>’ın adını taşıyan kolleksiyonun içinde dizi-değişken olarak yazılır.)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Yukarıdaki radyo düğmesi örneğimizin sadece <u>Do</u> döngüsüne ait kısmını<span>  </span>değiştirerek,<u>Checkbox</u>’a uyarlayalım, ve <u>isaret.asp</u> adıyla kaydedelim:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Do While Not rsVeri.eof %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TR&gt;&lt;TD&gt;&lt;INPUT TYPE=&#8221;checkbox&#8221; VALUE=&#8221;&lt;%=rsVeri(0)%&gt;&#8221; NAME=&#8221;Isaret&#8221;&gt;&lt;/TD&gt; &lt;TD&gt;&lt;%=rsVeri(0)%&gt;&lt;/TD&gt;&lt;/TR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%rsVeri.movenext </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">loop%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Ziyaretçi bu form ile birden fazla kutu işaretleyerek Gönder düğmesine basarsa, Server’a gelecek bilgi örneğin, “Isaret=Kırmızı, Mavi” şeklinde olacaktır.</font><span id="more-135"></span></p>
<p class="ChapterTitle" style="margin:24pt 108pt 18pt 0;"><a title="_Toc481830272" name="_Toc481830272"></a><font face="Arial Black" size="6">Alıştırma Uygulamaları</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu bölümde, birinci kitapçıkta öğrendiklerimizi küçük ASP uygulamalarında kullanacağız; ve böylece son iki bölümde yer alan nisbeten daha büyük ASP Programları için hazırlık yapmış olacağız. Bu bölümdeki örnekleri mutlaka kendiniz yazmalısınız ve açıklanmamış kodlardan anlamadıklarınız olursa mutlaka daha önceki bölümlere dönerek gözatmalısınız. Bu bölümdeki kodları dikkatle incelerseniz, çoğunda daha önce ele aldığımız temel VBScript komutlarının veya ASP nesnelerine ait metodlarının kimi zaman değişik tarzda kullanımına yer verdiğimizi göreceksiniz. Temel kullanım biçimlerini öğrendikten sonra, mutlaka Microsoft’un MS-Developers Network sitesinde (http://www.microsoft.com/msdn) VBScript ve ASP konularındaki belgeleri ve eğitim metinlerini incelemelisiniz.</font></p>
<h2><a title="_Toc481830273" name="_Toc481830273"></a><font face="Arial Black" size="3">Doğum Günü Hesabı</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">VBScript’in dil olarak bize sağladığı bazı kolaylıkları ASP teknolojisi ile birleştirebiliriz. ASP sayfalarımızda istediğimiz gibi HTML kodları da kullanırız. Bu örnekte, bu iki unsuru da birarada göreceğiz. Aşağıdaki kodu <u>dogumgunu01.asp</u> adıyla kaydedin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% @LANGUAGE=VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Option Explicit</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Expires = 0 </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim serverSaat, kalanSaat</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">serverSaat = Time</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&#8216; aşağıdaki satırda işaretler arasındaki yere kendi doğum gününüzü yazın</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">kalanSaat = DateDiff(&#8220;h&#8221;,Now,#7/8/2000#)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;Dogum Günü Hesabı!&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;H3&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;CENTER&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;Selam:&lt;/p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;Şu anda saat: &lt;%=ServerSaat%&gt;&lt;/p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">If kalanSaat &gt; 0 Then</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>    </span>Response.Write &#8220;Doğum gününüze &#8221; &amp; kalanSaat &amp; &#8221; saat var.&#8221; &amp; VbCrLf</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">ElseIf kalanSaat &lt; 0 Then</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>    </span>Response.Write &#8220;Doğum gününüz &#8221; &amp; kalanSaat &amp; &#8221; geçmiş buluyor.&#8221; &amp; VbCrLf</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Else</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>    </span>Response.Write &#8220;&lt;b&gt;Doğum gününüz kutlu olsun!&lt;/b&gt;&#8221; &amp; VbCrLf</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">End If</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/CENTER&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/H3&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu kodda bulunan ASP nesnelerini ve metodlarını kolayca görüyor olmalısınız. Tanımlamadığımız bir değişken kullanmayı veya değişken adlarını yanlış yazmayı önleyen <u>Option Explicit</u> ifadesi dikkatinizi çekiyor olmalı. Sayfamızda bir hesap yapılacağı için Browser tarafından geçici Internet dosyaları arasında (<u>cache</u>) saklanmasını istemediğimizi, <u>Response.Expires</u>’ın değerini 0 yaparak belirtiyoruz. iki değişken tanımlıyoruz (serverSaat ve kalanSaat) ve bunlardan birincisine Server’ın o andaki saatini <u>Time</u> fonksiyonu ile atıyoruz. İkinci değişken ise hesaplama sonucu belirlenecek. Bu arada ASP programının hangi tarihe kaç saat kaldığını hesaplamasını istiyorsak, kalanSaat’i belirleyecek formüle o tarihi yazıyoruz. Bu formüle dikkatle bakalım:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">kalanSaat = DateDiff(&#8220;h&#8221;,Now,#7/8/2000#)</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>DateDiff</u> ve <u>DateAdd</u>, VBScript’in vereceğiniz iki tarih arasında, yine vereceğiniz biçime göre farkı bulmasını veya toplamasını sağlar. Buradaki “h” hesap sonucunun saat olarak verilmesini istediğimiz gösterir. “d” ise sonucu gün olarak istediğimiz anlamına gelir. <u>Now</u>, Server’ın o andaki saatidir; ”#” işaretleri arasında ise hesabın yapılacağı tarih, veya buradaki örnekte doğum gününüz yer alıyor. kalanSaat değişkeninin değeri bu hesaplama sonucu olarak doğum gününüze kalan saat olacaktır. </font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Kodumuzun geri kalan bölümünde ise elde ettiğimiz sonucu Browser’a yollayan bir <u>If</u> seçimi var: doğum gününüze kalan saat 0’dan büyükse veya küçükse bunu farklı cümlelerle belirtiyoruz. Kalan süre 0 ise, bugün doğumgününüz demektir! (ASP ile bu kadar uğraşırsa, insanın doğum gününü filan unutması normaldir. üzülmeyin!)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Daha önce VBScript’in metin ve değişkenleri birbirine “&amp;” işareti ile eklediğini görmüştük. VBScript ile yazdırdığımız satırların sonuna kimi zaman &lt;BR&gt; kodu koyarak, yeni satırın bir satır aşağıdan başlamasını sağladığımızı hatırlıyor olmalısınız. Burada <u>&amp; VbCrLf</u> şeklinde gördüğümüz ifade de bunu sağlar. Bu, Visual Basic’in “alt satıra geç, başa git!” (<u>Carriage Return</u>, <u>Line Feed</u>) komutudur.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0011.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Dedik ki, <u>DateDiff</u> ve <u>DateAdd</u> fonksiyonlarının, sonucu gün olarak vermesini istiyorsanız, “d” argümanını kullanmanız gerekir. Şimdi burada öğrendikleriniz bu programı doğumgününüze kalan saati değil de günü hesaplayacak şekilde değiştirebilir misiniz? (Ortaya çıkartacağınız kodu bu kitapçığın kodları arasındaki <u>dogumgunu02.asp</u> dosyası ile karaşılaştırabilirsiniz.)</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0012.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">//////////////////KUTU///////////////////////</font></font></span></p>
<h2><a title="_Toc481830274" name="_Toc481830274"></a><font face="Arial Black" size="3">Çift Tırnak Gerekince!</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Kimi zaman ASP yoluyla ziyaretçininr Browser’ına HTML kodu göndermek gerektiğinde HTML’in gerektirdiği çift tırmak işaretini yazdırma sorunuyla karşılaşırız. VBScript’in gereği olan çift-tırnak işaretinin içine koyacağımız HTML’in gereği olan çift tırnak, ASP hatasına yol açar, C&#8217;den türetilen dillerde ters bölü işaretiyle yaptığımız türden, kontrol karakterlerinin metin olarak anlaşılmaması işini (ESCape-ing&#8217;i) VBScript’te türlü şekillerde yapabiliriz. Burada, yerine göre, üç yöntemden yararlanabiliriz işe yarar:</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><span> </span>1. Tırnak işareti gereken yerde iki kere tırnak yazmak;</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">2. İçerdeki tırnak yerine tek-tırnak kullanmak</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">3. İçerdeki tırnak yerine &amp; Chr(34) &amp; kullanmak. (Bu yöntemi kullandığımızda &#8220;dışardaki&#8221; tırnak diye bir şey kalmadığına dikkat etmek gerekir.)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Örnekler:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">objMetin.WriteLine(&#8220;&lt;%@ LANGUAGE=&#8221;"VBScript&#8221;"%\&gt;&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">objMetin.WriteLine(&#8220;&lt;%@ LANGUAGE=&#8217;VBScript&#8217;%\&gt;&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">objTsOut.WriteLine(&#8220;&lt;%@ LANGUAGE=&#8221; &amp; Chr(34) &amp; &#8220;VBScript&#8221; &amp; Chr(34) &amp; &#8220;%\&gt;&#8221;) </font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">////////////////KUTU BİTTİ//////////////</font></font></span></p>
<h2><a title="_Toc481830275" name="_Toc481830275"></a><font face="Arial Black" size="3">HTML Dışında İçerik</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">HTTP iletişiminde istemci Browser ile Server arasında her talep ve sunuşla birlikte bir dizi <u>HTTP Header</u> (başlık) bilgisi gönderildiğini biliyoruz. Bu bilgiler arasında neler bulunduğunu dabu kitapçığın kodları arasında bulunan <u>SerDeg.asp</u> dosyasını çalıştırarak inceleyebilirsiniz. Browser penceresinde beliren bilgilere dikkat ederseniz, Browser, Server’a HTTP yoluyla kabul edebileceği bilgi türlerini de sıralıyor:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">HTTP_ACCEPT:image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */* </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada düzyazı (<u>text/plain</u>) türünün bulunmadığını görüyorsunuz. Fakat ASP yoluyla, sayfanıza düz yazı gönderebilirsiniz. Aşağıdaki kodu <u>duzyazi.asp</u> adıyla kaydedin, ve çalıştırın:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% @LANGUAGE=VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.ContentType = &#8220;text/plain&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Expires = 0</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Selamlar</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Bu dosyada HTML etiketi kullanmıyoruz.</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Metin tamamen bir düz yazıdan ibaret. İçinde &lt;BR&gt; kodu</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">bulunmadığı halde</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">satırlar Enter&#8217;a bastığımız yerde alt satıra geçecektir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu kodu yazarken buradaki örnekte gördüğünüz satır sonlarında Enter’a basmalısınız. Browser’ınızdaki sonuç şuna benzer ıolmalı:</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0013.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Genellikle HTML sayfalarımızı tasarlarken içerik türünü belirten <u>Content-Type</u> özelliğini yazmayız; çünkü Browser, içerik türü belirtilmemişse gelen belgenin mutlaka “text/html” olduğunu varsayar. Fakat burada olduğu gibi, içinde bir tek HTML etiketi (hatta &lt;HTML&gt; etiketi bile) olmayan bir metni Browsar’a gönderebilir ve istediğimiz şekilde görüntületebiliriz. Bunu <u>Response.ContentType = &#8220;text/plain&#8221;</u> ifadesi sağlamaktadır.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Response</u> nesnesi, varsayılan türler dışında sadece düz yazı türü göndermekle kalmaz, Browser’ın kabul edebileceği ve HTTP’nin aktarılmasına elverişli olduğu her türlü dosyayı gönderebilir. Bu dosya türlerinin hangileri olabileceğini çevre değişkenlerinden HTTP_Accept’in içinde görebilirsiniz. Bunu sınamak için <u>duzyazi.asp</u>’nin <u>Content-Type</u> satırını şu şekilde değiştirin ve dosyayı <u>msword.asp</u> adıyla kaydedin:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.ContentType = &#8220;application/msword&#8221;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu dosyayı çalıştırdığınızda, Broewser türünüze ve ayarlarınıza ve sisteminizde MS-Word programının bulunup bulunmamasına bağlı olarak, ya doğruca ya da size sorarak, bilgisayarınız MS Word kelime işlemcisini açacaktır:</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0014.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu imkandan ziyaretçiye resim veya diğer tür dosyaları göndermek için yayarlanabiliriz. Ancak bir resim dosyasını gönderirken, metin vermek yerine dosya yolu ve adını belirtmemiz gerekir.</font></p>
<h2><a title="_Toc481830276" name="_Toc481830276"></a><font face="Arial Black" size="3">Başka Sayfaya Yönlendirme</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Diyelim ki ziyaretçilerimizin Web programımızda belirli işleri yapabilmeleri veya eski ifadesiyle sitemizde belirli bir sayfaya erişmek için kayıt yaptırmış olmaları gerekiyor; bu kaydı yaptırmamış olanları kayıt sayfasına yönlendirmek istiyoruz. Birazdan form yoluyla ziyaretçiden bilgi alma ve bunu işlemeyi göreceğiz, ama şimdilik sadece bu senaryonun ikinci kısmını ele alalım: ziyaretçimizi başka sayfaya yönlendirelim. Bunun için iki ayrı sayfa yapacağız. Önce şu kodu, <u>gonder.asp</u> adıyla kaydedin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% @LANGUAGE=VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Redirect(&#8220;yeni.asp&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Expires = 0</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;ASP ILE YONLENDİRME&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Bu sayfada yazılı olanları okumanız mümkün olmayacak&lt;br&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">çünkü bu sayfa sizi başka sayfaya gönderecek..</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Şimdi şu kodu da <u>yeni.asp</u> adıyla kaydedin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;YENİ SAYFA&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%= “Sizi buraya başka sayfa gönderdi.. &lt;BR&gt;”%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>gonder.asp</u>’yi çağırın; karşınıza <u>yeni.asp</u>’nin içeriği gelecektir; çünkü <u>gonder.asp</u> kendisinden beklediğimizi yapacak ve sizi <u>yeni.asp</u>’ye gönderecektir. Bunu “Response.Redirect” metodu yapmaktadır. Bu metodun argümanı olarak kendi programımızın bir başka sayfasını verebileceğiz gibi, bir Internet sitesinin URL’ini de verebiliriz.</font></font></p>
<h2><a title="_Toc481830277" name="_Toc481830277"></a><font face="Arial Black" size="3">Ziyaretçiden Bilgi Alma</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">İstersek adına Web Programı diyelim, sitemize ziyaretçilerin bilgi ulaştırması ancak HTML’in <u>Form</u> etiketi yoluyla olur. Klasik HTML+CGI yöntemleri ile ASP tekniğinde <u>Form</u> etiketlerinin işlevleri arasında bir fark yoktur. Ancak aralarındaki benzerlik de hemen hemen bundan ibarettir. Klasik HTML+CGI yönteminde Form’larımızın <u>Action</u> özelliğine değer olarak çoğu zaman bir CGI programının yolunu ve adını yazarız; oysa ASP’de Form bu bilgileri kendisinin de içinde bulunduğu ASP sayfasına gönderebilir; ve örneğin formun eksik doldurulup doldurulmadığını sınayabilir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">HTML bilgilerinizi tazelerseniz; bir Form’dan Server’a iki metodla bilgi gelebilir: <u>Get</u> ve <u>Post</u> yöntemleriyle. <u>Get</u>, Browser’ın bilgileri yumak yapıp, aradaki boşlukları kaldırarak ve ASCII olmayan karakterleri URL koduyla şifreleyerek <u>Query_String</u> içine yazdırmasını sağlar. Diğer yöntemi birazdan ele alacağız.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Küçük bir form oluşturalım ve bu formdan <u>Get</u> yoluyla gelecek bilgileri daha sonra nasıl kullanabileceğimizi görmek için, şimdilik sadece sayfamıza yazdıralım. Şu kodu <u>miniform_get.asp</u> adıyla kaydedin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% @LANGUAGE=VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Option Explicit</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Expires = 0 </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim strAdi, strSoyadi, hamBilgi, islenmisBilgi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">If Request.ServerVariables(&#8220;QUERY_STRING&#8221;) &lt;&gt; &#8220;&#8221; Then</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>     </span>strAdi = Trim(Request.<u>QueryString</u>(&#8220;adi&#8221;))</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>     </span>strSoyadi = Trim(Request.<u>QueryString</u>(&#8220;soyadi&#8221;))</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>     </span>hamBilgi = Trim(Request.<u>QueryString</u>(&#8220;mesaj&#8221;))</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>     </span>islenmisBilgi = Replace(hamBilgi, vbcrlf, &#8220;&lt;BR&gt;&#8221; &amp; vbcrlf)</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;html&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;head&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;title&gt;Mini Form&lt;/title&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;meta http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/head&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;body&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Script&#8217;imize Form&#8217;dan bilgi ulaştı &lt;BR&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Gelen bilgiler:&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Formu dolduran kişinin adı: &lt;%= strAdi%&gt; &lt;BR&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Formu dolduran kişinin Soyadı: &lt;%= strSoyadi%&gt; &lt;BR&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Ham Bilgiler: &lt;%= hamBilgi%&gt; &lt;BR&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">İşlenmiş Bilgiler: &lt;%= islenmisBilgi%&gt; &lt;BR&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&#8220;Query_String&#8221; olarak gelen bilgi: &lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%= Request.ServerVariables(&#8220;QUERY_STRING&#8221;)%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/body&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/html&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Else</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;html&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;body&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Bize bilgi verir misiniz?&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM ACTION= &#8220;&lt;%= Request.ServerVariables(&#8220;SCRIPT_NAME&#8221;) %&gt;&#8221; METHOD=&#8221;GET&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Adınız: &lt;INPUT TYPE=&#8221;Text&#8221; NAME=&#8221;adi&#8221;&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Soyadınız: &lt;INPUT TYPE=&#8221;Text&#8221; NAME=&#8221;soyadi&#8221;&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Mesajınız: &lt;TEXTAREA NAME=&#8221;mesaj&#8221;&gt;Mesajınızı buraya yazın!&lt;/TEXTAREA&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Submit&#8221; NAME=&#8221;Gönder&#8221; VALUE=&#8221;Gönder&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/FORM&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/body&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/html&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% End If %&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Kodumuzun bir değişken tanımladığımız ve Form’dan gelen bilgileri işleyen bölümü, bir de henüz bu bilgi gelmeden önce Form’u oluşturan bölümü olduğuna dikkat ediyor musunuz? Bu iki bölümü bir <u>If</u> sınama deyimiyle oluşturduğumuzu da görüyorsunuz.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ASP tekniği ve VBScript’in kolaylıkları birleşince, CGI’da olduğu gibi, Formdan gelen bilgileri özel fonksiyonlar yazarak ayıklamamız gerekmez. ASP’nin anladığı şekliyle, <u>Query_String</u> Form’dan GET metoduyla gelen bilgileri Form’un bilgileri atadığı değişkenlerin adlarıyla eşleştirerek tutar; ve bize sadece Form’daki değişkenlerin değerlerini, istiyorsak, başka değişkenlere atamak kalır. Burada Form’un “adi” olan değişkenini bir String değişkeni olan <u>strAdi</u> değişkenine, yine Form’un “soyadi” olan değişkenini başka bir bir String değişkeni olan <u>strSoyadi</u> değişkenine atıyoruz. Bunu yapmamızın sebeplerinden biri iki dizi değişkenden hangisinin ASP tarafında kullanıldığını bilmektir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Form’un üçüncü değişkeni olan “mesaj” ise ASP tarafından işlenirken, iki şekilde ele alınacak: <u>hamBilgi</u> değişkeninin değeri olarak, ve bunu <u>Replace()</u> fonksiyonu ile işledikten sonra atayacağımız <u>islenmisBilgi</u> değişkenini değeri olarak. </font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Replace()</u> fonksiyonu, bir değişkende bir değeri bulur ve arzu ettiğimiz bir başka değerle değştirir. Üç argüman alır: içinde arama ve değişiklik yapılacak değişken, aranacak değer ve yerine konacak değer. Burada iki veya daha fazla paragraf içeren bir mesajın içindeki satırbaşı-yeni paragraf karakterini, HTML’in anlayacağı &lt;BR&gt; ve satırbaşı karakteri ile değiştiriyoruz.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Şimdi <u>miniform_get.asp</u>’yi çalıştırın, doldurun (mesaj bölümünde iki paragraf oluşturmak için bir yerde Ctrl+Enter’a basmayı unutmayın! Yoksa işlenmiş bilgi ile ham bilginin farkını göremeyiz!) ve Gönder tuşunu tıklayın. Bu arada Browser’ınızın URL hanesine bakın. Bu <u>Get</u> metodunun bilgi gönderme şeklidir. Bilgiler URL-kodu olarak değiştirilir ve gideceği sayfanın adına, soru işareti ile eklenerek, gönderilir. (Tabii ziyaretçiniz yıldızlar halinde görüntülenen bir parola yazdıysa onu da burada açık şekilde görecektir!)</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0015.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bizim Form bilgilerimiz hangi sayfaya gönderiliyor? Yine kendisine. Bunu Form etiketinin <u>Action</u> özelliğinin karşısında yazılı olan VBScript kodu sağlıyor. Bu yolla gelen bilgi, şuna benzer olmalıdır:</font></p>
<p class="NormKod" style="margin:0 0 3pt;"><font face="Courier New">Script&#8217;imize Form&#8217;dan bilgi ulaştı </font></p>
<p class="NormKod" style="margin:0 0 3pt;"><font face="Courier New">Gelen bilgiler:</font></p>
<p class="NormKod" style="margin:0 0 3pt;"><font face="Courier New">Formu dolduran kişinin adı: Kroninukus </font></p>
<p class="NormKod" style="margin:0 0 3pt;"><font face="Courier New">Formu dolduran kişinin Soyadı: Computerium </font></p>
<p class="NormKod" style="margin:0 0 3pt;"><font face="Courier New">Ham Bilgiler: Merhaba Ben üniversiteyi yeni bitirmiş bir gencim! </font></p>
<p class="NormKod" style="margin:0 0 3pt;"><font face="Courier New">İşlenmiş Bilgiler: Merhaba</font></p>
<p class="NormKod" style="margin:0 0 3pt;"><font face="Courier New">Ben üniversiteyi yeni bitirmiş bir gencim! </font></p>
<p class="NormKod" style="margin:0 0 3pt;"><font face="Courier New">&#8220;Query_String&#8221; olarak gelen bilgi: </font></p>
<p class="NormKod" style="margin:0 0 3pt;"><font face="Courier New">adi=Kroninukus+&amp;soyadi=Computerium+&amp;mesaj=Merhaba%0D%0ABen+%FCniversiteyi+yeni+bitirmi%FE+bir+gencim%21+%0D%0A&amp;G%F6nder=G%F6nder</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Replace() fonksiyonunun, mesajın içindeki CRLF karakterini bulup yerine &lt;BR&gt; koyduğuna dikkat edin. <u>Query_String</u>’in yazdığınız ad ve soyad ile mesajı nasıl yumak (tek <u>String</u>) yaptığına bakın. Ve programımızın bu yumaktan bilgileri alıp, yeni değişkenlere atayarak Browser penceresinde nasıl görüntülediğini inceleyin.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu programın canalıcı noktası, Request nesnesinin ServerVariables kolleksiyonunda, Query_String koleksiyonunu kullanmasıdır. Çünkü <u>Get</u>, Form’un sağladığı bilgileri bu koleksiyona kaydetmiş bulunuyor.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Şimdi aynı işi Post metodu ile yapalım. Bunun için biraz önce kaydediğiniz kodda şu değişiklikleri yapın ve <u>miniform_post.asp</u> adıyla kaydedin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% @LANGUAGE=VBscript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Option Explicit</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Expires = 0 </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim strAdi, strSoyadi, strBilgi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">If Request.ServerVariables(&#8220;CONTENT_LENGTH&#8221;) &lt;&gt; 0 Then</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>strAdi = Trim(Request.Form(&#8220;adi&#8221;))</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>strSoyadi = Trim(Request.Form(&#8220;soyadi&#8221;))</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>strBilgi = Trim(Request.Form(&#8220;mesaj&#8221;))</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>strBilgi = Replace(strBilgi, vbcrlf, &#8220;&lt;BR&gt;&#8221; &amp; vbcrlf)</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;html&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;head&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;title&gt;Mini Form (Post)&lt;/title&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;meta http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/head&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;body&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Script&#8217;imize Form&#8217;dan bilgi ulaştı &lt;BR&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Gelen bilgiler:&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Formu dolduran kişinin adı: &lt;%= strAdi%&gt; &lt;BR&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Formu dolduran kişinin Soyadı: &lt;%= strSoyadi%&gt; &lt;BR&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Mesaj: &lt;%= strBilgi%&gt; &lt;BR&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/body&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/html&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Else</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;html&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;body&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Bize bilgi verir misiniz?&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM ACTION= &#8220;&lt;%= Request.ServerVariables(&#8220;SCRIPT_NAME&#8221;) %&gt;&#8221; METHOD=&#8221;POST&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Adınız: &lt;INPUT TYPE=&#8221;Text&#8221; NAME=&#8221;adi&#8221;&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Soyadınız: &lt;INPUT TYPE=&#8221;Text&#8221; NAME=&#8221;soyadi&#8221;&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Mesajınız: &lt;TEXTAREA NAME=&#8221;mesaj&#8221;&gt;Mesajınızı buraya yazın!&lt;/TEXTAREA&gt;&lt;BR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=&#8221;Submit&#8221; NAME=&#8221;Gönder&#8221; VALUE=&#8221;Gönder&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/FORM&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/body&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/html&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% End If %&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">İki Miniform sayfası arasındaki değişikliği farkettiniz mi? Önce, Form etiketinin METHOD özelliğinin <u>Post</u> olduğuna dikkat edin. Bu yöntemle gelen bilgiler, Request nesnesinin Form kolleksiyonuna, işlenmiş (yani değişken=değer çiftleri halinde yazılmış) olacağı için, Form bilgilerini yeni değişkenlere atama ifadelerimizi de farklı yazıyoruz. Önce formdan gerçekten bilgi gelip gelmediğini <u>Content_Length</u> değişkeninin boyutunun sıfır olup olmadığına bakarak anlıyoruz. Bu değişkenin boyutu 0 ise form içi boş gönderilmiş demektir; bu durumda ziyaretçiyi form’u doldurması için uyaran bir <u>Sub</u>’a gönderebiliriz. Form doldurulmuş ise, kodumuzun birinci bölümü yapması gereken değişkenlere atama işlemini yapıyor; ve sonuçları ziyaretçinin Browser penceresine yazıyor. Daha sonra yapacağımız örnek Konuk Defteri’nde bu bilgileri ziyaretçinin ekrarına değil, bir metin dosyasına yazacağımızı göreceksiniz.</font></p>
<h2><a title="_Toc481830278" name="_Toc481830278"></a><font face="Arial Black" size="3">Form etiketlerinden bilgi alma</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Form içinde kullandığımız bir çok etiket, Server’a farklı biçimde bilgi gönderir. Yukarıdaki örnekte gördüğümüz Input ve Textarea etiketleri, kendi adlarını değişken adı yaparak ve değişkene ziyaretçinin yazdığı metni değer olarak atayarak, gönderir. Fakat HTML’in &lt;SELECT MULTIPLE&gt; etiketi biraz daha dikkat etmemizi gerektirir; çünkü ziyaretçi bu etiketle oluşturduğunuz seçeneklerden birden fazla seçebilir ve bunlar Server’a bir kolleksiyonun elemanları olarak gelir. Şöyle bir örnek düşünün:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;SELECT NAME=”CokluSecme” SIZE=”3” MULTIPLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=”Emrah” SELECTED&gt; Emrah</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=”Karacaoglan”&gt; Karacaoğlan</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=”Sulari”&gt; Davud Sulari</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=”Daimi”&gt; Aşık Daimi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=”Pirsultan”&gt; Pir Sultan Abdal</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Browser, kullanıcı birden fazla seçim yaptıysa, yapılan seçim sayısını, yani kaç seçenek seçildiğini bize bildirir ve bu Request nesnesinin Form kolleksiyonunda “CokluSecme” elemanının “.Count” değişkenine yazılır. Bu bakımdan “CokluSecme” kendisi bir kolleksiyondur. Yani, bu değişkenin değerini kullanarak, “CokluSecme” kolleksiyonunun elemanlarını tek tek okutmak için bir <u>For</u> döngüsünden yararlanabiliriz:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">For sayac = 1 to Request.Form(“CokluSecme”).Count</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>Response.Write(sayac &amp; “. seçim: “ &amp; Request.Form(“CokluSecme”)(sayac) &amp; “&lt;BR&gt;”)</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Next</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu iki kodu, miniform_post.asp’ye katabilir misiniz? (Ortaya çıkartacağınız örneği bu kitapçığın örnekleri arasındaki <u>miniform_multi.asp</u> ile karşılaştırabilirsiniz.)</font></p>
<h2><a title="_Toc481830279" name="_Toc481830279"></a><font face="Arial Black" size="3">Parola İle Sayfa Koruma</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">“Internet’te gizlilik olmaz!” ilkesine rağmen, bazen öyle sayfalarımız olur ki, bunların içeriğini bütün Internet ziyaretçilerinin görmesini istemeyebiliriz. Örneğin derneğimizin veya grubumuzun telefon numaraları ve elektronik posta adreslerini gösteren sayfamıza sadece grup üyelerinin ulaşmasını arzu edebiliriz. Bir Web sitesinin herhangi bir sayfasını ziyaretçilerden gizlemek için sayfanın açılmasını belirli bir şartın yerine gelmiş olmasına, mesela ziyaretçinin bir Form aracılığıyla bize doğru parolayı göndermesine bağlayabiliriz. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu tür sayfa gizleme yollarını istemci-tarafında çalışan bir programla yapmak mümkündür; ancak sayfa gizlemenin mantığına aykırıdır. sözgelimi bir Form’da parola alanına girilecek bilginin gerçek parola ile karşılaştırılmasını bir Script fonksiyonu ile yapmaya kalkarsak, ziyaretçinin kaynağı görüntülemesi halinde ziyaretçinin girdisi ile parolayı karşılaştıran Script, ve tabiî bizim kıymetli parolamız, ziyaretçi tarafından öğrenilecektir. Oysa ASP kodları ile gizlediğimiz parolanın ziyaretçiye görünmesi imkansızdır; çünkü ASP kodları hiç bir zaman ziyaretçiye gönderilmeyeceği için parola sınayan program da ziyaretçiye gidemeyecektir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Önce şu kodu, <u>parola.asp</u> adıyla kaydedelim:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%@ LANGUAGE=&#8221;VBSCRIPT&#8221; %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.ExpiresAbsolute = Now() &#8211; 1 &#8216;Sayfanın yedeklenmesini önleyelim</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">FormParola = ucase(trim(request.form(&#8220;FormParola&#8221;)))</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">If FormParola &lt;&gt; &#8220;PAROLA&#8221; Then</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;ASP ILE PAROLA&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY bgcolor=&#8221;#ccffff&#8221; text=&#8221;black&#8221; link=&#8221;navy&#8221; vlink=&#8221;purple&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;DIV align=&#8221;center&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM action=&#8221;parola.asp&#8221; method=&#8221;POST&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;h2&gt;Ana sayfaya girmek için parolayı yazınız (Mesela, PAROLA) ?&lt;/h2&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>  </span>&lt;input type=&#8221;password&#8221; name=&#8221;FormParola&#8221; size=&#8221;10&#8243;&gt;&lt;br&gt;&lt;br&gt;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>  </span>&lt;input type=&#8221;submit&#8221; value=&#8221;Girebilir Miyim?&#8221;&gt;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/form&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/div&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/body&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/html&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Else %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Şimdi ana sayfaya girmiş oldunuz..</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% End If %&gt; </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Şimdi kodumuzu ayrıntılı indereleyebiliriz. Önce, bu sayfanın ziyaretçinin Browser’ı tarafından ziyaretçinin bilgisayarında yedeklenmesini önlediğimize dikkat edin: Bunu <u>Response</u> nesnesinin <u>.Expries</u> metodunun farklı bir türü ile yapıyoruz. <u>.ExpiresAbsolute</u> sadece <u>.Expires</u> metodundan farklı olarak, bizden bir değer ister. Bu değerin zaman olarak verilmesi gerekir. Burada VBScript’in o andaki zamanı belirten Now() fonksiyonu ile yapıyoruz ve bu fonksiyonun verdiği değerden (yani o andaki saatten) 1 saat çıkartıyoruz. Böylece sayfanın geçerliği çoktan dolmuş oluyor. Browser, bu ifadeyi gördüğü anda sayfanın daha sonra başvurulmak üzere bir kopyasını saklamayacaktır. Bunu neden yapıyoruz? Diyelim ki parolayı doğru bilen bir ziyaretçi kullandığı bilgisayarın başından kalktı ve yerine başka bir kullanıcı geçti. Bu kişinin Browser’ın Yenile düğmesini tıklaması halinde bizim özene-bezene gizlediğimiz sayfa yeniden görüntülenecektir. Oysa Browser’a bu sayfanın artık geçerli olmadığını bildirmekle, yenilenme işleminin <u>Cache</u> bellekten (ziyaretçinin bilgisayarında sabit diskte kaydedilen kopyadan) değil de, mutlaka Server’dan yapılmasını istiyoruz.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Sayfamız açılırken, (kodumuzun dört ve beşinci satırında) kendi içerdiği formda bilgi olup olmadığını sınıyor. Bunu formdaki <u>formParola</u> isimli INPUT alanının değerini atadığımız değişkenin içeriğini parola olarak seçtiğimiz kelime karşılaştırarak yapıyoruz. Eğer bu değişken (buradaki örnekte “PAROLA” kelimesine) eşit <u>değilse</u>, yani parola yanlış veya boşsa <u>If</u> sorgusu olumlu sonuç verecek ve program devam edecektir. <u>If</u> sorgusu yanlış sonuç vermiş olsaydı, yani ziyaretçi Form’a bilgi girmiş ve bu bilgi bizim karşılaştırmayı yaptığımız kelimeye eşit olmuş olsaydı, program ELSE ifadesine atlayacaktı. Programın devamı formu oluşturmaktadır; ELSE ifade ise formu atlamakta ve ziyaretçinin Browser penceresine “Şimdi ana sayfaya girmiş oldunuz” cümlesini yazdırmaktadır. Tabiî gerçek bir uygulamada bu cümlenin yerinde gerçek bir sayfanın ögeleri yer alacaktı. Bu yöntemi uygularken sayfanın VBScript’nin <u>End If</u> ifadesiyle bittiğine dikkat edin.</font></p>
<h2><a title="_Toc481830280" name="_Toc481830280"></a><font face="Arial Black" size="3">Dinamik İçindekiler Sayfası</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Internet sitemizin sayfaları genellikle çok özenilmiş, cicili-bicili, albenisi olan, görsel odak noktalarının oluşmasına dikkat edilmiş tasarımlar olur. Fakat bazen, önemli olan sadece bir dizindeki bütün HTML ve ASP belgelerinin adlarını ve başlıklarını liste halinde ziyaretçiye sunmaktır. Böyle bir sayfada da tasarımın görsel ilkelerine dikkat edilebilir. Fakat burada önemli olan, sayfanın kendi kendisini inşa etmesi ve sayfanın bir dizinin içindeki tüm dosyaları zyaretçiye listeyen bölümünün otomatik olarak güncellenmesidir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bunu, bir HTML sayfası oluşturan ASP programı olarak tasarlayabiliriz. Aşağıdaki biraz uzunca kodu, <u>menu.asp</u> adıyla kaydedin veya bu kitapçığın örnek dosyaları arasında bulun:</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;%@ LANGUAGE=VBSCRIPT %&gt;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">Server.ScriptTimeOut = 300<span>  </span>&#8216;Server&#8217;a daha çok zaman tanımak için</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">strMenuSayfaURL = &#8220;/menu.htm&#8221; &#8216;oluşturacağımız sayfanın yolu</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">strListKlasor = &#8220;/&#8221;<span>      </span>&#8216;içindekileri bulacağımız dizin</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;TITLE&gt;ASP ILE MENU OLUSTURMA&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Copyright&#8221; content=&#8221;Alex Homer&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">Response.Write &#8220;&lt;P&gt;Menü sayfası oluşturuluyor: &#8221; &amp; strMenuSayfaURL &amp; &#8221; &#8230;&lt;/P&gt;&#8221;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&#8216;menü sayfası olacak düz yazı dosyasını oluşturalım</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">Set objFSO = Create<u>Object</u>(&#8220;Scripting.<u>FileSystemObject</u>&#8220;)</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">strDosyaAdi = Server.MapPath(strMenuSayfaURL)</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">Set objMenuSayfa = objFSO.<u>CreateTextFile</u>(strDosyaAdi, <u>True</u>) &#8216;dosyanın üstüne yaz</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&#8216;menü sayfasının başlık bölümünü yazalım</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">objMenuSayfa.WriteLine &#8220;&lt;HTML&gt;&lt;BODY&gt;&lt;P&gt;&lt;B&gt;Dosyaların listesi&lt;/B&gt;&lt;/P&gt;&#8221;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&#8216;belirtilen dizindeki dosyaların listesini içeren kolleksiyonu oluşturalım</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">Set objKlasor = objFSO.GetFolder(Server.MapPath(strListKlasor))</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">Set kolDosyalar = objKlasor.Files</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&#8216;Her bir dosyanın başlığını okuyarak listemizi yapalım</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>For Each objDosya in kolDosyalar</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&#8216;dosya adının uzantısı ASP ve HTM olanları ayıralım</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>strDosyaTuru = objFSO.GetExtensionName(objDosya.Name)</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>If (strDosyaTuru = &#8220;asp&#8221;) Or (Left(strDosyaTuru, 3) = &#8220;htm&#8221;) Then</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&#8216;dosyanın tümünü okuyup bir String&#8217;de tutalım</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>Set objOku = objDosya.OpenAsTextStream(1) &#8216;okumak için</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>strIcerik = objOku.ReadAll</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>objOku.Close</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&#8216;içinden başlık bölümünü alalım</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>strBaslik = &#8220;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>intBaslangic = Instr(UCase(strIcerik), &#8220;&lt;TITLE&gt;&#8221;) + 7</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>intSon = Instr(UCase(strIcerik), &#8220;&lt;/TITLE&gt;&#8221;)</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>If (intBaslangic &gt; 0) And (intSon &gt; intBaslangic) Then</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>strBaslik = Trim(Mid(strIcerik, intBaslangic, intSon &#8211; intBaslangic))</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>End If</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>If Len(strBaslik) = 0 Then strBaslik = &#8220;Adsız sayfa &#8216;&#8221; &amp; objDosya.Name &amp; &#8220;&#8216;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&#8216;Menü sayfası için metni oluşturalım</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">strBuDosyaURL = strListKlasor &amp; objDosya.Name</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">strKopru=&#8221;&lt;A href=&#8221; &amp; Chr(34) &amp; strBuDosyaURL &amp; Chr(34) &amp; &#8220;&gt;&#8221; &amp; strBaslik &amp; &#8220;&lt;/A&gt;&lt;BR&gt;&#8221;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">objMenuSayfa.WriteLine(strKopru)</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">End If</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">Next</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&#8216;Menü sayfasının son bölümünü yazalım</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>objMenuSayfa.WriteLine &#8220;&lt;/BODY&gt;&lt;/HTML&gt;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>objMenuSayfa.Close</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font><font face="Courier New"><span>  </span>Response.Write &#8220;&lt;P&gt;Menü sayfası oluşturuldu.&lt;/P&gt;&#8221;</font></font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;P&gt;&lt;A href=&#8221;&lt;% = strMenuSayfaURL %&gt;&#8221;&gt;Menü sayfasını aç&lt;/A&gt;&lt;/P&gt;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 -22.95pt 6pt -14.2pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Programın daha öncekilere göre uzun oluşu, Dosya Sistemi (<u>File</u><u>Object</u>) Nesnesini kullanarak oluşturacağı <u>menu.htm</u> dosyasının içeriğini sağlamak için verdiğiniz dizinde bulunan ve dosya adı uzatması <u>.htm</u> ve <u>.asp</u> olan bütün dosyaların içinde &lt;TITLE&gt;..&lt;/TITLE&gt; etiketini aramasından kaynaklanıyor. Programın yazarı Alex Homer’in bütün değişken adlarının önünde, değişkenin türünü belirten ön-ekler kullandığına dikkat edin. Böylece nesneleri (<u>obj</u>), sayısal (<u>int</u>) ve kolleksiyon (<u>kol</u>) değerlerden ayırmamız kolaylaşıyor. </font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0016.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Programı çalıştırdığımız zaman, Browser penceresinde menü sayfasının oluşturulduğuna ilişkin mesaj belirliyor; ve işlem tamamlandığında da oluşturulan menu.htm sayfasının köprüsü veriliyor. Bu köprüyü tıkladığımızda ise programın beşinci satırında <u>strListKlasor = &#8220;/&#8221;</u> ifadesiyle verdiğimiz dizinin içindeki bütün HTML ve ASP dosyalarının başlığını, bu dosyalara köprü verilmiş olarak görürüz.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font face="Times New Roman" size="3">&lt;asp0017.tif&gt;</font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">İsterseniz, strListKlasor değişkeninin değeri olarak, sözgelimi “/html/” gibi, kendi Web Server’ınızdaki diğer herhangi bir dizinin adını da verebilirsiniz. Bunu yaparken dizin adının sonuna bölü işareti koymayı unutmamak gerekir. Bu program böyle bağımsız olarak çalıştırılabileceği gibi, bir çerçevenin (Frame) içinde çalıştırılabilir ve sonuçları, başka bir çerçevenin içinde görüntülenebilir. Bu programın “İçindekiler” sayfasını hazırladığı dizine ne kadar yeni dosya koyarsanız koyun veya mevcut dosyaları çıkartırsanız çıkartın, ne zaman bu programı çalıştırırsanız, İçindekiler listesi dinamik olarak mevcudu yansıtacaktır.</font></p>
<h2><a title="_Toc481830281" name="_Toc481830281"></a><font face="Arial Black" size="3">Gecikme Bildirme Sayfası</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Yukarıdakı örneği birlikte uyguladıysak, ASP programına İçindekiler listesini çıkartması için verdiğimiz dizinin içerdiği dosya sayısına bağlı olarak, programın çalışması epey uzun süre alacaktır. 20 saniyenin üzerinde beklemenin bir yüzyıla yakın etki yaptığı günümüz Internet ziyaretçisi için bu süre çok uzun görünebilir. Ziyaretçimize, sözgelimi Browser programının donmadığını, veya Internet bağlantısının kesilmediğini belirtebilmek için, “Lütfen bekleyiniz!” mesajı vermek yerinde olabilir. Yukarıdaki örnekte bunu aynı sayfa içinde yapma imkanımız vardı; çünkü programımız tabir yerinde ise ziyaretçiyi bu sayfadan alıp, başka bir sayfaya götürmüyordu.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Oysa Web uygulamamızın akış planı öyle gerektirebilir ki, ziyaretçimizin bir talebini karşılayabilmek için ona “Lütfen bekleyiniz!” mesajını ne hareket ettiği, ne de gittiği sayfada veremeyiz. Bunun için bir “ara” sayfa gerekebilir; bir tür “Lütfen bekleyiniz!..” sayfası.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu örnekte böyle bir sayfa yapacağız; ancak bu amacımızı tek sayfa karşılamayacağı için, ortaya iki sayfa çıkartacağız. Şimdi şu kodu <u>bekle01.asp</u> adıyla kaydedin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Response.Buffer = <u>True</u> %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% mesaj = Server.URLEncode(&#8220;Arzu ettiğiniz iş yapılıyor.. Lütfen bekleyiniz&#8221;) %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Response.Redirect (&#8220;bekle02.asp?BEKLE_SURE=3&amp;BEKLE_MESAJ=&#8221; &amp; mesaj &amp; _ &#8220;&amp;GONDER_URL=index.htm&#8221;) %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;ASP ILE BEKLETME 01&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada ASP kodunun tümü işlemeden, ortaya çıkan HTML’in ziyaretçinin Browser’ına parça parça gönderilmesini önlemek amacıyla <u>Response</u> nesnesinin <u>.Buffer</u> metodunun <u>True</u> (doğru) olarak belirlendiğini görüyorsunuz. Programın kullanacağı mesajın, <u>mesaj</u> adlı değişkene atandığına dikkat edin. Bu sayfanın tek işlevi ise <u>Response</u> nesnesinin <u>.Redirect</u> metodu ile <u>bekle02.asp</u> sayfasını çağırmaktan ibaret. Başka bir deyişle <u>bekle01.asp</u>, gerçekte Browser’ın yüzünü bile göremeyecektir!</font></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:12pt;font-family:'Times New Roman';">Biraz sonra kendisine üç değişken verilmesini bekleyen <u>bekle02.asp</u> programı yazacağız. Nitekim <u>bekle01.asp</u>’nin içinde üç değişken değeri belirleniyor; ve bunlar <u>bekle02.asp</u>’ye URL-GET metodu ile “yazılıyor.” Burada GET metodu ile bir bir sayfaya veri gönderme tekniğini hatırlayalım. Bir Form’un Server’a veri gönderme metodu GET ise, Form’dan (veya sayfadan URL yoluyla) derlenen verilerin “değişken=değer” çiftleri halinde ve çiftlerin </span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yukle.wordpress.com/135/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yukle.wordpress.com/135/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yukle.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yukle.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yukle.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yukle.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yukle.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yukle.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yukle.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yukle.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yukle.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yukle.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=135&subd=yukle&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yukle.wordpress.com/2007/03/16/asp-dersleri-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/498ea01ee88beecb59be73ea42c1f3c6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Administrator</media:title>
		</media:content>
	</item>
		<item>
		<title>Asp dersleri 4</title>
		<link>http://yukle.wordpress.com/2007/03/16/asp-dersleri-4/</link>
		<comments>http://yukle.wordpress.com/2007/03/16/asp-dersleri-4/#comments</comments>
		<pubDate>Fri, 16 Mar 2007 08:18:58 +0000</pubDate>
		<dc:creator>Super Admin</dc:creator>
				<category><![CDATA[Asp]]></category>
		<category><![CDATA[Asp Dersanesi]]></category>
		<category><![CDATA[Web Master Kaynakları]]></category>

		<guid isPermaLink="false">http://yukle.wordpress.com/2007/03/16/asp-dersleri-4/</guid>
		<description><![CDATA[&#60;%
DIM Adi_Soyadi
Adi_Soyadi = “Necip Fazıl Dayanır”
%&#62;
&#60;%= “Merhaba, benim adım, “ &#38; Adi_Soyadi %&#62;
Özellikler
Response nesnesinin bir çok özelliğini kullanarak ziyaretçimize göndereceğimiz sayfaları ve diğer unsurları yönetiriz:
Buffer (Tampon) : True (doğru) olarak ayarlandığında ziyaretçiye gönderilecek sayfanın bütün unsurları bir tampon bölgede toplanır, Script’in çalışması bitinceye kadar beklenir ve HTML sayfa toptan gönderilir. Kimi zaman ASP kodumuz sonuna [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=134&subd=yukle&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">DIM Adi_Soyadi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Adi_Soyadi = “Necip Fazıl Dayanır”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%= “Merhaba, benim adım, “ &amp; Adi_Soyadi %&gt;</font></p>
<h3><a title="_Toc481830252" name="_Toc481830252"></a><font face="Arial Black" size="3">Özellikler</font></h3>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Response</u> nesnesinin bir çok özelliğini kullanarak ziyaretçimize göndereceğimiz sayfaları ve diğer unsurları yönetiriz:</font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Buffer</u> (Tampon) : <u>True</u> (doğru) olarak ayarlandığında ziyaretçiye gönderilecek sayfanın bütün unsurları bir tampon bölgede toplanır, Script’in çalışması bitinceye kadar beklenir ve HTML sayfa toptan gönderilir. Kimi zaman ASP kodumuz sonuna kadar çalıştığında ziyaretçiyi başka bir sayfaya ve siteye yönlendirebilir. Bu gibi sebeplerle, özellikle çok işlem gerektiren ASP sayfalarının baştarafına bunu sağlayan kodu koymakta yarar olabilir:</font></font><span id="more-134"></span></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Option Explicit</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Buffer = TRUE</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Flush</u> (hemen gönder): <u>Buffer</u> metodu sayfanın tümünün Script’in icrası bitmeden gönderilmesini önlerken, <u>Flush</u> bunun tam tersini yapar. ASP, <u>Response</u> nesnesinin <u>Flush</u> metodu kullandığımızı gördüğü anda, o ana kadar icra edilmiş kodun sonucu olan HTML’i Browser’a gönderir:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Option Explicit</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Flush</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Clear</u> (Boşalt): <u>Buffer</u> metodu ile Script’in sonunu beklerken geçici bir alanda tutulmakta olan HTML, <u>Clear</u> metodu ile temizlenir, yok edilir. <u>Flush</u> metodunda tampondaki HTML Browser’a gönderilir; ancak <u>Clear</u> metodu tampon bölgedeki herşeyi yok eder. Böyle “tehlikeli” bir metod neden vardır, ve nerede kullanılabilir? Bir çok yerde: ziyaretçinin sözgelimi elektronik alışveriş sitemizde alışverişten vazgeçtiğini belirtmesi üzerine tampon bölgede tutmakta olduğumuz ve alınan mallar listesini içeren HTML’i bu yöntemle temizleriz:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Option Explicit</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Clear</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Expires</u> (Süresi dolar): Kullanıcı tersine bir ayar yapmadıysa, Browser genellikle görüntülediği sayfaları Geçici Internet Dosyaları dizinine (<u>cache</u>) kaydeder ve tekrar aynı sayfayı görüntülemek istediğinizde sayfayı Internet’ten edinmek yerine kendi sabit diskinden alır. Oysa özellikle haber gibi süreli bilgilerin sunulduğu Web sitelerinde bu sitenin itibarını sarsar. ASP tekniğiyle bunu önleyebiliriz. ASP sayfamızda bu sayfanın gözgelimi 60 dakikadan fazla <u>cach</u> dizinde tutulmamasını sağlayacak <u>Expires</u> metodunu kullanabiliriz:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Option Explicit</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Expires = 60</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada yazdığımız rakamı değiştirerek, sayfanın <u>cach</u>’de tutulacağı dakikayı değiştirebiliriz. “Expires = 0” sayfanın hiç saklanmamasını sağlar.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>End</u> (Son): <u>Response</u> nesnesinin o anda icra edilmekte olan Script’i durdurarak, o ana kadar ne elde edilmişse hepsini Browser’a göndermesini sağlayan metodu olan <u>End</u>, aynı zamanda <u>Buffer</u> metoduyla tutulan HTML’in de gönderilmesine yol açar. Bu metoddan sonraki HTML veya ASP kodları icra edilmez:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Option Explicit</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.End</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Response</u> nesnesinin ASP sayfasının çıktı kontrolünü sağlayan bu metodlarını aşağıdaki eğlenceli Script’le sınayabilirsiniz (ASP ile eğlence de bundan daha fazla olamaz!). Burada Browser’a gitmesi ümidiyle üç cümle var. Programı çalıştırın ve bakalım hangisi ekranda kalacak? Bu kadar eğlendiğinize göre şu soruyu da yanıtlayabilirsiniz: Neden? </font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% @LANGUAGE = VBScript %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Option Explicit </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Buffer = True</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Expires = 60</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Bu 1 Numaralı mesajı mı Browser’a gidecek?</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Clear</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Expires = 0</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Bu 2 numaralı mesaj mı Browser&#8217;a gidecek)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Flush</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.End</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Bu 3 numaralı mesaj mı Browser’a gidecek?</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<h2><a title="_Toc481830253" name="_Toc481830253"></a><font face="Arial Black" size="3">Uygulama (<u>Application</u>) ve Oturum (<u>Session</u>) Nesnesi</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ASP’nin varlık sebebi, standart CGI’ın yetersiz kaldığı noktalardan biri olan Web Server’ın her bir Web ziyaretçiyi oturumunun başından sonuna izleyebilmesi içindir, dersek durumu abartmış olmayız. ASP açısından, bir site “uygulama programı” (A<u>pplication</u>) sayılır. Her ziyaretçi de bir “oturum” (S<u>ession</u>) sayılır. Bir takım ASP ve HTML sayfalarından oluşan bildiğimiz Site’ye <u>application</u>, her hangi bir ziyarete de <u>session</u> denmesinin sebebi nedir? Bunu her iki nesnenin işlevleri ile açıklayabiliriz.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Application</u> nesnesi, sitenin tümüyle ilgili bilgileri (değişkenleri, nesneleri ve metodları) tutar; <u>Session</u> nesnesi ziyaretçinin sitemize girmesinden itibaren izini sürer. Diyelim ki bir borsa sitesi yaptınız; ziyaretçileriniz gelerek, satışa sunulan hisse senetlerinin değerlendirmelerini okuyacak ve size “Şu, şu hisse senetleri al!” diye talimat bırakacak. Bütün ziyaretçilerinizin erişeceği sadece bir veritabanınız var; buna karşılık her bir ziyaretçinin yapacağı farklı tercihler, vereceği farklı kararlar olacaktır. <u>Application</u> nesnesi, sitenizle (artık site yerine Web Uygulama Programı desek de ağzımız alışmaya başlasa!) veritabanına erişmekten tutun, alışverişlerie kadar sitede yapılacak bütün işlerin bütün kurallarını bilecek ve uygulayacak; <u>Session</u> nesnesi ise sözgelimi benim alışverişlerimi, tercihlerimi bilecektir.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">HTML ve Javascript ile biraz oynadıysanız, bilirsiniz ki bir sayfadan ötekine değişken değeri aktarmak, imkansıza yakın derecede zordur. Değişkenlerin ömrü, fonksiyonla sınırlıdır. Bir ASP sayfasında herhangi bir değişkeni fonksiyon dışında tanımlamakla ve değer atamakla onu bütün fonksiyonlar için geçerli hale getirebiliriz. Fakat kimi zaman isteriz ki, bir fonksiyonun değeri bütün sayfalarda aynı olsun; ziyaretçinin sayfa değiştirmesi ile değişkenin değeri değişmesin. Bunu ASP’de yapmak çok kolaydır. ASP’de bu zorluğu yenebilmek için değişkenlerimizi <u>Session</u> nesnesi için oluşturabiliriz; ve bu değer ziyaretçinin oturumu boyunca devam eder; bütün ASP sayfalarındaki bütün Fonksiyonlar tarafından bilinebilir. Örneğin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Session (“Tupras”) = 44500</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">bütün Session için geçerli bir Tupras değişkeni oluşturur ve ona “44500” değerini atar. Kimi zaman, değişkenin çok daha geniş kapsamlı olmasını, yani ömrünün <u>Session</u> ile değil bütün <u>Application</u> boyunca belirli olmasını isteyebiliriz. O zaman bu değişkeni Application düzeyinde tanımlayabiliriz:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Application (“Tupras”) = 44500</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu durumda Tupras değişkeni bütün ziyaretçiler için aynı değere sahip olacakatır.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Session</u> nesnesinin oluşabilmesi için, ziyaretçiye mutlaka bir <u>Cookie</u> göndererek, sitemizde (hani “Uygulama Programı” diyecektik?) bir işaret vermemiz gerekir. Daha önce, HTTP ile kurduğumuz bağlantı, belirsiz durum bağlantısıdır demiştik. Bu, Server’ın bir ziyaretçiye arzu ettiği sayfayı gönderdikten sonra, onu alıp almadığını, o sayfada ne tercihler yaptığını bilmemesi demektir. Oysa, ziyaretçiye sitemize bağlandığı anda bir <u>Session</u> kimliği verirsek ve her yeni sayfa talebinde bu kimliği kontrol edersek, kimin hangi oturumunu sürdürdüğünü biliriz. ASP–uyumlu bir Web Server, ziyaretçi yeni bir tercih yapmadığı taktirde her <u>Session</u> nesnesini 20 dakika açık tutar; sonra siler. Bu süreyi <u>Session</u> nesnesinin <u>Timeout</u> özelliği yoluyla değiştirebilirsiniz. <u>Session</u> belirleyen <u>Cookie</u> ASP-uyumlu Web Server tarafından otomatik olarak gönderilir ve takip edilir; tasarımcı olarak bizim bu konuda bir şey yapmamız gerekmez.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bir Web programınıza aynı anda kaç kişi ulaşırsa (yani sayfalarınızı kaç kişi talep ederse), o kadar <u>Session</u> nesnesi oluşur; fakat siteniz bir adet olduğuna göre bir adet <u>Application</u> nesnesi vardır. Bu nesnenin bütün <u>Session</u>’lar için sitemizin ihtiyaçlarına uygun ve aynı uygulama kurallarına sahip olmasını sağlayan bir dosya vardır: <u>Global.asa</u>. Bu dosya PWS veya IIS kurulurken oluşturulur. ASP ile Web programlarınızı, örneğin MS Visual Studio ile oluşturuyorsanız, program sizin için seçtiğiniz dizinde bir <u>Global.asa</u> dosyası oluşturacaktır. Bu dosyada, çoğu zaman, sitemize ilk ziyaretçinin gelmesiyle oluşan <u>Application_OnStart</u> ve son ziyaretçinin çıkmasıyla oluşan <u>Application_OnEnd</u> ile herhangi bir ziyaretçinin bir sayfaya erişmesiyle oluşan <u>Session_OnStart</u> ve ziyaretçinin sitemizden çıkması ile oluşan <u>Session_OnEnd</u> olayları halinde ne yapılacağı yazılıdır. Bu dosyanın içeriği standart bir ASP dosyasına benzemekle birlikte adındaki uzatmanın <u>.asp</u> değil de <u>.asa</u> olmasının sebebi, dosyanın <u>Active Server Application</u> dosyası olmasıdır. ASP-uyumlu bir Web Server programı sitemize ulaşan ilk ziyaretçiyi gördüğü anda <u>Global.asa</u> dosyasını çalıştırır.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Application</u> ve <u>Session</u> nesnelerin kendi başlarına en çok kullanıldığı yer, sitemize gelen ziyaretçilerin sayısını (sitemizin aldığı <u>Hit</u> sayısını) tutmasını sağlamaktır. Bu genellikle <u>Global.asa</u> pogramına bir sayaç yerleştirilerek yapılır.</font></font></p>
<h1><a title="_Toc481830254" name="_Toc481830254"></a><font face="Arial Black" size="5">ActiveX Veri Erişim (ADO) Nesneleri</font></h1>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ASP’nin diğer CGI tekniklerine göre <u>kolay</u> olmasının (peki, kabul, “kolay görünmesi” diyelim!) belki de sadece veri erişimini adeta çocuk oyuncağı haline getirmesidir. ADO, gerçekte bir ASP nesnesi olmaktan çok <u>Server Component</u>’i (sunucu bileşeni) sayılır. Bu bileşene biz ASP içinden bir ActiveX nesnesi ile ulaşırız. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Veritabanı, günümüzde giderek Web Programlarının temelini oluşturuyor. Sayfaların unsurları veritabanı dosyasından alınıyor; ziyaretçilerin verdikleri bilgiler veritabanına yazılıyor. Bu gelişimin başlıca sebebi, veritabanının site güncelleştirme işlerini kolaylaştırmasıdır. Söz gelimi bir sayfadaki seçenekleriniz, bir veritabanından alınıyorsa, bu seçenekleri alan VBScript kodu hiç değişmeden kalacak ve siz sadece veritabanı dosyanızda ilgili verinin alındığı alana yeni değerler girerek, sayfanızı sürekli güncel tutmuş olacaksınız. Bir diğer sebep ise veritabanı dosyalarının idaresinin kolay olmasıdır. Sözgelimi ziyaretçilerinizden aldığınız bilgileri daha sonra muhasebe kayıtlarınıza veya adres defterinize, müşteri kütüğüne ya da başka suretle kayda geçirmek istiyorsunuz. Ziyaretçilerimizin form yoluyla bize ilettiği bilgileri düzyazı dosyasına işlemenin yollarını Dosya sistemi Nesnesi’ni (<u>FileSystem</u>) görürken, ele aldık. Bunu yapabiliriz kolayca. Ama daha sonra düz yazı dosyasının idaresi, veritabanının idaresi kadar kolay olamaz. ASP sayfalarınız Access, Excel, Paradox, FilePro, SQL Server ve Oracle veritabanlarına ve spreadsheet dosyalarına erişebilir; bu dosyalardan veri okur ve bu dosyalara veri yazabilir. Özetle, ASP programlarımızla, SQL-uyumlu veya Windows ve diğer sistemler için yazılmış <u>ODBC</u> (<u>Open Database Connectivity</u>/Açık Veritabanı Bağlantısı) ile uyumlu her türlü dosyaya, ADO nesnesi aracılığıyla ulaşabiliriz.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">///////////////////KUTU//////////////////</font></font></span></p>
<h2><a title="_Toc481830255" name="_Toc481830255"></a><font face="Arial Black" size="3">ODBC ve OLE-DB</font><font face="Arial Black" size="3"> </font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu kitapçığın baştarafında, ASP dosyalarınızı geliştirmeye başlamadan önce bilgisayarınızda ODBC (<u>Open Database Connectivity</u>/Açık Veritabanı Bağlantısı) sürücülerinin kurulu olması gerektiğini belirtmiştik. ODBC, ADO’nun kullandığı tek sistem değildir; ve Microsoft firması, ODBC’nin yerine hızla OLE-DB adını verdiği yeni bir teknolojinin alması için yoğun çaba içinde. OLE-DB, ODBC’nin Web’de sağladığı başarının üzerine bina edilen yeni bir teknoloji. ODBC, ilişkilendirilmiş (relational) veritabanlarına erişmek üzere tasarlandığı halde OLE-DB her türlü veritabanına erişebilir. OLE-DB, ASP programlarımıza yeni nesneler kazandırabilir; kullanılmaya hazır elektronik ticaret bileşenlerini kullanmaya imkan verir. Bu konuda geniş bilgiyi, Microsoft’tan edirebilirsiniz. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ASP sayfalarımızda kullanacağımız ADO nesneleri ilerde de ODBC sürücülerine erişme imkanını koruyacağı için, şimdilik sadece ODBC tekniği ile çalışmakta ve bu tekniği öğrenmekte sakınca yok. OLE-DB, ODBC’nin yerini almayacak; fakat içinde ODBC’yi de bulunduracak. Bu da şu anda oluşturacağımız ASP uygulamalarının ilerde OLE-DB tekniği ile çalışan sunucularda işleyeceği anlamına geliyor.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">/////////////////////KUTU BİTTİ///////////////////</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Şimdi ADO ile aşağıda yapacağımız küçük örnekler için bilgisayarınızda kurulu bir veritabanı programı varsa onu kullanarak bir veritabanı dosyasında <u>uyeler</u> adıyla şu tabloyu oluşturabilirsiniz:</font></p>
<p class="MsoNormal" style="margin:0;"><u><font size="3"><font face="Times New Roman">Alan Adı:<span>                        </span>Veri türü</font></font></u></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">uyeNo<span>                            </span>AutoNumber (Birincil Anahtar/Primary Key)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">uyeAdi<span>                           </span>metin</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">uyeSoyadi<span>                      </span>metin</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">email<span>                              </span>metin</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">mesaj<span>                             </span>memo</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Daha sonra da <u>renkler</u> adıyla şu tabloyu yapın:</font></p>
<p class="MsoNormal" style="margin:0;"><u><font size="3"><font face="Times New Roman">Alan Adı:<span>                        </span>Veri türü</font></font></u></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">renkID<span>                           </span>AutoNumber (Birincil Anahtar/Primary Key)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">renk<span>                               </span>metin</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu tablolardan birincisine bir kaç isim ve diğer bilgileri; ikincisine ise dört-beş renk adı girin. Bilgisayarınızda veritabanı oluşturma programı yoksa bu kitapçığın kodları arasında bulunan <u>uyeler.mdb</u> adlı MS-Access dosyasını kullanabilirsiniz. Bu dosyayı, kişisel Web Server’ınızın kök dizinine kopyalayın. Sonra, Denetim Masası’nı açın ve adı <u>ODBC</u>, <u>ODBC 32 Bit</u>, ya da <u>ODBC Data Source</u> olan simgeyi çalıştırın; ikinci sekme olan System DSN’i tıklayın.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;odbc0001.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Açılacak kutuda <u>Add</u>/Ekle düğmesini tıklayarak, yeni veri kaynağı oluşturmak için ilk adım olan veriyi okumakta kullanacağımız sürücüyü seçebileceğimiz kutunun açılmasını sağlayın. Burada, yukarıda oluşturduğunuz veri dosyasına uygun sürücüyü seçin. Örnek <u>uyeler.mdb</u>’yi kullanıyorsanız, birinci seçenek olan Microsoft Access Driver’ı seçmeniz gerekir. Son düğmesini tıklayın ve Access dosyasının kurulumunu yapmaya başlayalım. Buradaki <u>Data Source Name</u> (DSN, Veri Kaynak Adı), biraz sonra ADO nesnesiyle ilgili metodları ve deyimleri yazarken kullanacağımız veri adıdır; buraya “uyeler” yazın; çünkü örneklerde bu veriye “uyeler” adıyla gönderme yapacağız. İsterseniz, <u>Description</u>/Açıklama bölümüne veritabanının niteliğini belirten bir kaç kelime yazabilirsiniz. Sonra, <u>Select</u>/Seç düğmesini tıklayarak ve açılıcak diyalog kutusu yardımıyla veritabanı dosyasını kopyaladığınız yerde bulun; <u>OK</u>/Tamam’ı tıklayarak, veritabanı seçme işlemini tamamlayın.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;odbc0002.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">DSN oluşturma kutularını sırasıyla OK/Tamam düğmelerini tıklayarak kapatın; “uyeler” verisi, şu andan itibaren bütün Web uygulamalarımızın hizmetine girmiş demektir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Internet sitenize koyacağınız ve veritabanına erişmesi gereken sayfalarınız için bu işlemi gerçek Internet ortamında da yapmak zorundasınız. Veritabanı dosyanızı Internet sitenizde kök dizinine veya bir diğer dizine kopyaladıktan sonra sistem yöneticisine ya elektronik mektupla, ya da evsahibi firmanın yönetim ve teknik destek yardımı sağlayan sayfasında veritabanınızın dosya adını, yolunu, ve DSN olarak kullanmak istedeğiniz ismi bildirerek, bizim burada yaptığımız işi Server yöneticisinin yapmasını sağlamamız gerekir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ADO’nun bize sağladığı imkanlardan yararlanabilmek için onun nesnelerini kullanılırız. Bu bölümde ADO’nun nesneleri ve metodlarını ele alacağız.</font></p>
<h2><a title="_Toc481830256" name="_Toc481830256"></a><font face="Arial Black" size="3">Connection (Veritabanına bağlantı)</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ADO’dan yararlanabilmek için kullanacağımız ilk nesne <u>Connection</u>’dır. Bu nesne ile veritabanı ile bağlantı sağlarız, yol açarız:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim Veriyolu</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set Veriyolu = Server.CreateObject(“ADODB.Connection”)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Veriyolu.Open “Veri_adi”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada, Server’ın Create<u>Object</u> metodu ile <u>ADOBD.Connection</u> nesnesini oluşturuyoruz. Oluşturduğumuz bağlantıya istediğimiz değişken adını verebiliriz. Bu örnekte veriye kurduğumuz bu bağlantı <u>Veriyolu</u> adıyla biliyor. Bu yolla sağlayacağımız veriler, ASP programı boyunca bir isimle bilinmelidir. Veriyolunun açacağı veri kümesinin ismini buradaki “Veri_adi” kelimelerinin yerine yazarız. Bu isim, bağlantının <u>.Open</u> metodu ile açacağı verinin adıdır. Bu, kullanacağımız veritabanı dosyasının adı değildir. Bu isim ile söz konusu veritabanı dosyasını işletim sisteminin ODBC aracına tanıtırken kullandığınız isim aynı olmalıdır. Bir veritabanı dosyasını ODBC aracını kullanarak sisteme tanıtma (<u>DSN-Data Source Name</u>) ayarının nasıl yapıldığını daha önce ele aldık. Bu üç satırla, ASP programı, Server’dan ADO aracılığıyla, sistemin “Veri_adi” kelimelerinin yerine yazacağınız isimli veriye yol açacaktır. Örneğin yukarıdaki kutuda oluşturduğumuz ODBC veri kaynağını kullanacağımız zaman, buraya “uyeler” kelimesini yazacağız,</font></p>
<h2><a title="_Toc481830257" name="_Toc481830257"></a><font face="Arial Black" size="3">Recordset (Kayıt dizisi)</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Veritabanına bağlantıyı oluşturduktan sonra, buradaki tabir yerindeyse ham verileri, kullanılır kayıtlar haline getirmemiz gerekir. Bunu ise ADO’nun <u>Recordset</u> nesnesi sağlar. Kurduğumuz veriyolundan programımıza bilgi gelmesi için <u>.Execute</u> (icra et) metodunu kullanırız; ancak bu komuta icra edeceği bir komut vermemiz gerekir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Baştan beri ADO ile kullanabileceğimiz veritabanının SQL (<u>sequyel</u> okunur; Structured Query Language/Yapısal Sorgu Dili) uyumlu olması gerektiğini söylüyoruz. Bu dil, verilerin sabit diske yazılması ve okunmasını düzenleyen bir çok veritabanı dilinden sadece biri, fakat en yaygınıdır. Bir veritabanından veri okumak, veri değiştirmek veya eklemek için komutlarımızı bu dille vermek zorundayız. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ASP amacıyla SQL komutlarından çok az kısmını kullanırız; bu bakımdan ASP Tasarımcısı olmak için sınırlı da olsa SQL öğrenmek gerekir. </font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">//////////////////KUTU//////////////////////</font></font></span></p>
<h2><a title="_Toc481830258" name="_Toc481830258"></a><font face="Arial Black" size="3">Hızlı SQL Kursu: Select</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ASP amaçlı olarak kullanacağımız komut gerçekte sadece SELECT’tir. Fakat hatırlamamız gereken veritabanı ilkeleri var. Bir veritabanı kabaca alanlar (sütunlar) ve bunların içinde yazılı değerler (satırlar) halinde olur; her satır bir elemanın değerleridir; ve Kayıt adını alır.</font></p>
<p class="MsoNormal" style="text-indent:-4cm;margin:0 0 0 4cm;"><font face="Times New Roman" size="3">SELECT<span>                        </span>Bir veritabanından veri seçmeye yarar. <u>SQL Sorgusu</u> da denir. Dört bölümü vardır. Tipik bir SELECT komutu şöyle yazılır:</font></p>
<p class="MsoNormal" style="text-indent:-4cm;margin:0 0 0 4cm;"><font size="3"><span><font face="Times New Roman">                                      </font></span><span style="background:yellow none repeat scroll 0 50%;font-family:'Courier New';">SELECT alan1, alan2.. FROM tablo WHERE koşul = değer ORDER BY alan1</span><span style="font-family:'Courier New';"></span></font></p>
<p class="MsoNormal" style="text-indent:-4cm;margin:0 0 0 4cm;"><font size="3"><font face="Times New Roman"><span>                                      </span>Seçilecek alanların adı SELECT komutunun ilk bölümünü oluşturur. Bir veritabanında birden fazla tablo bulunabilir; seçimin hangi tabloda yapılacağı FROM bölümünde gösterilir. Kimi zaman bir tablodaki alanda bulunan bütün kayıtları seçmek isteyebiliriz; fakat çoğu zaman seçimin sınırlarını daraltmak için sözgelimi bir alandaki değerlerin vereceğimiz bir koşula uymasını isteyebiliriz. Bu durumda “koşul = değer” testini WHERE bölümünde yaparız. Seçilen değerlerin hangi alandaki kayıtlara göre sıralanmasını istiyorsak, ORDER BY bölümünde bunu belirtelibiliriz. Örnek:</font></font></p>
<p class="MsoNormal" style="text-indent:-4cm;margin:0 0 0 4cm;"><font size="3"><span><font face="Times New Roman">                                      </font></span><span style="background:yellow none repeat scroll 0 50%;font-family:'Courier New';">SELECT Adi, Soyadi, TelNo FROM Telefonlar WHERE Alankodu = 0535 ORDER BY Adi</span><span style="font-family:'Courier New';"></span></font></p>
<p class="MsoNormal" style="text-indent:-4cm;margin:0 0 0 4cm;"><font size="3"><font face="Times New Roman"><span>                                      </span>Bu komutla veritabanının Telefonlar isimli tablosundan Adi, soyadi ve TelNo adlı sütunlarındaki kayıtlardan Alankodu sütunundaki değeri “0535” olanları seçmiş oluruz. Bir tablodaki bütün alanların bütün değerlerini seçmek için SELECT komutunu şöyle yazarız:</font></font></p>
<p class="MsoNormal" style="text-indent:-4cm;margin:0 0 0 4cm;"><font size="3"><span><font face="Times New Roman">                                      </font></span><span style="background:yellow none repeat scroll 0 50%;font-family:'Courier New';">SELECT * FROM Veri_adi</span><span style="font-family:'Courier New';"></span></font></p>
<p class="MsoNormal" style="text-indent:-4cm;margin:0 0 0 4cm;"><font size="3"><font face="Times New Roman"><span>                                      </span>Buradaki “Veri_adi” kelimelerinin yerine DSN’e verdiğiniz adı (orneğin yukarıdaki örnekte olduğu gibi, “uyeler” kelimesini) yazacaksınız.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">SQL’in INSERT, UPDATE ve DELETE komutlarının nasıl kullanıldığını öğrenirseniz, ADO nesnesinin bunlara denk gelen ve aşağıda nasıl kullanıldıklarını göreceğimiz yeni kayıt ekleme, kayıtları güncelleme ve silme metodları yerine kendi SQL komutlarınızı yazabilirsiniz.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">///////////////////////KUTU BİTTİ////////////////</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Sağladığımız veri bağlantısını kullanarak, yararlanabileceğimiz bir veri grubu oluşturmak için, yukarıda <u>.Connection</u> metodunu kullanırken yazdığımız kodu şöyle geliştirmemiz gerekir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim Veriyolu, Kayitdizisi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set Veriyolu = Server.Create<u>Object</u>(“ADODB.Connection”)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Veriyolu.Open “Veri_adi”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set Kayitdizisi = Veriyolu.Execute(“SELECT * FROM Veri_adi”)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Buradaki <u>.Execute</u> metodu, DSN’ini verdiğiniz kaynaktaki veritabanından verileri fiilen alıp getirmeye ve bir <u>Recordset</u> (Kayıt dizisi) oluşturmaya yarar. Kayıtları tek tek okuması için Kayitdizisi’ne bir sonraki kayda gitmesini bildirmemiz gerekir. Bunu <u>.MoveNext</u> (bir sonrakine git) metodu ile yaparız. Okunan her kayıt <u>Kayitdizi</u> adlı değişkenin içindedir. Bu nesnenin elemanlarını herhangi bir döngü yöntemiyle ziyaretçinin Browser penceresinde görüntüleyebiliriz; bir HTML etikenin içeriği yapabiliriz; veya başka bir şekilde kullanabiliriz. Aynı döngü, <u>.MoveNext</u> ile bir sonraki kaydın okunmasını da sağlayacaktır. Bunun bir örneğini daha sonra göreceğiz.</font></p>
<h3><a title="_Toc481830259" name="_Toc481830259"></a><font face="Arial Black" size="3">Recordset.Open</font></h3>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Veritabanına dayanan Web uygulamalarımızda sorun buradaki gibi sadece veriyi okumakla bitmeyebilir; veriyi güncelleştirmek veya silmek isteyebiliriz. Bunun için doğruca ADO’nun <u>.Recordset</u> metodundan yararlanmamız gerekir. <u>.Recordset</u> metodu ne yapar? Tıpkı ekranınızdaki bir yazının içinde duran imleç (<u>cursor</u>) gibi hayalî bir imleci götürür verilerinizin en başına koyar. Bu hayali imleci veritabanı üzerinde dolaştırmak ve gittiği yerdeki değeri okutmak bizim işimizdir. </font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>.Recordset</u> metodu, ile bir veritabanını okuyacak imleci üç şekilde ayarlayabilirsiniz:</font></font></p>
<p class="MsoNormal" style="text-indent:-3cm;margin:0 0 0 3cm;"><font size="3"><font face="Times New Roman"><u>Static</u><span>                    </span>(Duragan) SELECT komutu icra edilir ve okunan kayıt arzu ettiğiniz değişkene yazılır. (ADO Sabit Değerleri dosyasınıdan yararlanıyorsak, <u>adOpenStatic</u>)</font></font></p>
<p class="MsoNormal" style="text-indent:-3cm;margin:0 0 0 3cm;"><font size="3"><font face="Times New Roman"><u>Forward only</u> <span>       </span>(Sadece ilerle) İmleç veritabanı içinde sadece ileri doğru gider ve her seferinde bir kayıt okunur. (Varsayılan imleç türü budur.) (ADO Sabit Değerleri dosyasınıdan yararlanıyorsak, <u>adOpenForwardonly</u>)</font></font></p>
<p class="MsoNormal" style="text-indent:-3cm;margin:0 0 0 3cm;"><font size="3"><font face="Times New Roman"><u>Dynamic</u> <span>              </span>(Dinamik) Veritabanına ulaşan ve değişiklik yapan başka bir kullanıcı varsa, bu değişiklik size anında yansıtılır. (ADO Sabit Değerleri dosyasınıdan yararlanıyorsak, <u>adOpenDynamic</u>)</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu yöntemlerden birini seçmekle veriyi belirli bir okuma tarzında açmış olursunuz. Bu yöntemlerden hangisini seçtiğinizi <u>.Recordset</u> metodunu kullanacak olan <u>.Open</u> komutunun argümanı olarak açıkça belirtmeniz gerekir. ADO, bunun için sizden sayılar halinde argümanlar ister. </font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">/////////////////KUTU//////////////////</font></font></span></p>
<h2><a title="_Toc481830260" name="_Toc481830260"></a><font face="Arial Black" size="3">ADO Sabit Değerleri</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ADO+ODBC yoluyla kuracağımız veri bağlantıları, çoğu zaman adeta şifreli ifadeler içerebilir ve bir çok komutun argümanı öğrenmesi zor sayılar halinde verilir. Microsoft ve kullanılmaya hazır ASP Uygulamaları üreten firmalar, bu karmaşık ifadeleri düz metinler olarak ifade etmeye yarayan haricî dosyalar (<u>include files</u>) hazırlar ve sunarlar. Bunlar arasında en yaygın olanı (bu kitapçığın kodları arasında bulunan) Microsoft’un ADOVBS (<u>adovbs.inc</u>) dosyasıdır. (Aynı dosyanın JavaScript sürümü ise <u>adojavs.inc</u> ardını taşır). Bu dosyadan yararlanabilmek için, sitenize kopyalamanız ve daha sonra sayfalarınıza şu kodu eklemeniz gerekir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;!- &#8211; #include file=”adovbs.inc” &#8211; - &gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu dosya, Server tarafından icra edilir ve ADO nesnesinin sayı halindeki bütün argümanlarını anlaşılabilir İngilizce kelimelere çevirir. Bu dosyanın içeriğinden nasıl yararlanacağımızı ele alacağız.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font face="Times New Roman" size="3">/////////////////KUTU BİTTİ///////////////</font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bir veriye bağlantıyı kurduktan sonra kayit dizimizi <u>.Recordset</u> metodu ile sağlayacaksak, yukarıdaki örnek kodumuzu şöyle yazmak gerekir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;!- &#8211; #include file=”adovbs.inc” &#8211; - &gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim Veriyolu, Kayitdizisi, Sorgu</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set Veriyolu = Server.CreateObject(“ADODB.Connection”)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Veriyolu.Open “Veri_adi”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set Kayitdizisi = Server.CreateObject(“ADODB.Recordset”)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Sorgu = “SELECT * FROM Veri_adi”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kayitdizisi.Open Sorgu, Veriyolu, aOpenStatic</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu kod ile, <u>.Recordset</u> metodu son .Open komutu ile bizim için veri bağlantısını sağlar; verdiğimiz SQL Sorgusu icra edilir ve kayıt diziniz <u>Kayitdizisi</u>’ne kaydedilmeye hazır hale gelir. Şimdi imlecinizi ilerleterek, veriyi fiilen okutmanız gerekir; ki bunu yapmak için yukarıda kolayca <u>.Execute</u> metodu ile oluşturduğumuz kayıt dizisinde kullandığımız basit <u>.MoveNext</u>’ten daha çok imkana sahibiz:</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>MoveFirst</u>: <span>                            </span>Kayıt dizisinin (Recordset’in) birinci satına gider.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>MoveLast</u>: <span>                            </span>Kayıt dizisinin (Recordset’in) son satına gider.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>MoveNext</u>: <span>                           </span>Kayıt dizisinin (Recordset’in) bir sonraki satına gider.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>MovePrevious</u>: <span>                     </span>Kayıt dizisinin (Recordset’in) bir önceki satına gider.</font></font></p>
<p class="MsoNormal" style="text-indent:-98.7pt;margin:0 0 0 134.7pt;"><font size="3"><font face="Times New Roman"><u>Move</u>: <span>                      </span>Kayıt dizisinin (Recordset’in) içinde vereceğiniz sayıya göre ilerler. Bunun için iki sayı vermeniz gerekir: başlangıç noktası ve ilerlenecek kayıt sayısı. </font></font></p>
<h3><a title="_Toc481830261" name="_Toc481830261"></a><font face="Arial Black" size="3">Recordset.Update</font></h3>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Veritabanından aldığımız değerleri, kimi zaman ziyaretçinin vereceği değerlerle veya ziyaretçinin bir takım tercihleri sonucu güncelleştirmemiz gerekir. Bu Recordset nesnesinin <u>.Update</u> metodu ile kolayca yapılır. Yalnız burada hassas bir nokta var: diyelim ki aynı anda iki veya daha fazla kullanıcı Web programımızın veritabanına ulaşır ve aynı anda değişiklik yaparlarsa ne olur?</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Biraz önce <u>Recordset</u>’in <u>.Open</u> metodunun imleçlerinden söz ederken, okumanın yönünü veya imlecin hareket tarzını belirleyen argümanları sıralamıştık. Bu argüman dizisine bir yenisini ekleyerek, veritabanına erişimin niteliğini ve güncelleştirmenin nasıl yapılacağı ve yansıtılacağını da belirleyebiliriz. Bu işlemin temel ilkesi veritabanı kayıtlarının kilitlenmesi esasıdır. Bu kilitlemenin türünü belirleyerek, güncelleştirmenin de nasıl yapılacağını belirlemiş oluruz. Burada kullanacağımız argümanlar da ADO’nin şifreli sayıları olması gerekirken, <u>adovbs.inc</u> dosyası sayesinde İngilizce (ve dolayısıyla anlaşılabilir) kelimeler olur. <u>advbs.inc</u> dosyasını devreye soktuysanız, şu iki tür kiliti kullanabiliriz:</font></p>
<p class="MsoNormal" style="text-indent:-98.7pt;margin:0 0 0 134.7pt;"><font size="3"><font face="Times New Roman"><u>adLockReadOnly</u> <span>     </span>Kayıtların güncelleştirilmesini önler; ziyaretçimiz veritabanına kayıt yapmayacaksa, bu kilit türünü kullanmamız gerekir. </font></font></p>
<p class="MsoNormal" style="text-indent:-98.7pt;margin:0 0 0 134.7pt;"><font size="3"><font face="Times New Roman"><u>adLockOptimistic</u><span>      </span>Veritabanına ek yapacaksak, mevcut kayıtmları düzelteceksek ve bazılarını sileceksek, bu kilit türünü kullanmamız gerekir.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Yukarıdaki kod örneğimizin sadece son satırını, bu metodu kullanmak amacıyla, şöyle yazabiliriz:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kayitdizisi.Open Sorgu, Veriyolu, aOpenStatic, adLockOptimistic</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Tabiî bir veritabanını güncelleştirmek için imleci veritabanında doğru kaydın üzerine götürmek ve bu arada <u>Recordset</u>’in bize sağladığı mevcut verilerin yerine yeni değerleri atamış olmak gerekir. Bunu sağladıktan sonra bütün yapacağımız şey <u>.Update</u> metodunu kullanmak ibarettir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kayitdizisi(“Adi”) = “Necip Fazıl”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kayitdizisi(“Soyadı”) “Dayanır”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kayitdizisi.Update</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu komut, imleç o sırada hangi kaydın üzerinde ise o kaydın “Adi” ve “Soyadi” alanlarındaki veriyi “Necip Fazıl” ve “Dayanır” haline getirir. Bu metodu kullanırken bir kaydın bütün alanlarını güncelleştirmemiz veya güncelleştirilmeyen alanları eski değerleri ile tekrar etmemiz gerekmez.</font></p>
<h3><a title="_Toc481830262" name="_Toc481830262"></a><font face="Arial Black" size="3">Recordset.Delete</font></h3>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bir veritabanındaki kaydı silmek de ADO ile oldukça kolaydır. İmleci, silinecek kaydın üzerine götürdükten sonra, <u>Recordset’</u>in , <u>.Delete</u> metodunu çağırarak o andaki kayıt silinir. Bu metod, bir kaydı bütün alanlarındaki değerlerle birlikte (yani veritabanının bir satırını tümüyle) siler:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kayitdizisi.Update</font></p>
<h3><a title="_Toc481830263" name="_Toc481830263"></a><font face="Arial Black" size="3">Recordset.AddNew</font></h3>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bir veritabanına yeni kayıt eklemek istediğimizde, Recordset’in <u>.AddNew</u> (yeni ekle) metodundan yararlanırız. Bu metodun özelliği bizim imleci veritabanı içinde bir yere götürme zorunluğumuz olmamasıdır. Bu metod kendiliğinden imleci dosyanın en son satırının altına götürür. <u>.AddNew</u> metodu bir veritabanı dosyasına kayıt eklerken, veritabanında mevcut bütün alanlar için değer vermenizi isteyecektir. Örneğin</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kayitdizisi.AddNew</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kayitdizisi(“Adi”) = “Necip Fazıl”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kayitdizisi(“Soyadı”) “Dayanır”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kayitdizisi(“TelNo”) = “0342-3390000”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Kayitdizisi.Update</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Veritabanına yeni kaydı, <u>.Update</u> metodunun yaptığına dikkat edin.</font></p>
<h2><a title="_Toc481830264" name="_Toc481830264"></a><font face="Arial Black" size="3">DSN’siz Veri Bağlantısı</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu kadar DSN oluşturmayı öğrendikten sonra, “Aslında DSN olmadan da veritabanlarınıza ulaşabilirsiniz!” derlerse, herhalde çok sevinmeyiz. Ama işin doğrusu DSN yoludur. Fakat yine de DSN oluşturmadan veritabanına ulaşabileceğimizi bilmemiz gerekir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">DSN, genellikle Web Server’ları yavaşlatır; Web Server, DSN’ini belirttiğiniz veriye ulaşmak için önce ODBC’nin yardımını ister; ODBC, bir takım sürücüleri devreye sokar ve sonunda veriye ulaşırız. Bir DSN-verisine 20-30’dan fazla kullanıcı aynı anda eriştiği zaman bu yavaşlama gözle görünür hale gelebilir. Bir süre öncesine kadar Microsoft firması, veriye dayanan Web sitelerinin veri-bağını DSN yoluyla kurmasını tavsiye ederken, şimdi MS yayınlarında sık sık DSN’siz veri bağlantısının da etkin şekilde kullanılacağı belirtiliyor. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Yukarıda verdiğimiz DSN örneği şöyle idi:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim Veriyolu, Kayitdizisi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set Veriyolu = Server.Create<u>Object</u>(“ADODB.Connection”)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Veriyolu.Open “Veri_adi”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set Kayitdizisi = Veriyolu.Execute(“SELECT * FROM Veri_adi”)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Böyle bir DSN bağlantısını kullanabilmemiz için, kendi kişisel Web Server ortamımızda Denetim Masası’ndaki ODBC aracını kullanarak bir DSN oluşturmamız; Internet ortamında ise bu adı vereceğimiz veritabanı dosyasına DSN oluşturulması için Web Server yöneticisinin yardımını istememiz gerekiyor. Oysa aynı işlemi DSN’siz veri bağlantısı kurarak da yapabiliriz. Bunun için, DSN’e yukarıdaki gibi doğrudan göndermede bulunmak yerine; ya ODBC sürücüsüne ya da ODBC’nin kullandığı Microsoft Jet OLEDB sürücüsüne doğrudan atıfta bulunuruz. Örnek:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Veriyolu.Open &#8220;Veri=&#8221; &amp; Server.MapPath(&#8220;&#8230;./veriler/uyeler.mdb&#8221;) &amp; &#8220;; Driver = {Microsoft Access Driver (*.mdb);&#8221;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada, DNS’siz bağlantı için veritabanı dosyasının Server’daki göreli yerini, adını ve hangi sürücünün kullanılacağını belirtiyoruz. Aynı bağlantıyı, doğruca Jet sürücüsü için de yazabilirdik:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Veriyolu.Open &#8220;Veri=&#8221; &amp; Server.MapPath(&#8220;&#8230;./veriler/uyeler.mdb&#8221;) &amp; &#8220;; Provider=Microsoft.Jet.OLEDB4.0;&#8221;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Tabiî buradaki sorun kullandığınız veritabanı dosya türüne uygun Microsoft Jet sürücüsü seçebilmektir. Bu konuda geniş bilgi Microsoft’un Internet sitesinde bulunabilir.</font></p>
<h2><a title="_Toc481830265" name="_Toc481830265"></a><font face="Arial Black" size="3">Veri ile HTML Etiketlerini Doldurma</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ADO nesnesini tanıdık; metodlarını gördük. ADO’nun veritabanı ile DSN ile ve DSN’siz nasıl bağlantı kuracağını ele aldık. Şimdi çok kısa olarak elde ettiğimiz verilerle, HTML etiketlerinin içini nasıl dolduracağımızı görelim. Burada “içini doldurmak” (veya bir çok İngilizce kaynakta göreceğiniz üzere <u>populate</u> etmek) bir etiketin değer (<u>value</u>) bölümünü yazmak anlamına geliyor). Burada küçük bir kaç örnekle, veri kaynağını kullanarak HTML etiketlerinin içini doldurma alıştırması yapalım. Buradaki bzı örneklerde ODBC konusunu ele alırken oluşturduğumuz <u>uyeler.mdb</u>’yi DSN olarak “uyeler” verisi şeklinde kullanacağız; fakat siz istediğiniz veriyi kullanabilirsiniz.</font></p>
<h3><a title="_Toc481830266" name="_Toc481830266"></a><font face="Arial Black" size="3">Seçme Kutuları: SELECT</font></h3>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">SELECT, ziyaretçilerimize önceden belirlenmiş bir çok unsurdan birini veya daha fazlasını seçmelerine imkan veren bir etikettir. Ziyaretçi, seçimini SELECT’in OPTION’ları arasından yapar. Seçenekler (OPTION), sahip oldukları değeri Server’a gönderirler. Genel yazım kuralı şöyledir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM ACTION=”&#8230;” METHOD=POST|GET&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;SELECT NAME=”<em>metin</em>”&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=”<em>değer1</em>”&gt;Tercih 1</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=”<em>değer2</em>”&gt;Tercih 2</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE=”<em>değer3</em>”&gt;Tercih 3</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/SELECT&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu Form’un gönder (Submit) düğmesi ile sağlanan hareket (ACTION), seçilen değeri veya değerleri, Form’u işleyecek ASP programına gönderir. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Ziyaretçimize sunacağımız seçenekler, iki-üç adet ise, bunu HTML dosyasını yazarken, OPTION’lar halinde kodlamak kolay olabilir. Ancak seçenek sayısı artıyorsa, veya seçeneklerimiz sık sık değişiyorsa, bunları bir veri tabanında toplamak ve OPTION değerlerini veritabanının bir alanından alarak ziyaretçiye sunmak çok daha kolay olur. Böylece ASP sayfası değişmeden kalır; biz sadece veritabanını güncelleştiririz. Çoğu zaman bu güncelleştirme ziyaretçilerin yapacakları eklerin veritabanına yazılmasıyla sağlandığı için, ortaya gerçekten dinamik bir Web Uygulaması çıkmış olur.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Diyelim ki, bizim grubumuzun üyelerini gösteren yukarıda oluşturduğumuz <u>uyeler.mdb</u> (DSN’i <u>uyeler</u> olan veritabanı) dosyasının adı-soyadı alanlarını birleştirerek, sayfamızdaki bir SELECT etiketinin OPTION’larına yazmak istiyoruz. Bunun için önce sayfamızda kullanacağımız değişkenleri tanımlayalım:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim connVeriyolu, rsVeri, SQL</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Sonra, bu değişkenlerden veri ile ilgili olanlara <u>.Connection</u> ve <u>.Recordset</u> için gerekli ifadeleri yazalım. Veri ile çalışırken tasarımcının değişken adlarına bakarak hangisinin <u>.Connection</u>, hangisinin <u>.Recordset</u> değerlerini içerdiğini anlaması zorlaşabilir. Bu bakımdan değişken adlarının önüne <u>.Connection</u> için olanında <u>conn</u>, <u>.Recordset</u> için olanında <u>rs</u> harflerini kulllanmak yararlı olabilir. Veritabanından fiilen hangi verileri çekeceğimizi gösteren SQL deyimini de belirgin bir şekilde SQL değişkenine yazabiliriz:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set connVeriyolu = Server.Create<u>Object</u>(&#8220;ADODB.Connection&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQL =&#8221;SELECT uyeAdi, uyeSoyadi FROM uyeler&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Şimdi bu değerlere dayanan ve adına <u>uyeler</u> diyeceğimiz veri kümesini oluşturalım:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connVeriyolu.open &#8220;uyeler&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set rsVeri=connVeriyolu.execute(SQL)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Artık elimizde içinde bütün üyelerin adı ve soyadını tutan bir dizi-değişken var. Şimdi biliyoruz ki veritabanından veri satır-satır okunur. Birinci satırın okunması sırasında bu değişkenin değerlerini yazacak olursak:</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">rsVeri (0) = üye 1’in adı</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">rsVeri(1) = üye 1’in soyadı</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">olacaktır. Veritabanından ikinci satırın okunmasında ikinci üyenin adı ve soyadı, üçüncü satırın okunmasında üçüncü üyenin adı ve soyadı bu değişkenlerin değeri olacaktır. Demek ki, bu değerleri bir SELECT etiketinin OPTION değeri olarak kullancaksak, bu işlemi ikinci satır okunmadan yaptırmamız gerekir. O halde:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;SELECT NAME=&#8221;AdSoyad&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Do While Not uyeler.eof %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE = &#8220;&lt;%= rsVeri(0) &amp; &#8221; &#8221; &amp; rsVeri(1)%&gt;&#8221;&gt;&lt;%= rsVeri(0) &amp; &#8221; &#8221; &amp; rsVeri(1)%&gt; </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/Option&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%rsVeri.movenext </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">loop%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/select&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New">&lt;% rsVeri.close %&gt;<span>      </span></font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/SELECT&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Do</u> döngüsünün içinde iken veritabanından alınan değer, herhangi bir değişkenin değeri gibi kullanılabilir. Burada verilerin <u>uyeler</u> dizisinin dosya sonuna (eof, <u>End Of File</u>) okunduğuna dikkat edin. Şimdi yukarıdaki kodları bir Form içinde birleştirelim:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%@ LANGUAGE=&#8221;VBSCRIPT&#8221; %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Option Explicit %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;ASP SELECT DOLDURMA&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&#8216; Değişkenleri tanımlayalım</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim connVeriyolu, rsVeri, SQL</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set connVeriyolu = Server.Create<u>Object</u>(&#8220;ADODB.Connection&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQL =&#8221;SELECT uyeAdi, uyeSoyadi FROM uyeler&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connVeriyolu.open &#8220;uyeler&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set rsVeri=connVeriyolu.execute(SQL)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Bu listeden bir üyenin adını seçiniz:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;SELECT NAME=&#8221;AdSoyad&#8221;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Do While Not rsVeri.eof %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;OPTION VALUE = &#8220;&lt;%= rsVeri(0) &amp; &#8221; &#8221; &amp; rsVeri(1)%&gt;&#8221;&gt;&lt;%= rsVeri(0) &amp; &#8221; &#8221; &amp; rsVeri(1)%&gt; </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/Option&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%rsVeri.movenext </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">loop%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/select&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New">&lt;% rsVeri.close %&gt;<span>      </span></font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/SELECT&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu sayfayı <u>option.asp</u> adıyla kaydederek sınayabiliriz. Alacağımız sonuç şuna benzemelidir:</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;odbc0003.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada yapılan seçim sonucu elde edilen değer Server’a gönderilebilir; ve söz gelimi ziyaretçinin seçtiği kişiye ait bilgiler kendisine ulaştırılabilir.</font></p>
<h3><a title="_Toc481830267" name="_Toc481830267"></a><font face="Arial Black" size="3">İşaretleme Alanları: INPUT-RADIO</font></h3>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">INPUT etiketi türleri ziyaretçilerimizin önceden belirlenmiş bir çok unsurdan birini veya daha fazlasını seçmelerine veya kendilerinin girdi yapmalarına imkan veren bir etikettir. INPUT türlerinden <u>Radio</u> ve <u>Checkbox</u> (işaretleme kutusu) veritabanından çekilen değerlerle doldurularak ziyaretçiye sunulabilir. Ziyaretçi, seçimini radyo düğmelerinden veya işaret kutularından birini işaretleyerek yapar. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">INPUT etiketinin radyo düğmesi türünün genel yazım kuralı şöyledir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM ACTION=”&#8230;” METHOD=POST|GET&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=”Radio” NAME=<em>metin1</em> VALUE=<em>deger1</em>&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=”Radio” NAME=m<em>etin1</em> VALUE=<em>deger2</em>&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;INPUT TYPE=”Radio” NAME=<em>metin1</em> VALUE=<em>deger3</em>&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/SELECT&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu Form’un gönder (Submit) düğmesi ile sağlanan hareket (ACTION), seçilen değeri Form’u işleyecek ASP programına gönderir. Bir Form’daki bir grup oluşturan bütün radyo düğmeleri aynı adı alırlar, ki böylece ASP programına bir değişken için değer gönderilmiş olur.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Diyelim ki ziyaretçimizden beğendiği rengi seçmesini isteyen bir grup radyo düğmesi sunan bir Form yapacağız. Şu kodu <u>radyo.asp</u> adıyla kaydedelim:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%@ LANGUAGE=&#8221;VBSCRIPT&#8221; %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;ASP OPTION-RADIO DOLDURMA&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&#8216; Değişkenleri tanımlayalım</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim connVeriyolu, rsVeri, SQL</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set connVeriyolu = Server.CreateObject(&#8220;ADODB.Connection&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SQL =&#8221;SELECT renk FROM renkler&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">connVeriyolu.open &#8220;uyeler&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set rsVeri=connVeriyolu.execute(SQL)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;FORM&gt;&lt;DIV ALIGN=&#8221;center&#8221;&gt;&lt;center&gt;&lt;TABLE BORDER=&#8221;0&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TD colspan=&#8221;2&#8243; align=&#8221;center&#8221;&gt;&lt;h3&gt;Renk&lt;/h3&gt;&lt;/TD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/TR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Do While Not rsVeri.eof %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TR&gt;&lt;TD&gt;&lt;INPUT TYPE=&#8221;radio&#8221; VALUE=&#8221;&lt;%=rsVeri(0)%&gt;&#8221; NAME=&#8221;Radyo&#8221;&gt;&lt;/TD&gt; &lt;TD&gt;&lt;%=rsVeri(0)%&gt;&lt;/TD&gt;&lt;/TR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%rsVeri.movenext </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">loop%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/TABLE&gt;&lt;/CENTER&gt;&lt;/DIV&gt;&lt;/FORM&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada “Radyo” isimli radyo düğmesine verdiğimiz değerleri, ODBC’nin “uyeler” adıyla tanıdığı veritabanından alıyoruz; bir önceki örnekten farklı olarak bu kez aynı veritabanındaki farklı tablodan, <u>renkler</u> tablosundan ve sadece bir alanın, <u>renk</u> alanının değerlerini çekiyoruz. Bu örnek programda da ziyaretçinin seçtiği değerleri Server’a gönderecek bir Gönder düğmesi yok. Ama içeriğini veritabanından aldığımız değerlerle doldurduktan sonra, ziyaretçinin radyo düğmeleriyle yapacağı tercihler, tıpkı klasik HTML’deki gibi kullanılabilir; Server’a değişken olarak gönderilebilir; veya ziyaretçinin bilgisayarında (<u>client-side</u>) herhangi bir Script tarafından kullanılabilir.</font></p>
<h3><a title="_Toc481830268" name="_Toc481830268"></a><font face="Arial Black" size="3">İşaretleme Alanları: INPUT-CHECHBOX</font></h3>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">INPUT etiketinin ziyaretçiye işaretleyerek tercih imkanı veren diğer aracı <u>Checkbox</u> (işaretleme kutusu) türüdür. Tıpkı radyo düğmesinde olduğu gibi veritabanından çekilen değerlerle doldurularak ziyaretçiye sunulabilir. Ziyaretçi, seçimini işaret kutularından birini işaretleyerek yapar. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">INPUT etiketinin <u>Checkbox</u> türünün genel yazım kuralı şöyledir:</font></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yukle.wordpress.com/134/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yukle.wordpress.com/134/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yukle.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yukle.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yukle.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yukle.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yukle.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yukle.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yukle.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yukle.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yukle.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yukle.wordpress.com/134/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=134&subd=yukle&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yukle.wordpress.com/2007/03/16/asp-dersleri-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/498ea01ee88beecb59be73ea42c1f3c6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Administrator</media:title>
		</media:content>
	</item>
		<item>
		<title>Asp Dersleri 3</title>
		<link>http://yukle.wordpress.com/2007/03/16/asp-dersleri-3/</link>
		<comments>http://yukle.wordpress.com/2007/03/16/asp-dersleri-3/#comments</comments>
		<pubDate>Fri, 16 Mar 2007 08:13:22 +0000</pubDate>
		<dc:creator>Super Admin</dc:creator>
				<category><![CDATA[Asp]]></category>
		<category><![CDATA[Asp Dersanesi]]></category>
		<category><![CDATA[Web Master Kaynakları]]></category>

		<guid isPermaLink="false">http://yukle.wordpress.com/2007/03/16/asp-dersleri-3/</guid>
		<description><![CDATA[ASP’nin Nesneleri
Masa, nesnedir. Notebook bilgisayarınız da nesnedir! Arkadaşınız da bir nesnedir. Tabiî bunu onun yüzüne karşı söylemeseniz, iyi olur. Her nesnenin özellikleri vardır. Masa serttir. Su, içine konulduğu nesnenin biçimi alır. 
ASP tekniğinde de amacımız nesnelerin özelliklerini kullanarak, ya bu özellikleri belirlemek, ya da değiştirmektir. Nesne Yönelimli Programlama (Object Oriented Programming, OOP) kavramını daha önce [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=133&subd=yukle&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="ChapterTitle" style="margin:24pt 108pt 18pt 0;"><a title="_Toc481830236" name="_Toc481830236"></a><font face="Arial Black" size="6">ASP’nin Nesneleri</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Masa, nesnedir. Notebook bilgisayarınız da nesnedir! Arkadaşınız da bir nesnedir. Tabiî bunu onun yüzüne karşı söylemeseniz, iyi olur. Her nesnenin özellikleri vardır. Masa serttir. Su, içine konulduğu nesnenin biçimi alır. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ASP tekniğinde de amacımız nesnelerin özelliklerini kullanarak, ya bu özellikleri belirlemek, ya da değiştirmektir. Nesne Yönelimli Programlama (<u>Object</u> Oriented Programming, OOP) kavramını daha önce çok duymuş olmalısınız. Bir önceki bölümde fonksiyonlarla, <u>Sub</u>’larla, değişkenlerle tanıştık. Diyelim ki öğretmensiniz (ah, nerede o günler!) ve ASP programınızda her öğrencinin notunu veritabanına işleyen, veritabanından notları alarak geçeni-kalanı belirleyen veya öğrencilerle ilgili daha yapılması gereken bir çok işi yapan fonksiyonlarınız ve <u>Sub</u>’larınız var; bunların kullandığı bir çok değişkeniniz var: demek ki sizin ASP programınızda “öğrenci” diye bir nesneniz var. Ve siz bu nesneye yönelimli program yapmışsınız!</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Her “program nesnesi” iki unsura sahiptir:</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Özellik</u> (Property, Attribute): Bir nesnenin özellikleri, onun değişkenleridir. “Öğrenci” nesnesinin “Öğrencinin Adı,” “Notları,” “Adresi” gibi değişkenleri, yani özellikleri vardır. </font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Metod</u> (Method): Bir nesnenin işlemesi, çalışması için, kısaca kendisinden bekleneni yerine getirebilmesi için çalışma yöntemlerine ihtiyacı vardır. Dolayısıyla bir ASP nesnesinin fonksiyonları, onun metodlarıdır.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Fakat ASP’de nesneler sadece sizin öbekler halinde toplayacağınız fonksiyonlar ve değişkenlerden ibaret değildir. Bir kere, ASP programında kullandığınız Script dilinin getirdiği nesneler vardır. ASP sayfasını Javascript ile yazarsanız başka, VBScript ile yazarsanız başka dil nesnelerine sahip olursunuz; ancak her ikisinde de ortak olan “Scripting” nesneleri vardır. Bunlara birazdan ayrıntılı ele alacağız. Sonra Web Server’ın size hazır sunduğu nesneler vardır. Bunları daha sonraki bölümde göreceğiz. Ve tabiî, Browser’ın bir HTML sayfasının bölümlerini nesne sayarak oluşturduğu nesneler vardır. Bunlara da diğer nesneleri ele alırken sırası geldikçe değineceğiz. (Tabiî bir de ASP programınızı Javascript ile yazarsanız, VBScript’ten farklı olarak kendisi nesne-yönelimli bir dil olan Javascript’in oluşturmanıza imkan vereceği nesneler vardır. Fakat bu nesneler, bu kitapçığın kapsamı dışında kalıyor.)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Nesneler nasıl oluşmuş olursa olsunlar, daima size bir değer verirler:</font></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:'Courier New';"><font size="3">Nesne.Özellik = Değer</font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bir nesnenin bir özelliğinin değeri, bizim için bir değişken değeri gibi önem taşır:</font></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:'Courier New';"><font size="3">If Nesne.Özellik &gt; Değer Then &#8230;</font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Nesnelerin özelliklerinin değerlerini değişkenlere atayabiliriz; ancak bunu yaparken Nesne’nin bir metoduna (fonksiyonu) göndermede bulunmamız ve gerekiyorsa bu fonksiyona kullanması için veri göndermeliyiz (bir fonksiyona kullanması için gönderilen değere argüman/<u>argument</u> denir):</font></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:'Courier New';"><font size="3">Degisken = Nesne.Metod(argüman1, argüman2&#8230;)</font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Daha sonra bu değişkeni istediğimiz yerde kullanırız. Bu kadar teoriden sonra bir örnek nesne oluşturursak, belki işin içinden daha kolay çıkabiliriz.</font><span id="more-133"></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Nesneler, diğer yararlarının yanı sıra, birbiri ile ilgili <u>Sub</u>’larımızı, fonksiyonlarımızı ve değişkenlerimizi birarada tutmamızı sağlar. Şimdi VBScript ile bir nesne oluşturabiliriz:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><u>Class</u> Ogrenci</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>Public Adi, Soyadi, No</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>Function AdiSoyadi</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>AdiSoyadi = Adi &amp; “ “ &amp; Soyadi</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>End Function</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">End <u>Class</u> </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bir dakika! Nesne (<u>object</u>) adını verdik fakat <u>Class</u> (sınıf) oluşturduk! Bu grubun <u>Object</u><u>..End </u><u>Object</u> olması gerekmiyor mu? Belki haklısınız; ama bir “sınıf” ancak VBScript tarafından kullanılmaya başlanırsa Nesne olur. Dolayısıyla biz “sınıf” yazarız; VBScript onu Nesne haline getirir. Peki, nesneyi oluşturduk; şimdi bunu nasıl kullanacağız. Çok kolay; önce bu nesneden yeni bir olgu (<u>instance</u>) oluşturacağız; sonra.. Ama önce bunu nasıl yapacağımızı yazalım:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim Ogr1</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set Ogr1 = New Ogrenci</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Ogr1.Adi = “Necip” </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Ogr1.Soyadi = “Fazıl”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Ogr1.No = “181”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New"> </font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Write Ogr1.AdiSoyadi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Her nesne, <u>New</u> (yeni) komutu ile yeni bir değişkene bütün özelliklerini verir. Burada Ogr1 değişkeni, yukarıda oluşturduğumuz Ogrenci nesnesinin bütün özelliklerini kazanmış oluyor. Ogrenci nesnesinin “.Adi”, “.Soyadi” ve “.No” özellikleri olması gerekir; nitekim Ogr1’e bu özelliklerini burada veriyoruz. Ogrenci nesnesinin bir de metodu (fonksiyonu) var; Ogr1 bunu da kazanabilir mi? Tabiî; hem kazanır, hem de bunu ziyaretçinin Browser penceresine yazdırabilir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Nesne kavramını kavramak zordur. Fakat yukarıdaki örnekte görüldüğü gibi, ASP sayfalarınızda nesne oluşturarak çalışmaya alıştığınız zaman bunun sağladığı kolaylıktan kolayca vazgeçmeyeceksiniz.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">///////////////KUTU////////////////////</font></font></span></p>
<h2><a title="_Toc481830237" name="_Toc481830237"></a><font face="Arial Black" size="3">Hata (Err) Nesnesi</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Hangi dille olursa olsun program yazarken hata yapmak kaçınılmaz bir kuraldır. Dolayısıyla kullandığınız programlama dili hatalarınızı kolayca yakalamanıza imkan vermelidir. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ASP programlarınızda yazım yanlışlığı, olmayan değişkene gönderme gibi Script hatası olmaması gerekir. Bu tür hatalar, program Web’e gönderilmeden mutlaka ayıklanmalıdır. Fakat programcı olarak öngöremeyeceğiniz, ve çoğu Web ziyaretçisinden veya ziyaretçinin bilgisayarından kaynaklanan hata durumları olabilir. VBScript, şu standart komutla beklenmedik hata durumlarında programın yoluna devam etmesini sağlayabilir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% On Error Resume Next %&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><span> </span>Bu komutla VBScript’e, hata halinde bir sonraki satırdan yoluna devam edecektir. Fakat oluşan hata, programın daha sonra vermesi beklenen sonucu vermesini önleyebilir. VBScript, <u>Err</u> (Hata) Nesnesi’nin bir çok özelliğinden özellikle hata sayısı (Number), tanımı (<u>Description</u>) ve kaynak (<u>Source</u>) özellikleri ile size hatanın ne olduğunu ve nereden kaynaklandığını söyleyebilir. Bu özellikleri kullanarak, programlarınızda, en azından geliştirme aşamasında, örneğin,</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">If Err:Number = xx Then</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">şeklinde bir ifade ile hatanın türüne göre programın kazasız yürümesini sağlayabilirsiniz. Burada xx yerine 108 ayrı hata numarası yapabilirsiniz. Hata numaraları, Microsoft’un VBScript sitesinden edinilebilir.</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">////////////////////////////////KUTU BİTTİ//////////////</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Nesneler hakkında aşağı yukarı bir fikir edindiğimize göre, şimdi kullanılmaya hazır Nesne’lerden başlayarak, VBScript kullanırken, ASP sayfalarımızda yararlanabileceğimiz Nesne’leri ele alabiliriz.</font></p>
<h1><a title="_Toc481830238" name="_Toc481830238"></a><font face="Arial Black" size="5">Dosya Sistemi Nesnesi</font></h1>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Dosya Sistemi Nesnesi (<u>FileSystemObject</u>), ASP programının, Web Sunucusunun sabit disk sisteminde, sürücüleri, klasörleri ve dosyaları yönetmekte kullanacağımız temel araçtır. Burada, ne denli güçlü bir araçtan söz ettiğimizi hemen görebilmek için şu kodu yazalım ve <u>dosya_yaz.asp</u> adıyla kaydedelim:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Option Explicit %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;ASP ILE DOSYA YAZMA&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim YaziFSO, yaz</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set YaziFSO = CreateObject(&#8220;Scripting.FileSystemObject&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set yaz = YaziFSO.CreateTextFile(&#8220;c:\yazi_deneme.txt&#8221;,True)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">yaz.WriteLine(&#8220;Bu bir denemedir.&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">yaz.Close</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;H2&gt;&lt;CENTER&gt;Bu Web sayfası sabit diske yazı yazdırır!!</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BR&gt;Şimdi C: sürücüsünde yazi_deneme.txt adlı bir dosya olması gerekir!</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BR&gt;Lütfen bakar mısınız?&lt;/H2&gt;&lt;/CENTER&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt; </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Kodumuzun <u>Dim</u> satırında iki değişken belirlediğimizi görüyorsunuz. Fakat bu iki değişkeni sistem nesnesi olan Scripting’in yeni bir olgusu olarak kullanacağımız için daha önce standart değişkenlere değer atadığımız gibi değil, fakat <u>Set</u> komutundan yararlanıyoruz, ve <u>YaziFSO</u> değişkeninde bir “Scripting.<u>FileSystemObject</u>” nesnesi oluşturulmasını sağlıyoruz. (ASP uzmanları arasında gelenek, nesne değeri tutan değişkenlere, ilgili nesnenin baş harflerini eklemektir. Böylece bir değişkenin adına bakarak, işlevini anlamak mümkün olur.)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">“yaz” değişkeni YaziFSO’da yeni bir olgusunu oluşturduğumuz <u>FileSystemObject</u>’in <u>CreateTextFile</u> (Düzyazı dosyası oluştur) metodunu kullanıyoruz; bu metod oluşturulacak dosyanın adını ve eğer bu dosya varsa üzerine yazılmasına izin veren <u>True</u> (doğru) veya buna izin vermeyen <u>False</u> (yanlış) kelimesini argüman olarak alır. “yaz” değişkeni şimdi kendisi bir metod kullanabilecek şekilde, <u>FileSystemObject</u>’in bir örneğidir; nitekim WriteLine metodu ile biraz önce oluşturulan dosyaya, argüman olarak verdiğimiz metni yazdırmaktadır. Bu kodu çalıştırdıktan sonra, sabit diskinize bakarsanız, düzyazı dosyasını göreceksiniz:</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0009.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bugüne kadar Web tekniği olarak Browser’da bir sayfayı görüntüleyebileceğimizi sanıyor idiysek, sistem nesneleri kullanarak çok daha farklı şeyler yapabileceğimizi görmüş olduk. Şimdi <u>FileSystemObject</u>’i daha yakından tanıyabiliriz.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu nesne bize sabit diske erişme ve onun kaynaklarını kullanma imkanı verir. Bütün nesneler gibi kullanılabilmesi için önce bir değişkenin bünyesinde oluşturulması gerekir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim DosyaSistemi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Dosya Sistemi Nesnesi’nin 20’den fazla metodu vardır; fakat bunlardan önemlileri şöyle sıralanabilir:</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>CopyFile</u> (dosya kopyala), <u>MoveFile</u> (Dosya taşı), <u>CopyFolder</u> (klasör kopyala), <u>MoveFolder</u> (klasör taşı), <u>Create Folder</u> (klasör oluştur), <u>DeleteFile</u> (dosya sil), <u>DeleteFolder</u> (klasör sil).</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Şimdi bunlardan birinin nasıl kullanılabileceğine bir örnek verelim:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim DosyaSistemi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set DosyaSistemi = Create<u>Object</u>(“Scripting.<u>FileSystemObject</u>”)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">DosyaSistemi.DeleteFile “c:\belgelerim\test.*”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu program ile “Belgelerim” klasöründeki “test” isimli bütün dosyaları silmiş olursunuz. (Bu programı çalıştırmadan önce bir kaç kez düşünmeniz, sanırım iyi olur; çünkü ASP yoluyla sildiğiniz dosyalar, Geri Dönüşüm Kutusu’na gitmez!) Daha az zararlı bir diğer örnek ise şöyle olabilir:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim DosyaSistemi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">DosyaSistemi.CopyFile “c:\belgelerim\*.*”, “c:\yedekler\”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu program “Belgelerim” dizinindeki bütün dosyaları “Yedekler” dizinine kopyalar.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>FileSystemObject</u>’in sadece bir özelliği (<u>Property</u>) vardır: <u>Drives</u> (sürücüler). Fakat bu özellik, bir değil bir çok elemandan oluşan bir dizi-değişken gibi Kolleksiyon (<u>Collection</u>) sayılır. Nede? Çünkü bir Web Server’da birden çok sürücü bulunur. Her sürücü, bu kolleksiyonun üyesidir (FileSystem.Drives) ve her birinin sürücü harfi (<u>.DriveLetter</u>), disk adı (<u>.VolumeName</u>), <u>byte</u> olarak boş alanı (<u>.FreeSpace</u>) özellikleri vardır. <u>suruculer.asp</u> adıyla kaydedeceğiniz şu program, denediğiniz sistemin disk-disket-CD-ROM durumunu size listeleyecektir.</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Option Explicit %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;ASP ILE SÜRÜCÜ KOLLEKSİYONU&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim DosyaSistemi, Surucu, Suruculer</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set DosyaSistemi = CreateObject(&#8220;Scripting.FileSystemObject&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set Suruculer = DosyaSistemi.Drives</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">For Each Surucu In Suruculer</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;b&gt;Sürücü:&lt;/b&gt; &lt;%=Surucu.DriveLetter%&gt;&lt;br&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% If Surucu.IsReady = True Then%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;b&gt;Disk Adı:&lt;/b&gt; &lt;%=Surucu.VolumeName%&gt;&lt;br&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;b&gt;Boş alan:&lt;/b&gt; &lt;%=Surucu.FreeSpace%&gt;&lt;br&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Else %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;i&gt;Sürücü hazır değil!&lt;/i&gt;&lt;br&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% End If</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Next %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada özelliklerini ve metodlarını DosyaSistemi adlı değişkene atadığımız Dosya suistemi Nesnesi’nin sürücüler kolleksiyonunun dizi-değişken gibi olduğunu söylemiştik. <u>For..Next</u> akış kontrolü ile bu kolleksiyonun bütün üyelerinin sırayla sürücü harfi, ve hazırsa disk adı ve boş alanı bilgilerini alıyoruz. <u>Drives</u> kolleksiyonunun diğer özellikleri arasında toplam yüzey genişliği (<u>TotalSize</u>), sürücü türü (<u>DriveType</u>; 0=bilinmiyor; 1=çıkartılabilir; 2=sabit; 3=ağ; 4=CD-ROM; 5= RAM-Drive), ve dosya sistemi (<u>FileSystem</u>; FAT, NTFS, CDFS), kök dizin (<u>RootFolder</u>) vardır. Bu program bir PWS’da çalıştığında, şu sonucu alıyoruz:</font></p>
<p class="MsoNormal" style="margin:0;"><span style="color:red;"><font size="3"><font face="Times New Roman">&lt;asp0010.tif&gt;</font></font></span></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">VBScript açısından, her sürücüde klasörler (<u>Folders</u>) ve onların içinde alt-klasör (Subfolders) ve dosya (<u>Files</u>) kolleksiyonları bulunur. (Her klasörün içinde içinde bir alt-klasör nesnesi bulunduğu için ASP ile sonsuza kadar bütün klasörlere gönderme yapabilirsiniz. Klasör nesnesinin bazı özellikleri şunlardır:</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Adı (Name), oluşturulma (<u>DateCreated</u>), erişim (<u>DateLastAccessed</u>), değiştirme (<u>DateLastModified</u>) tarihleri, içindeki dosyalar ve alt-klasörlerdeki dosyalarla birlikte boyutu (<u>Size</u>), bulunduğu sürücü (<u>Drive</u>), içinde bulunduğu klasör (<u>ParentFolder</u>), alt-klasörler (<u>SubFolders</u>), kök dizin olup olmadığı (<u>IsRoot</u>).</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Klasör nesnesinin kopyala (<u>Copy</u>), sil (<u>Delete</u>) ve Taşı (<u>Move</u>) metodları vardır.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Dosya (<u>File</u>) nesnesinin de ad, oluşturma, erişim, değiştirme, boyut, sürücü ve içinde bulunduğu sürücü özellikleri, ve kopyala, sil, taşı metodları vardır. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">PWS’ınızın bulunduğu sistemde, söz gelisi C: sürücüsünün kök dizinindeki bütün dosyaların listesini size veren bir kod şöyle yazılabilir (<u>dosyalar.asp</u>):</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Option Explicit %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;ASP ILE KLASOR &#8211; DOSYA KOLLEKSİYONU&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim DosyaSistemi, Surucu, Dosya, KokDizin, KokDosyalar, DosyaNesnesi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim SurucuHarfi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">SurucuHarfi = &#8220;C:&#8221;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set DosyaSistemi = CreateObject(&#8220;Scripting.FileSystemObject&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set Surucu = DosyaSistemi.GetDrive(SurucuHarfi)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set KokDizin = Surucu.RootFolder</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set KokDosyalar = KokDizin.Files</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">For Each DosyaNesnesi In KokDosyalar</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%=DosyaNesnesi.Name%&gt;&lt;br&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Next %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada SurucuHarfi değişkenin değerini değistirerek, arzu ettiğiniz disk/disket veya CD-ROMa ulaşabilirsiniz. <u>GetDrive</u> metodu dikkatinizi çekmiş olmalı; bu metodla, VBScript, fiilen disk/disket sistemine erişir.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Daha sonra yapacağımız ASP sayfalarında dosya sistemi nesnesinden ve disk sürücüleri kolleksiyonundan yararlanacağız.</font></p>
<h1><a title="_Toc481830239" name="_Toc481830239"></a><font face="Arial Black" size="5">Metin (TextStream) Nesnesi</font></h1>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Dosya sistemi nesnesi bize disk sistemine, klasörlere ve dosyalara erişme imkanı verir ama yeni dosyaları oluşturmak veya mevcutlara ek yapmak için yeterli özellik ve metoddan yoksundur. Bunu <u>TextSream</u> nesnesi sağlar.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bilgisayar işletim sistemlerinin anası, Unix’e aşina iseniz, klavyeden sabit diske kadar bir bilgisayara girdi akımı bulunduğunu, bunlardan birinin de metinler olduğunu hatırlayacaksınız (Aşina değilseniz, şimdi oldunuz!). Bir işletim sistemi, metin dosyalarını okurken, yazarken bir metin akışı olur; <u>TextStream</u> nesnesinin adı da bunu anlatıyor: Metin Akımı. Web Server ve dolayısıyla ASP açısından sabit diske bir metin yazarken, veya sabit diskten bir metin okurken, bir metin akışı nesnesi oluşur. Bu nesnenin özellikleri ve metodlarını kullanarak, örneğin ziyaretçilerin sitemize bırakacakları form bilgilerini Web Server’ın sabit diskine yazdırabiliriz. Veya mevcut metinleri okuyabilir ve bunların içeriğini ziyaretçimize göndereceğimiz HTML sayfanın etiketlerinin içeriği olarak kullanabiliriz. Metin dosyası okumak ve yazmak disk sistemini ilgilendiren bir eylem olduğu için yine <u>Scripting</u> nesnelerinden <u>FileSystemObject</u> nesnesinden yararlanacağız; fakat bu kez değişik metodlar kullanacağız.</font></p>
<h2><a title="_Toc481830240" name="_Toc481830240"></a><font face="Arial Black" size="3">Metin Dosyası Oluşturma (<u>CreateTextFile</u>)</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Aslında biraz önce, ASP nesnelerinin neler yapabileceğine örnek olarak yazıp <u>dosya_yaz.asp</u> adıyla kaydettiğimiz program, bir metin dosyasını yazdırma işlemiydi. Oradaki kodlara yeniden göz atarsanız, <u>CreateTextFile</u> (metin dosyası oluştur) metodunu yardıma çağırıyor ve bu metoda argüman olarak yeni metin dosyasının yolunu ve adını veriyorduk. Bu metod <u>TextStream</u> nesnesinindir; ve otomatik olarak bu nesnenin diğer metodlarını kullanmamızı sağlar. kullandığımız metodlar ise <u>WriteLine</u> (satır yaz: bir String’i sonuna yeni satır karakteri koyarak dosyaya yazar) ve <u>Close</u> (kapat: açılan metin dosyasını kapatır).</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">TextStream’in burada kullandığımız ikisinin dışında iki metodu daha vardır:</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Write</u> (yaz): Bir <u>String</u>’i dosyaya yazdırır; satır sonuna yeni batır karakteri (Return kodu) koymaz.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>WriteBlankLines</u> (boş satır yaz): Bir metin dosyasına argüman olarak vereceğiniz sayıda boş satır yazdırır.</font></font></p>
<h2><a title="_Toc481830241" name="_Toc481830241"></a><font face="Arial Black" size="3">Varolan Metin Dosyasına Ek Yapma (OpenTextFile)</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Metin yazdırma işlerinde sık sık uygulayacağımız bir senaryo, mevcut bir metin dosyasına ek yapmak olacaktır. Örneğin bütün ziyaretçilerimizin sitemizdeki konuk defterine yazdıklarını, bir metin dosyasında toplamak isteyebiliriz.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bunu <u>OpenTextFile</u> metodu ile yapacağız. Bu metod, tahmin edeceğiniz gibi, açılacak dosyanın yolunu ve adını isteyecektir. Örneğin, <u>dosya_yaz.asp</u>’nin ilgili satırı şöyle olacak:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set yaz = YaziFSO.OpenTextFile(&#8220;c:\yazi_deneme.txt&#8221;,8,0)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada dosya yolunu ve adını veren birinci argümana ek olarak iki yeni argüman görüyorsunuz: “8,0” şeklinde. Bunlardan birinicisi girdi/çıktı durumu (<u>I/O Mode</u>), ikincisi ise biçim (<u>Format</u>) ile ilgilidir. <u>I/O Mode</u> parametreleri şunlardır:</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">1: okumak için aç</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">8: eklemek için aç</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Açılacak dosyanın biçimini belirttiğimiz son argüman ise şu değerlerden birini alabilir:</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">0: ASCII dosyası olarak aç</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">-1: Unicode dosyası olarak aç (Örneğin içinde Türkçe karakterler varsa)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">-2: Sistemin varsayılan dosya türü olarak aç</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Buna göre, bir dosyayı salt okumak için açmak amacıyla “1,0” argümanlarını kullanmamız gerekir. Diyelim ki bir dosyayı açtık. İçindekileri nasıl okuyabiliriz? Bir döngüyle. İşte örneği:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Option Explicit %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;ASP ILE DOSYADAN METİN OKUMA&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;META http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Dim DosyaSistemi, MetinDosyasi, Satir</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set DosyaSistemi = CreateObject(&#8220;Scripting.FileSystemObject&#8221;)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Set MetinDosyasi = DosyaSistemi.OpenTextFile(&#8220;c:\yazi_deneme.txt&#8221;,1, 0)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Do</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Satir = MetinDosyasi.ReadLine</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%=Satir%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Loop Until MetinDosyasi.AtEndOfStream</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">MetinDosyasi.Close</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada kullandığımız metod dikkatinizi çekmiş olmalı: <u>ReadLine</u>. Bu, açılan metin dosyasından bir satır okutmamızı sağlar. İkinci ve son satırları okutmamızı ise <u>Do..Loop</u> kontrolü sağlıyor. Bu döngü ne kadar sürüyor? MetinDosyası nesnesi, <u>AtEndOfStream</u> (akımın sonunda) oluncaya kadar. Bu, dosyanın sonuna geldiğimiz anda ortaya çıkan bir durum; bu durumla karşılaştığı anda <u>Do..Loop</u>, yaptığı işi durdurup, bir sonraki komuta geçecektir. Burada kullandığımız <u>ReadLine</u> metoduna ek olarak yararlanabileceğimiz diğer metodlar ise şunlardır:</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Read</u> (oku): Bir sayı örgümanı ile çalışır ve verdiğiniz sayı kadar karakter okur.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>ReadLine</u> (satır oku): Bir satır okur ve String olarak verir.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>ReadAll</u> (tümünü oku): Bütün satırları okur ve tek String olarak verir.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Skip</u> (atla): Bir sayı argümanı ile çalışır ve verdiğiniz sayı kadar karakteri atlar.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>SkipLine</u> (satır atla): Bir sonraki satıra atlar.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu metodlarla sağladığımız okuma işinin kontrolü amacıyla şu özellikleri de kullanabiliriz:</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>AtEndOfStream</u> (akımın sonunda): Okutulan dosyanın sonuna gelinmesi halinde <u>True</u> (doğru) olur.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>AtEndOfLine</u> (satırın sonunda): Okutulan satırın sonuna gelinmesi halinde <u>True</u> (doğru) olur.</font></font></p>
<h1><a title="_Toc481830242" name="_Toc481830242"></a><font face="Arial Black" size="5">Sunucu (Server) Nesneleri</font></h1>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Buraya kadar ele aldığımız nesneler bir anlamda bizim sadece tek tek sayfalarda yararlanacağımız araçları sağlıyor. Oysa ASP’yi diğer CGI teknolojilerinden ayıran başlıca özelliklerden biri tek tek Web sayfalarını sanki bir bilgisayar programının çeşitli pencereleri, diyalog kutuları, mesaj kutuları, girdi kutuları gibi, birarada bir “uygulama programı” olarak bağlayabilmesidir. Başka bir deyişle bize, ziyaretçinin sitemize bağlandığı ve ana sayfamızı açtığı andan itibaren sitemizin bir program bütünlüğünde çalışmasını sağlayacak araçlar gerekir. Bunu ancak Web Server’ın yardımıyla yapabiliriz.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ASP sayfalarımızda kullanacağımız ikinci grup nesne, Sunucu Nesneleri’dir. Bu grupta tabiî önce Sunucu’nun kendisi yer alır; sonra ziyaretçi ile kurduğumuz ilişki gelir. Ziyaretçi ile ilişkimizi iki yönlü trafiğe benzetebilirsiniz: ondan bize gelen talepler, bizim ona karşılıklarımız. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Ziyaretçiden bize gelen trafiğe neden “Talep” diyoruz? Ziyaretçi, Browser’ının URL hanesine yazdığı her adresle, veya formlardaki bir düğmeyi veya sayfalarımızdaki herhangi bir köprüyü tıklamakla, Server’a “Bana şunu göndersene!” demiş olur. Bu taleptir. Ziyaretçi taleplerinin tümü Talep Nesnesi (<u>Request </u><u>Object</u>) olarak bir arada ele alınabilir. Server’ın bu taleplere verdiği karşılıklar, yani ziyaretçinin Browser’ına gönderdiği sayfalar, resimler, sesler, videolar ise karşılıktır ve ASP açısından Karşılık Nesnesi’ni (Response <u>Object</u>) oluşturur. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu bölümde bu nesneleri daha yakından tanıyacağız.</font></p>
<h2><a title="_Toc481830243" name="_Toc481830243"></a><font face="Arial Black" size="3">Server Nesnesi</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Web Server, ASP için bir nesnedir, ASP’nin bir çok işini bu nesnenin özellikleri ve metodları halleder. Server nesnesinin bir özelliği (<u>ScriptTimeout</u>) ve dört metodu (<u>Create</u><u>Object</u>, <u>HTMLEncode</u>, <u>URLEncode</u>, <u>MapPath</u>) vardır. Web Server çalıştığı bilgisayarın sizin siteniz adına yönetiminden sorumludur; dolayısıyla bu kadar az özellik ve metodu var diye bu nesneden çok yararlanmayacağımızı sanmayın. ActiveX ve COM bileşenlerini çalıştırmak Server’ın görevidir.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>ScriptTimeout</u> Özelliği: Diyelim ki bir ASP Script’i ya bizim, ya ziyaretçinin, ya da Server’ın bir hatası üzünden sonsuz döngüye girdi! Döngünün durması için gerekli şart asla yerine gelmiyor ve Script bir türlü yapacağı işi yapıp, sonlandırmıyor. Bu durumlarda ziyaretçinin ve tabiî Server’ın sonsuza kadar beklemesi mümkün değil! Programın bir şekilde durdurulması gerekir. Bunu hemen hemen bütün Web server programlarının <u>Script Timeout</u> (Script süre sınırı) diyalog kutusuna bir değer girilerek yapılır. Öreğin MS-Internet Information Server için varsayılan <u>Script Timeout</u> süresi 90 saniyedir. Yani ISS, herhangi bir Script’in çalışıp-durmasını 90 saniye bekler; bu sürenin sonunda Script’in çalışması tamamlanmazsa ziyaretçiye arzu ettiği sayfanın veya unsurun bulunamadığını bildirir. Bu süreyi (Server’ın varsayılan değerinin altında) kısaltmak değilse bile uzatmak elimizdedir. Bunu <u>ScriptTimeout</u> özelliğini kullanarak yaparız. ASP sayfasının herhangi bir yerine örneğin şu kodu koymak yeter:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Server.ScriptTimeout = 100 %&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu örneğe göre Server’ın varsayılan Script Timeout süresi 90 saniye ise 100 saniyeye çıkmış olur.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Böyle bir şeyi neden yapmak isteyebiliriz? Script’iniz çok karmaşık veya başka bir Server’daki veritabanından veri çekiyor, olabilir. Gerçi bu anlamda 90 saniye bilgisayar milleti için bir asır anlamına gelir, ama yine de durdurulmasaydı işini başarıyla tamamlayacak bir Script, bu sürenin kısalığı yüzünden Server tarafından durdurulabilir. ASP sayfalarınız çok karmaşıksa ve sürekli <u>Timeout</u> hatası veriyorsa, hata aramadan önce bu süreyi uzatabilirsiniz.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Create</u><u>Object</u> Metodu: İlk ASP kodunu yazdığımız andan beri bu metodu kullandığımızı görüyorsunuz. <u>Create</u><u>Object</u> (nesne oluştur) olmasa idi, dört mevsim birbirini izleyebilir, Dünya Güneş’in etrafında dönebilir miydi? Hiç sanmam. Fakat lütfen o <u>Create</u><u>Object</u> ile bu <u>Create</u><u>Object</u>’i birbirine karıştırmayın. Yukarıda kullandıklarımız <u>Scripting</u> nesnesinin bir metodu idi; bu Server nesnesine aittir. Diyelim ki sayfanızda reklam amaçlı <u>banner</u> grafiklerini belirli zaman aralığı ile veya ziyaretçiye gönderdiğiniz <u>Cookie</u> (çerez) bilgilerine göre değiştirmek istiyorsunuz. Bunun için diyelim ki MS-Web Server Programının <u>AdRotator</u> bileşininden yararlanacaksınız; şöyle bir kod işinizi görebilir:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Set Reklam = Server.CreateObject (“MSWS.AdRotator”)%&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%= Reklam.GetAdvertisement(“/reklamlar/buyukbanka.txt”)%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Burada <u>GetAdvertisement</u>, Server’ın <u>AdRotator</u> bileşininin bir metodudur. Server’ın <u>Create</u><u>Object</u> metodundan, veritabanına ulaşırken de yararlanacağız.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>MapPath</u> (Yolu belirle) Metodu: Web Server açısından “kök dizin” (<u>root directory</u>) Server’ın bulunduğu bilgisayarın sabit diskinde, herhangi bir klasör olabilir. Örneğin IIS için bu varsayılan değer olarak “C:\inetbup\wwwroot” klasörüdür. Özellikle ASP ile “program niteliğinde siteler” yapmaya başladığımızda, sitenin ilgili bütün dosyalarının bulunduğu bir dizin için yol belirlemek isteyebiliriz. Bunu Server nesnesinin MapPath (Yolu belirle) metodu ile yapabiliriz:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">WebDizini = Server.MapPath(“/benim_site”)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu komutla WebDizini değişkenin değeri muhtemelen şöyle olacaktır:</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">“C:\inetbup\wwwroot\benim_site\”</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Fakat bu metodun sadece böyle duragan biçimde kullanılması gerekmez; bazen sayfalarımızda ziyaretçi ile etkileşmenin sonucu olarak varsayılan Web dizinimizi değiştirmek isteyebiliriz. Sözgelimi biri Türkçe, diğeri İngilizce iki sitemiz varsa, ve ana sayfamızda ziyaretçi Türkçe’yi seçtiyse, o noktadan itibaren Web uygulamamız için Web kök-dizini, “/turkish/” olacak ve mesela resimlerimiz için verdiğimiz “/resimler/” dizini kök dizinde değil, “/turkish/resimler/” klasöründe aranacaktır. Web yolunu dinamik olarak, yani ziyaretçinin tercihine bağlı şekilde değiştirebilmek için, önce ziyaretçiden gelecek bilgileri nasıl kullanacağımıza, yani <u>Request</u> (talep) nesnesine değinmemiz gerekir.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>HTMLEncode, URLEncode</u>: İçinde HTML açısından kod parçası veya özel işaret sayılan karakterler bulunan metinleri sayfamıza içerik olarak göndereceğimiz zaman Server’ın işaretleri aynen metin gibi göndermesini sağlamak için, örneğin:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Server.HTMLEncode(“Değisken1 &lt; Değisken2”)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">yazarsak, ASP bu metni HTML kodu olarak yorumlamaz, metin olarak algılar. </font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Internet’te bazen özellikle sayfa adresleri belirtilirken bazı değerlerin “URL Kodu“ dediğimiz şekilde kodlanmış olarak gönderilmesi gerekir. Bu kodlama türünde boşlukların yerine + işareti konmuş olması şarttır. Bu tür bilgiler göndereceğimiz zaman:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Server.URLEncode(“kelime 1 kelime2 kelimeme2”)</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">şeklindeki bir kod Bunu hemen şu şekle sokacaktır:</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">kelime1+kelime2+kelime3</font></p>
<h2><a title="_Toc481830244" name="_Toc481830244"></a><font face="Arial Black" size="3">Talep (<u>Request</u>) Nesnesi</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Web Server çok akıllı bir programdır; bir Web ziyaretçisi herhangi bir talepte bulunduğu, yani bir sayfanın gönderilmesini istediği anda, bu talebi, bir nesne halinde ele alır; kolleksiyonlar oluşturur. Bu kolleksiyonlar, HTTP protokolü ile iletişimin sonucu olarak ziyaretçinin Browser’ından ve Internet’e giriş noktası olan ISS’in bilgisayarından başlayan ve Web Server’dan derlenen bir dizi bilgidir. Bir anlamda, <u>Request</u> nesnesi, Web programımızın Girdi (<u>Input</u>) bölümünü oluşturur. </font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Request</u> nesnesi kendi içinde dört ana nesne barındırır:</font></font></p>
<h3><a title="_Toc481830245" name="_Toc481830245"></a><font size="3"><font face="Arial Black"><u>QueryString</u> ve Form</font></font></h3>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Web ziyaretçisinin bilgisayarından kalkıp Server’a gelen herşey, <u>QueryString</u> kolleksiyonunu oluşturur. Bu ziyaretçinin Browser’ın URL adresi hanesine yazdığı bir basit HTML sayfası yolu ve adı olabilir; bir Form’un Gönder düğmesini tıkladığında gelen bilgiler olabilir. Bu bilgilerin şu özelliklerini kullanabiliriz:</font></p>
<p class="MsoNormal" style="margin:0 0 0 78pt;"><font size="3"><font face="Times New Roman"><u>Content_Length</u>: Bir Form’dan gelen bilgilerin tümümün <u>byte</u> olarak boyutudur. </font></font></p>
<p class="MsoNormal" style="margin:0 0 0 78pt;"><font size="3"><font face="Times New Roman"><u>Remote_Host</u>: Ziyaretçinin IP adresini verir; ancak Internet’e çevirmeli ağ ile bağlanan ziyaretçilerimiz her seferinde farklı bir IP bildirebilirler. Bu yüzden bu bilgiyi ziyaretçinin kimliği sayamayız.</font></font></p>
<p class="MsoNormal" style="margin:0 0 0 78pt;"><font size="3"><font face="Times New Roman"><u>Request_Method</u>: Form’da kullandığımız GET veya POST metodunu bildirir. İki yöntemle gelen bilgi farklıdır. Form’un oluşturduğu bilgileri GET yöntemi ile alırsak bu, çevre değişkenlerinden QUERY_STRING değişkeninin içine yazılır. Başka bir ifade ile Form’daki bütün değişkenlerin adları ve bu değişkenin içerdiği değer yumak yapılır (bu yumağın niteliğine ve nasıl çözeceğimize geleceğiz!) ve Server’da QUERY_STRING değişkeninin değeri olarak yazılır. Form’un bilgilerini POST yoluyla alıyorsak bunlar <u>Request</u> nesnesinin <u>Form</u> kolleksiyonunun içinde Form’un değişken adları ve ziyaretçinin bu değişkenler için sağladığı değerler olarak ayrı ayrı yazılır. GET ile sınırlı, POST ile sınırsız bilgi alabiliriz. </font></font></p>
<p class="MsoNormal" style="margin:0 0 0 78pt;"><font size="3"><font face="Times New Roman"><u>Script_Name</u>: O anda çalıştırılmakta olan ASP sayfasının adını verir.</font></font></p>
<h3><a title="_Toc481830246" name="_Toc481830246"></a><font size="3"><font face="Arial Black"><u>ServerVariables</u> (Server Değişkenleri)</font></font></h3>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Request nesnesinin bir diğer kolleksiyonu, bizim kendi Web Server’ımızın o anda çalışmakta olan ASP sayfası için oluşturduğu ortamın değişkenleridir. Bunların arasında ziyaretçinin Browser’ına ilişkin bilgiler de vardır. Önvc şU kısa ASP sayfasını çalıştırarak kendi Server’ımızın şu andaki değişkenlerini görelim; sonra bunları ayrıntılı ele alalım (<u>SerDeg.asp</u>):</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HTML&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TITLE&gt;HTTP ServerDegişkenleri Kolleksiyonu&lt;/TITLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;meta http-equiv=&#8221;content-type&#8221; content=&#8221;text/html; charset=ISO-8859-9&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=windows-1254&#8243;&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HEAD&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;BODY BGCOLOR=white&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;CENTER&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;H2&gt;HTTP Server Değişkenleri Kolleksiyonu&lt;/H2&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/CENTER&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TABLE BORDER=1&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;TR&gt;&lt;TD&gt;&lt;B&gt;Değişkenin adı&lt;/B&gt;&lt;/TD&gt; &lt;TD&gt;&lt;B&gt;Değeri&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% For Each key in Request.ServerVariables %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>&lt;TR&gt;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>&lt;TD&gt;&lt;% = key %&gt;&lt;/TD&gt;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>&lt;TD&gt;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>&lt;%If Request.ServerVariables(key) = &#8220;&#8221; Then</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>                  </span>Response.Write &#8220; &#8221; </font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>Else<span>        </span></font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>                  </span>Response.Write Request.ServerVariables(key)</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>End If</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>Response.Write &#8220;&lt;/TD&gt;&#8221;%&gt;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font><font face="Courier New"><span>            </span>&lt;/TR&gt;</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Next %&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/TABLE&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;p&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Sizin Host&#8217;unuzun adı:&lt;B&gt; &lt;%=Request.ServerVariables(&#8220;HTTP_HOST&#8221;)%&gt;&lt;/B&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/BODY&gt;</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;/HTML&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu sayfayı çalıştırdığımız zaman görüntülenecek tabloda, Bir HTTP Server’ın <u>SerDeg.asp</u> sayfasını çalıştırdığı anda oluşturduğu ortama şekil veren bütün değişkenleri göreceksiniz. Bu değişkenleri programlama yoluyla değiştiremeyiz; sadece okuyup, yararlanabiliriz. HTTP Server Değişkenleri Kolleksiyonunun elemanları şöyle sıralanır:</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><u><font size="3"><font face="Times New Roman">Değişkenin adı<span>                            </span>Değeri </font></font></u></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font size="3"><font face="Times New Roman"><u>ALL_HTTP</u><span>                               </span>HTTP <u>Header</u> içinde yer alan bütün değişkenler ve değerleri. Header adlarının önünde “HTTP_” öneki vardır.</font></font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font size="3"><font face="Times New Roman"><u>ALL_RAW</u><span>                               </span>HTTP Header içinde yer alan bütün değişkenler ve değerleri. <u>Header</u> adları ve değerleri istemci Browser’ın verdiği şekilde gösterilir.</font></font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">APPL_MD_PATH<span>                    </span>Web Server’ın ISAPI.DLL dosyası için varsaydığı kök dizin</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">APPL_PHYSICAL_PATH<span>       </span>Web Server’ın varsaydığı kök dizinin gerçek yolu</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">AUTH_PASSWORD<span>                </span>Kullanıcı Web Server’a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan parola</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">AUTH_TYPE<span>                            </span>Kullanıcı Web Server’a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanılan yetkilendirme yöntemi</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">AUTH_USER<span>                           </span>Kullanıcı Web Server’a kullanıcı adı/parola yöntemiyle bağlanabiliyorsa, kullanıcı adı</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">CERT_COOKIE<span>                       </span>Kullanıcı siteye bağlanmak için yetkilendirme sertifikası kullanıyorsa kendisine verilen kimlik (ID)</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">CERT_FLAGS<span>                          </span>Sertifikanın varlığını gösteren bit değeri</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">CERT_ISSUER<span>                         </span>Sertifika varsa veren kurum</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">CERT_KEYSIZE<span>                      </span><u>Secure Socket Layers</u> kullanılıyorsa, bağlantı için anahtar değeri</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">CERT_SECRETKEYSIZE<span>        </span>Özel anahtar değeri</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">CERT_SERIALNUMBER<span>        </span>Sertifika seri no.</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">CERT_SERVER_ISSUER<span>        </span>Sertifikayı veren merci</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">CERT_SERVER_SUBJECT<span>     </span>Server Sertifikasının “konu” alanı değeri</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">CERT_SUBJECT<span>                      </span>İstemci Sertifikasının konu alanı değeri</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">CONTENT_LENGTH<span>              </span>İstemcinin gönderdiği bilgi yumağının boyutu</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">CONTENT_TYPE<span>                    </span>Ziyaretçiden gelen bilgilerin GET veya POST metoduna göre edindiği tür</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">GATEWAY_INTERFACE<span>       </span>Web Server’ın ziyaretçi ile etkileşim arayüzünün adı ve sürümü. Genellikle: CGI/1.1 </font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">HTTPS<span>                                      </span>Ziyaretçi ile bağlantı güvenli ise ON, değilse OFF</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">HTTPS_KEYSIZE<span>                    </span>Secure Sockets Layer için bağlantı anahtar sayısı</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">HTTPS_SECRETKEYSIZE<span>      </span>Özel Server sertifikasının gizli anahtar sayısı</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">HTTPS_SERVER_ISSUER<span>      </span>Özel Server sertifikasının veren merci</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">HTTPS_SERVER_SUBJECT<span>   </span>Özel Server sertifikasının konusu</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">INSTANCE_ID<span>                        </span>Web Server’ın aynı anda kaç kere çalışmakta olduğu</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">INSTANCE_META_PATH<span>     </span>Şu anda çalışmakta olan Web Server’ın Meta yolu</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">LOCAL_ADDR<span>                        </span>İstemcinin IP numarası</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">LOGON_USER<span>                        </span>İstemci Windows NT sisteminde ise oturum açma adı</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">PATH_INFO<span>                            </span>Çalışmakta olan ASP’nin göreli yolu ve adı</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">PATH_TRANSLATED<span>             </span>Çalışmakta olan ASP’nin gerçek yolu ve adı </font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">QUERY_STRING<span>                    </span>İstemcinin gönderdiği bilgi kümesi</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">REMOTE_ADDR<span>                     </span>İstemcinin Host’unun (ISS’inin) IP’si</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">REMOTE_HOST<span>                      </span>İstemcinin Host’unun (ISS’inin) adı</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">REMOTE_USER<span>                      </span>İstemcinin gerçek adı</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">REQUEST_METHOD<span>              </span>İstemciden bilgi isteme yöntemi (GET veya POST)</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">SCRIPT_NAME<span>                       </span>Çalışmakta olan ASP’nin adı</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">SERVER_NAME<span>                      </span>Sunucu’nun adı</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">SERVER_PORT<span>                       </span>Sunucuya bağlantının geldiği TCP kapı numarası</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">SERVER_PORT_SECURE<span>      </span>TCP kapısı güvenli ise 1, değilse 0</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">SERVER_PROTOCOL<span>            </span>Server’ın çalıştırdığı HTTP’nin sürümü</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">SERVER_SOFTWARE<span>            </span>Server programının adı ve sürümü</font></p>
<p class="MsoNormal" style="text-indent:-148.3pt;margin:0 0 0 184.3pt;"><font face="Times New Roman" size="3">URL<span>                                          </span>Şu anda geçerli URL</font></p>
<h3><a title="_Toc481830247" name="_Toc481830247"></a><font size="3"><font face="Arial Black"><u>Cookie</u> (Çerez)</font></font></h3>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Daha önce ne kadar çok olursa olsun tek-tek Web sayfalarından oluşan siteler yaptıysanız bile, <u>Cookie</u> (Çerez) ile ilginiz olmamış olabilir. Ya da sadece Internet ziyaretçisi olarak başkalarının size gönderdiiği <u>Cookie</u>’lere sinirlenmekle yetinmiş olabilirsiniz. Fakat şimdi ASP ile Web Programı oluşturmaya hazırlanan kişi olarak <u>Cookie</u>’lerle daha yakından ilgilenmeniz gerekiyor. Çünkü artık siz de başkalarına çerez göndereceksiniz!</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Tabiî bunun için önce “<u>Cookie</u> neden gereklidir?” sorusunu yanıtlamak gerekir. HTTP ile yapılan iletişim, belirgin olmayan durum bağlantısına dayanır: yani ne istemci sunucunun, ne de sunucu istemcinin o anda hatta (<u>on-line</u>) olduğunu bilmek zorunda değildir; birbirlerinden istedikleri ve gönderdikleri şeyleri karşı tarafından almaya hazır olduğunu bilmeden gönderirler. Oysa sözgelimi elektronik alışveriş gibi ziyaretçinin bir yerlere birşeyler kaydettiği, geçici değişkenler oluşturduğu durumlarda sitemizde kimin ne yaptığıını bilmek zorundayız. Ziyeretçinin bir sayfada yaptığı tercihler diğer sayfalarda ona sunacağımız içeriği etkileyebilir, belirleyebilir. Oysa aynı ziyaretçi bir sayfadan diğerine geçerken Server ile ilişkisini kaybedebilir. Bunun için ziyaretçinin Internet’ten kopması gerekmez; sadece TCP/IP protokolü gereği bizimle bağlantısı kesilebilir. Bunu ziyaretçi farketmeyebilir; ama Server etmek zorundadır. Heryeni ilişkiye yeni bir “application” (uygulama programı) başlatamayız; ziyaretçinin bir önceki sayfada yaptığı tercihlerin devam etmesi gerekir. Bu devamlılığı ziyaretçiyi işaretleyerek yaparız; bu işareti de <u>Cookie</u> sağlar.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ASP tekniğiyle tasarladığımız sitede, ziyaretçilerimize <u>Cookie</u> göndermek zorunluktur diyebiliriz. ASP açısından <u>Cookie</u>’ler bir nesne oluştururlar. Aslında, <u>Cookie</u>’ler ASP için iki ayrı grup <u>Cookie</u> nesnesi oluştururlar: verilenler, ve hakkında bilgi alınan varolan <u>Cookie</u>’ler. Birinci grup <u>Request</u> (talep) nesneleri, ikinci grup ise <u>Response</u> (karşılık) neslereni içinde ele alınabilir. <u>Cookie</u> konusunun<span>  </span>devamını <u>Response</u> nesnelerine değindiğimiz yere bırakalım.</font></p>
<h3><a title="_Toc481830248" name="_Toc481830248"></a><font face="Arial Black" size="3">Sertifika Nesnesi</font></h3>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Sertifika, HTTP bağlantısında “Ben filancayım!” diyen istemcinin, gerçekten filanca olup olmadığını gösterir. Bir yazılımdan ibaret olan sertifikaları yetkili bir kurum veya şirket verir; bir seri numarası olur. Şifreleme teknikleri gelişmiş olduğu için taklit edilmesi zordur. Sertifika uygulaması için Web Server’ın <u>Secure Socket Layers</u> denen güvenli HTTP protokolünü kullanması gerekir. Bu durumda Server’ın URL’i, <u>http://</u> diye değil <u>https:// </u>diye yazılır.</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">ASP açısından sertifika ile ilgili her türlü bilgi <u>ClientCertificate</u> kolleksiyonunda durur. Sözgelimi, bir ziyaretçinin gerçekten sitenize girmeye yetkili olup olmadığını anlamak için:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%SertifikaNo = Request.ClientCertificate(SerialNumber) %&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">gibi bir kodla istemcinin Sertifika seri numarasını SertifikaNo değişkenine atayabilir ve daha sonra bu değişkenin değerini elinizdeki bir liste ile karşılaştırabilirsiniz.</font></p>
<h2><a title="_Toc481830249" name="_Toc481830249"></a><font face="Arial Black" size="3">Karşılık (<u>Response</u>) Nesnesi</font></h2>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Ve geldik Web Server’in Çıktı (<u>Output</u>) sağladığı istemciye giden karşılıkların oluşturduğu nesneye. Server’dan Browser’a giden herşey karşılıktır. Bu bir ASP veya HTML sayfası olabilir, sayfanın içindeki GIF, JPG veya PNG grafiği, bir Flash, video veya ses dosyası olabilir. Böylesine zengin içeriği olmakla birlikte <u>Response</u> nesnesinin sadece bir kolleksiyonu vardır: <u>Cookie’</u>ler. Buna karşılık <u>Response</u> nesnesinin kullanabileceğimiz çok sayıda özelliği ve metodu bulunur. Önce <u>Cookie</u> kolleksiyonunu ele alalım; sonra önemli <u>Response</u> nesnesi özellikleri ve metodları üzerinde duralım.</font></p>
<h3><a title="_Toc481830250" name="_Toc481830250"></a><font size="3"><font face="Arial Black"><u>Cookie</u>’ler</font></font></h3>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Request</u> nesnesinin <u>Cookie</u> kolleksiyonuna değinirken, ziyaretçilerimizi Browser’larına <u>Cookie</u> göndererek tabir yerinde ise işaretleriz, demiştik. Bu işaretleme, söz gelimi, ziyaretçinin bir Form’a yazdığı adı ve soyadı ile elektronik posta adresini <u>Cookie</u> olarak onun bilgisayarına kaydetmek şeklinde olur. Bir kişi sayfamızı talep ettiği anda, ASP programımız bu kişinin bilgisayarında daha önce koyduğumuz <u>Cookie</u>’yi arar ve bulur; <u>Cookie</u>’den bu kişinin adını öğrenir ve mesela sayfamız “Sayın Filanca, sitemize hoş geldiniz!” başlığını görüntüler. </font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Cookie</u>’ler sadece böyle fiyaka amaçlı olarak kullanılmaz; ziyaretçinin daha önce sitemizde ziyaret ettiği sayfaları veya elektronik ticaret sitemizden satın aldığı kitap türlerini <u>Cookie</u>’ye kaydedebiliriz. Ziyaretçinin ikinci ziyaretinde ona önce bu sayfaların veya kitapların köprülerini sunabiliriz.</font></font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bir <u>Cookie</u>’nin adı ve anahtarları (<u>key</u>) ile bu anahtarlara karşılık değerler olur. Örneğin:</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Response.Cookie(“Bizim_Cerez”)(“Adi_Soyadi”)= “Necip Fazıl” %&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu, ziyaretçinin Browser’ına (yani sabit diskine) “Bizim_Cerez” isimli bir <u>Cookie</u> gönderir; bu <u>Cookie</u>’nin “Adi_Soyadi” adlı bir anahtarı vardır; bu anahtarın değeri ise “Necip Fazıl” olur.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Cookie</u> kolleksiyonunun iki özelliği bulunur:</font></font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Expires</u> (zaman aşamı süresi): Bir <u>cookie</u>’nin artık geçersiz olduğu tarihi gösterir.:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;% Response.Cookie(“Bizim_Cerez”).CookieExpires = “August 7, 2000” %&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Bu <u>Cookie</u>, 7 Ağustos 2000 tarihinden sonra kullanılmaz olacak demektir.</font></p>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>HasKeys</u>: <u>Cookie</u>’nin <u>String</u> mi içerdiği yoksa anahtarları ve değerleri mi bulunduğunu belirtir, “HasKeys = <u>False</u>” birinci, ““HasKeys = <u>True</u>” ise ikinci durumu belirtir. Bir <u>Cookie</u>’de birden fazla anahtar ve değer bulunuyorsa, tümünü bir ASP kodu içinde yazmak, <u>Cookie</u>’nin gönderilmesini kolaylaştırır</font></font></p>
<h3><a title="_Toc481830251" name="_Toc481830251"></a><font face="Arial Black" size="3">Metodlar</font></h3>
<p class="MsoNormal" style="margin:0;"><font size="3"><font face="Times New Roman"><u>Response</u> nesnesinin bir çok metodu vardır; bunlardan <u>.Write</u>’ı yukarıdaki örneklerde sık sık kulandık:</font></font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">&lt;%</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">DIM Adi_Soyadi</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Adi_Soyadi = “Necip Fazıl Dayanır”</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">Response.Write(“Merhaba, benim adım, “ &amp; Adi_Soyadi)</font></p>
<p class="NorKod" style="margin:0 0 6pt;"><font face="Courier New">%&gt;</font></p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">örneği, ziyaretçinini Browser penceresine: “Merhaba, benim adım Necip Fazıl Dayanır” yazdırır. Fakat VBScript, size bir kolaylık sağlar; buna bazı ASP tasarımcıları “eşittir metodu” adını verir:</font></p>
<p class="MsoNormal" style="margin:0;">&nbsp;</p>
<p class="MsoNormal" style="margin:0;"><font face="Times New Roman" size="3">Devamı 4. derste</font></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yukle.wordpress.com/133/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yukle.wordpress.com/133/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yukle.wordpress.com/133/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yukle.wordpress.com/133/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yukle.wordpress.com/133/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yukle.wordpress.com/133/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yukle.wordpress.com/133/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yukle.wordpress.com/133/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yukle.wordpress.com/133/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yukle.wordpress.com/133/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yukle.wordpress.com/133/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yukle.wordpress.com/133/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yukle.wordpress.com&blog=1028738&post=133&subd=yukle&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yukle.wordpress.com/2007/03/16/asp-dersleri-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/498ea01ee88beecb59be73ea42c1f3c6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Administrator</media:title>
		</media:content>
	</item>
	</channel>
</rss>