<?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/"
	>

<channel>
	<title>Serpito &#187; PHP Dersler</title>
	<atom:link href="http://www.serpito.com/etiket/php-dersler/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.serpito.com</link>
	<description>Güncel Teknoloji ve Yazılım Blogu</description>
	<lastBuildDate>Fri, 10 Feb 2012 10:09:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP &#8211; ODBC (Open Database Connectivity)</title>
		<link>http://www.serpito.com/php-odbc/</link>
		<comments>http://www.serpito.com/php-odbc/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 03:48:38 +0000</pubDate>
		<dc:creator>Atilla Akoğlu</dc:creator>
				<category><![CDATA[MySQL Dersleri]]></category>
		<category><![CDATA[PHP Dersleri]]></category>
		<category><![CDATA[A rray]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Diziler]]></category>
		<category><![CDATA[Ms Access]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Dersler]]></category>
		<category><![CDATA[veritabanı]]></category>

		<guid isPermaLink="false">http://serpito.com/php-odbc/</guid>
		<description><![CDATA[ODBC(Open Database Connectivity) , bir veri kaynağına bağlanmayı gerçekleştiren bir uygulama arayüzüdür. ODBC Bağlantısı Oluşturmak ODBC bağlantısı ile birlikte, her türlü veritabanına , ağ üzerindeki herhangi bir bilgisayara bağlanmak mümkündür. MS Access Veritabanına Bağlantı Kurulumunu Tarif Edelim: Control Paneldeki(Denetim Masası) Yönetici Araçlarını Açın. Data Sources(OBDC) seçeneğini çift tıklayın. System DSN sekmesini seçin. Add(Ekle) tıklayın. Microsoft <a href="http://www.serpito.com/php-odbc/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>ODBC(Open Database Connectivity) , bir veri kaynağına bağlanmayı gerçekleştiren bir uygulama arayüzüdür.  ODBC Bağlantısı Oluşturmak</p>
<p>ODBC bağlantısı ile birlikte, her türlü veritabanına , ağ üzerindeki herhangi bir bilgisayara bağlanmak mümkündür.</p>
<p>MS Access Veritabanına Bağlantı Kurulumunu Tarif Edelim:</p>
<ol>
<li> Control Paneldeki(Denetim Masası) Yönetici      Araçlarını Açın.</li>
<li> Data Sources(OBDC) seçeneğini çift      tıklayın.</li>
<li><strong>System DSN</strong> sekmesini      seçin.</li>
<li><strong>Add(Ekle) </strong> tıklayın.</li>
<li><strong>Microsoft Access Driver</strong> seçin ve Finish e tıklayın</li>
<li>Sonraki ekranda,<strong> </strong>veritabanı yerini verin ve <strong> Select</strong> <strong>(Seç)</strong>  tıklayın .</li>
<li>Veritabanına  <strong>Data Source Name (DSN) </strong>adı      verin.</li>
<li><strong>OK(tamam) </strong>e      tıklayın. Güle güle kullanın.</li>
</ol>
<p><span id="more-101"></span></p>
<hr />
<h4><strong> ODBC&#8217;e Bağlanmak</strong></h4>
<p>odbc_connect() fonksiyonu ile ODBC veri kaynağına bağlantı sağlanır. Bu fonksiyon 4 parametre alır:veri kaynağı adı, kullanıcı adı , şifre , ve opsiyonel bir imleç tipi.</p>
<p>odbc_exec() fonksiyonu SQL işlemini çalıştırır.</p>
<p><strong>Örnek</strong></p>
<p>Sıradaki örneğimiz kullanıcı adi veya parola kullanmadan  DSN&#8217;e northwind adında bir bağlantı oluşturacaktır.Daha sonra SQL oluştup çalışacaktır:</p>
<blockquote><p>$conn=odbc_connect(&#8216;northwind&#8217;,&#8221;,&#8221;);</p>
<p>$sql=&#8221;SELECT * FROM musteri&#8221;;</p>
<p>$rs=odbc_exec($conn,$sql);</p></blockquote>
<hr align="center" size="2" width="100%" />
<h4><strong>Kayıtları Tekrarlamak</strong></h4>
<p>odbc_fetch_row() fonksiyonu sonuçları kayıtlı satırlardan çeker.Alınacak bir satır var ise bu fonksiyon TRUE döndürür,aksi halde FALSE değerini döndürür.</p>
<p>Fonksiyon iki parametre ile çalışır: ODBC  sonuç belirteci ve opsiyonel satır numarası:</p>
<blockquote><p>odbc_fetch_row($rs)</p></blockquote>
<hr align="center" size="2" width="100%" />
<h4><strong>Kayıtlara Erişim</strong></h4>
<p>odbc_result() fonksiyonu kayıttan veri okur. Bu fonksiyon iki parametre kullanır : ODBC sonuç belirteci  ve bölüm numarası yada ismi.</p>
<p>Aşağıdaki kod  kayıdın 1. satırından sorgu sonucu okur:</p>
<blockquote><p>$compname=odbc_result($rs,1);</p></blockquote>
<p>Aşağıdali kod ise &#8220;SirketAdi&#8221; isimli bölümü okur ve döndürür.:</p>
<blockquote><p>$compname=odbc_result($rs,&#8221;SirketAdi&#8221;);</p></blockquote>
<hr align="center" size="2" width="100%" />
<h4><strong>ODBC Bağlantısını Kapatmak</strong></h4>
<p>odbc_close() fonksiyonu ODBC bağlantısını kapatır.</p>
<blockquote><p>odbc_close($conn);</p></blockquote>
<hr align="center" size="2" width="100%" /><strong>ODBC Örneği</strong></p>
<p>Örneğimiz ,ilk önce veritabanı bağlantısını kuruyor ve sonra kayıtlara erişim sağlanacak.Alınan verileri bir HTML tablosuna alacaktır.</p>
<blockquote><p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;?php</p>
<p>$conn=odbc_connect(&#8216;northwind&#8217;,&#8221;,&#8221;);</p>
<p>if (!$conn)</p>
<p>{exit(&#8220;Bağlantı Başarısız: &#8221; . $conn);}</p>
<p>$sql=&#8221;SELECT * FROM musteri&#8221;;</p>
<p>$rs=odbc_exec($conn,$sql);</p>
<p>if (!$rs)</p>
<p>{exit(&#8220;SQL Hatası&#8221;);}</p>
<p>echo &#8220;&lt;table&gt;&lt;tr&gt;&#8221;;</p>
<p>echo &#8220;&lt;th&gt;Şirket Adı&lt;/th&gt;&#8221;;</p>
<p>echo &#8220;&lt;th&gt;İletişim Adı&lt;/th&gt;&lt;/tr&gt;&#8221;;</p>
<p>while (odbc_fetch_row($rs))</p>
<p>{</p>
<p>$compname=odbc_result($rs,&#8221;SirketAdi&#8221;);</p>
<p>$conname=odbc_result($rs,&#8221;İletisimAdi&#8221;);</p>
<p>echo &#8220;&lt;tr&gt;&lt;td&gt;$compname&lt;/td&gt;&#8221;;</p>
<p>echo &#8220;&lt;td&gt;$conname&lt;/td&gt;&lt;/tr&gt;&#8221;;</p>
<p>}</p>
<p>odbc_close($conn);</p>
<p>echo &#8220;&lt;/table&gt;&#8221;;</p>
<p>?&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.serpito.com/php-odbc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQL Giriş</title>
		<link>http://www.serpito.com/mysql-giris/</link>
		<comments>http://www.serpito.com/mysql-giris/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 02:23:57 +0000</pubDate>
		<dc:creator>Atilla Akoğlu</dc:creator>
				<category><![CDATA[MySQL Dersleri]]></category>
		<category><![CDATA[PHP Dersleri]]></category>
		<category><![CDATA[MySQL Dersler]]></category>
		<category><![CDATA[MySQL Giriş]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Dersler]]></category>

		<guid isPermaLink="false">http://serpito.com/mysql-giris/</guid>
		<description><![CDATA[PHP , esnek bir web yazılım dilidir . Günümüzün gelişmiş birçok yazılım dilleri gibi birden fazla veritabanı (database) ile uyumlu halde çalışabilmektedir . Türkiye şartlarında düşünürsek , yazılım sektöründe PHP ile akla gelen ilk veritabanı MySQL olduğu için , ayrıca ORACLE , SQL ve diğerlerine nazaran PHP ile daha kullanışlı görünen veritabanı olduğu için , <a href="http://www.serpito.com/mysql-giris/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>PHP , esnek bir web yazılım dilidir . Günümüzün gelişmiş birçok yazılım dilleri gibi birden fazla veritabanı (database) ile uyumlu halde çalışabilmektedir . Türkiye şartlarında düşünürsek , yazılım sektöründe PHP ile akla gelen ilk veritabanı <a href="http://www.mysql.com/">MySQL </a>olduğu için , ayrıca <a href="http://www.oracle.com/index.html">ORACLE </a>,  <a href="http://www.sql.org/">SQL </a>ve diğerlerine nazaran PHP ile daha kullanışlı görünen veritabanı olduğu için , MYSQL derslerini yayınlamayı uygun buldum. MySQL genellikle PHP ile birlikte kullanılan ücretsiz bir veritabanı sunucusudur.</p>
<p><strong>MySQL Nedir?</strong></p>
<p>MySQL  bir veritabanıdır.Veritabanı , bilgileri saklayan yapıları tanımlar.</p>
<p>Bir veritabanında , HTML tabloları gibi satır, sütun içeren  tablolar bulunur.</p>
<p>Veritabanı , kategorilere göre veri saklamak için en uygun sistemdir. Bir şirketin örnek bir veritabanında &#8220;Müşteri&#8221; , &#8220;Ürün&#8221; , &#8220;Çalışanlar&#8221; ve &#8220;Sipariş&#8221; tabloları bulunur. <span id="more-91"></span></p>
<hr align="center" size="2" width="100%" /><strong>Veritabanı Tabloları</strong>Ortalama bir veritabanı genellikle bir veya birden fazla tablo içerir.Her tablo (&#8220;müşteri&#8221; veya &#8220;Sipariş&#8221; gibi) isimlendirilir. Her tablo veri kayıtlarını saklar.Aşağıda &#8220;insanlar&#8221; adında örnek bir tablo yaptık, inceleyelim :</p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td><strong>Soyisim</strong></td>
<td><strong>isim</strong></td>
<td><strong>adres</strong></td>
<td><strong>Şehir</strong></td>
</tr>
<tr>
<td>Veli</td>
<td>Uyanık</td>
<td>Çankaya 10/2</td>
<td>Ankara</td>
</tr>
<tr>
<td>Cengiz</td>
<td>Hayıf</td>
<td>Cebeci 10/23</td>
<td>Ankara</td>
</tr>
<tr>
<td>Galip</td>
<td>Bölük</td>
<td>Strrazburg  20</td>
<td>Ankara</td>
</tr>
</table>
<h4><strong>Sorgular</strong></h4>
<p>Sorgu, bir soru veya istek anlamındadır.</p>
<p>MySQL kayıtlarında , veritabanına yaptığımız sorgularda özel bilgileri, bir kayıtlı tablo kümesine sorgu yapabiliriz.</p>
<p>Aşağıdaki sorguya bakalım:</p>
<blockquote><p>SELECT Soyisim FROM insanlar</p></blockquote>
<p>Bu sorgu insanlar tablosunudaki   Soyisim satırını bulur ve kayıtlı verileri döndürür:</p>
<table border="0" cellpadding="0" cellspacing="0" width="47%">
<tr>
<td><strong>Soyisim</strong></td>
</tr>
<tr>
<td>Veli</td>
</tr>
<tr>
<td>Cengiz</td>
</tr>
<tr>
<td>Galip</td>
</tr>
</table>
<hr />
<h4>MySQL Veritabanı İndirin</h4>
<p>MySQL veritabanı sunucunuz PHP ile birlikte yüklememişse , <strike>ki <a href="http://serpito.com/php-kurulumu/">PHP Kurulum</a> yazımda kullanabileceğiniz PHP Web sunucuları hakkında detaylı bilgiler bulunur</strike> , aşağıdaki linkte , MySQL resmi web sitesinden veritabanınızı indirin: <a href="http://www.mysql.com/downloads/index.html" target="_blank">http://www.mysql.com/downloads/index.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serpito.com/mysql-giris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Filtreler</title>
		<link>http://www.serpito.com/php-filtreler/</link>
		<comments>http://www.serpito.com/php-filtreler/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 02:05:31 +0000</pubDate>
		<dc:creator>Atilla Akoğlu</dc:creator>
				<category><![CDATA[PHP Dersleri]]></category>
		<category><![CDATA[filtreler]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Dersler]]></category>
		<category><![CDATA[php filters]]></category>

		<guid isPermaLink="false">http://serpito.com/php-filtreler/</guid>
		<description><![CDATA[PHP filtresi , kullanıcı girdileri gibi güvensiz kaynaklardan alınan verileri filtreleme işlemini gerçekleştirir. PHP Filtre Nedir? Güven vermeyen kaynaklardan alınan verileri filtreleme yapmamız gerekir. Verileri doğrulama, test etme ve filtreleme tüm web uygulamalar için önemli bir aşamadır. Php filter özelliği , kolay kullanıma sahip bir şekilde diyazn edilmiştir. Neden Filtre Yapmalıyız? Çoğunlukla tüm web uygulamaları <a href="http://www.serpito.com/php-filtreler/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>PHP filtresi , kullanıcı girdileri gibi güvensiz kaynaklardan alınan verileri filtreleme işlemini gerçekleştirir.</p>
<h4>PHP Filtre Nedir?</h4>
<p>Güven vermeyen kaynaklardan  alınan verileri filtreleme yapmamız gerekir.</p>
<p>Verileri doğrulama, test etme ve filtreleme tüm web uygulamalar için önemli bir aşamadır.</p>
<p>Php filter özelliği , kolay kullanıma sahip bir şekilde diyazn edilmiştir.</p>
<hr align="center" noshade="noshade" size="1" width="100%" />
<h4>Neden Filtre Yapmalıyız?</h4>
<p>Çoğunlukla tüm web uygulamaları harici veri girişleri üzerine  işlem yapmaktadır.Genellikle kullanıcıdan yada başka bir uygulamadan alınan veriler kullanılır. Filtreleme yaparak projelerimize güvenilir ve doğru bir veri giriği sağlarız.</p>
<p><strong>Dışardan alınan tüm verileri filtreleme yapmanız tavsiyemdir!! </strong><span id="more-89"></span></p>
<p>İnput filtreleme web uygulamaları için en önemli güvenlik aşamasıdır.</p>
<p><strong>Harici Veri Ne Demektir?</strong></p>
<ul>
<li>Formdan alınan veriler</li>
<li>Çerezler(Cookies)</li>
<li>Web Servis Verileri</li>
<li>Sunucu Değişkenleri</li>
<li>Veritabanı sorgu sonuçları</li>
</ul>
<hr align="center" noshade="noshade" size="1" width="100%" />
<h4><strong>Fonksiyon ve Filtreler</strong></h4>
<p>Bir değişkeni filtrelemek için aşağıdaki filter fonksiyonlar kullanılır:</p>
<ul>
<li>filter_var() &#8211; özel bir filter ile bir değişkeni filtreler</li>
<li>filter_var_array() &#8211; Birden fazla veriyi , aynı veya farklı filtreler      ile filtreler</li>
<li>filter_input &#8211; Bir girilen veriyi alır ve filtreler</li>
<li>filter_input_array &#8211; Birden fazla girdileri alır , aynı veya farklı      filtreler ile filtreler</li>
</ul>
<p>Aşağıdaki örnekte, integer sayıyı filter_var() fonksiyonu ile filtreliyoruz,bakalım;</p>
<blockquote><p>&lt;?php</p>
<p>$int = 123;</p>
<p>if(!filter_var($int, FILTER_VALIDATE_INT))</p>
<p>{</p>
<p>echo(&#8220;integer   geçersiz&#8221;);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo(&#8220;integer geçerli&#8221;);</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p>Yukardaki kod, &#8220;FILTER_VALIDATE_INT&#8221;  özelliğini kullanarak değişkeni filtreler.İnteger sayının geçerli olduğunu belirttikten sonra , ekrana &#8220;integer geçerli&#8221; yazdırır.</p>
<p>Eğer integer değişkenimiz yerine &#8220;123abn&#8221; gibi bir değer deneseydik, ekran çıktımız, &#8220;integer geçersiz&#8221; yazılacaktı.</p>
<hr align="center" noshade="noshade" size="1" width="100%" />
<h4><strong>Doğrulama ve Sterilize Etme </strong></h4>
<p>İki filter türü vardır;</p>
<p><strong>Filtre Doğrulama:</strong></p>
<ul>
<li>Kullanıcı girdilerini  doğrulamak için kullanılır</li>
<li>Katı format format kuralları (URL yada E-Mail değerleri gibi)</li>
<li>Başarı halinda beklenen durum döner, aksi takdirde FALSE değeri      döndürür.</li>
</ul>
<p><strong>Filtreleri Siterilize Etme</strong></p>
<ul>
<li>string içinde izin verilen veya izinsiz karakterleri ayırır</li>
<li>Veri format kuralı yok</li>
<li>Herzaman string döndürür</li>
</ul>
<hr />
<h4>Seçenekler ve Flag<strong> </strong></h4>
<ul>
<li>Seçenekler ve Flaglar filtrelere eklenerek özelleştirir.</li>
<li>Farkli filtreler farklı seçeneklere ve flaglara sahiptir.</li>
</ul>
<p>Aşağıdaki örneğimizde , bir integer(tamsayı) değerini fiter_var() fonksiyonu min_range  ve max_range secenekleri ile doğrulayalım:</p>
<blockquote><p>&lt;?php$var=300;</p>
<p>$int_options = array(</p>
<p>&#8220;options&#8221;=&gt;array</p>
<p>(</p>
<p>&#8220;min_range&#8221;=&gt;0,</p>
<p>&#8220;max_range&#8221;=&gt;256</p>
<p>)</p>
<p>);</p>
<p>if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))</p>
<p>{</p>
<p>echo(&#8220;Integer   geçersiz&#8221;);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo(&#8220;Integer geçerli&#8221;);</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p>Yukarda tasarladığımız kod örneğinde  options dizisi ile ilişkili seçenekleri kullandık.Seçenek değil de sadece bir flag kullanıyor ise dizi kullanmamıza gerek yoktur.</p>
<p>integer değeri &#8220;300&#8243; , bu değer verilen özelliklere(min_range , max_range) uymadığı için &#8220;integer geçersiz&#8221; çıktısını göreceğiz.</p>
<hr />
<h4>Input(girdi) Doğrulama</h4>
<p>Tasarladığımız formdan alına verileri doğrulayalım.Öncelikle girilen verilerde aradığımız veri özelliklerini arayıp ve  onaylamamız gerekir.</p>
<p>Daha sonra , verileri  filter_input() fonksiyonu ile filtreleyim.</p>
<p>Aşağıdaki örnekte, input verisi olan &#8220;mail&#8221; stringi PHP dosyasına gönderiliyor; şöyleki:</p>
<blockquote><p>&lt;?phpif(!filter_has_var(INPUT_GET, &#8220;email&#8221;))</p>
<p>{</p>
<p>echo(&#8220;Girilen veri türü   yanlış&#8221;);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>if (!filter_input(INPUT_GET,   &#8220;email&#8221;, FILTER_VALIDATE_EMAIL))</p>
<p>{</p>
<p>echo &#8220;E-Mail geçersiz&#8221;;</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo &#8220;E-Mail geçerli&#8221;;</p>
<p>}</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p><strong>Örneği Açıklayalım;</strong></p>
<blockquote><p>Örneğimizde bir &#8220;email&#8221; değişkenini GET metodu kullanarak gönderiyor.</p>
<ul>
<li>&#8220;email&#8221; girdi verisi  &#8220;GET&#8221; metoduyla tanımlanan verü türüne uyuyor mu kontrol ediyor.</li>
<li>İnput değişkeni uyuyorsa, email adresinin doğruluğunu kontrol ediyor.</li>
</ul>
</blockquote>
<hr align="center" noshade="noshade" size="1" width="100%" />
<h4>Input Sterilize<strong> </strong></h4>
<p>Formdan gelen URL adresini sadeleştirelim.</p>
<p>Önce aranılan verinin bulunduğunu kontrol ediyoruz;</p>
<p>Girilen veriyi filter_input() fonksiyonu ile sterilize ediyoruz.</p>
<p>Örneğimizde , &#8220;url&#8221; verisi PHP sayfasına gönderiliyor:</p>
<blockquote><p>&lt;?phpif(!filter_has_var(INPUT_POST, &#8220;url&#8221;))</p>
<p>{</p>
<p>echo(&#8220;Girilen veri türü   yanlış&#8221;);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$url = filter_input(INPUT_POST,</p>
<p>&#8220;url&#8221;, FILTER_SANITIZE_URL);</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p><strong>Örneği Açıklayalım;</strong></p>
<blockquote><p>&#8220;POST&#8221; metoduyla , alınan verimizi sayfaya gönderiyoruz.:</p>
<ul>
<li>girdi verisinin varlığını kontrol ediyoruz.</li>
<li>veri bulundu ise,URL değerinin siterilize ediyoruz, URL standartlarına uymayan karakterleri temizleyerek URL değerini gönderiyoruz.</li>
</ul>
</blockquote>
<p>&#8220;http://www.serpito.com/&#8221; şeklinde bir  &#8220;url&#8221; değeri sterilize edildikten sonra , şu şekilde kayıt edilir:</p>
<blockquote><p>http://www.serpito.com/</p></blockquote>
<hr />
<h4>Çok Girdileri Filtreleme</h4>
<p>Formlar çoğunlukla birden fazla veri alan input alanları kullanılır. filter_var() veya filter_input() fonksiyonlarını her input alanında tekrar tekrar kullanmanın anlamı yoktur.</p>
<p>Bu örneğimizde filter_input_array() fonksiyonu ile  çok input değerlerinini filtreleyelim:</p>
<blockquote><p>&lt;?php$filters = array</p>
<p>(</p>
<p>&#8220;name&#8221; =&gt; array</p>
<p>(</p>
<p>&#8220;filter&#8221;=&gt;FILTER_SANITIZE_STRING</p>
<p>),</p>
<p>&#8220;age&#8221; =&gt; array</p>
<p>(</p>
<p>&#8220;filter&#8221;=&gt;FILTER_VALIDATE_INT,</p>
<p>&#8220;options&#8221;=&gt;array</p>
<p>(</p>
<p>&#8220;min_range&#8221;=&gt;1,</p>
<p>&#8220;max_range&#8221;=&gt;120</p>
<p>)</p>
<p>),</p>
<p>&#8220;email&#8221;=&gt;   FILTER_VALIDATE_EMAIL,</p>
<p>);</p>
<p>$result = filter_input_array(INPUT_GET, $filters);</p>
<p>if (!$result["age"])</p>
<p>{</p>
<p>echo(&#8220;Yaş değeri 1 ve 120   arasında olmalı.&lt;br /&gt;&#8221;);</p>
<p>}</p>
<p>elseif(!$result["email"])</p>
<p>{</p>
<p>echo(&#8220;E-Mail geçersiz.&lt;br   /&gt;&#8221;);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo(&#8220;Kullanıcı girdisi   geçerli&#8221;);</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p><strong>Örneği Açıklayalım;</strong></p>
<blockquote><p>Yukarıdaki örneğimizde 3 input bölümü(name , age, email) buluyor ve bu girdiler GET metoduyla gönderiliyor;</p>
<ul>
<li> özelleştirilecek olan input değişkenleri içeren bir dizi oluşturuyoruz.</li>
<li> filter_input_array() fonksiyonu çağrılıyor,</li>
<li>&#8220;age&#8221; ve &#8220;email&#8221; değişkenleri   $result kümesinde içerikleri kontrol edilir. filter_input_array() fonksiyonu çağrılır ve filtreleme gerçekleşir.</li>
</ul>
</blockquote>
<p>filter_input_array() fonksiyonun ikinci parametresi  bir dizi veya tekil bir filter ID&#8217;e sahip olabilir.</p>
<hr align="center" noshade="noshade" size="1" width="100%" />
<h4>Filtre Geri Çağırma</h4>
<p>Programcı tarafından tanımlanan bir fonksiyonu FILTER_CALLBACK filtresi ile yeniden filtreleme yapabiliriz.</p>
<p>Şimdi kendi fonksiyonumuzu tanımlayalım ve varolan PHP fonksiyonu içinde kullanalım.</p>
<p>Aşağıdaki örneğimizde , tanımlanan fonksiyonu yeniden filtreleyerek &#8220;_&#8221; karakteri ile isimlendiriyoruz:</p>
<blockquote><p>&lt;?phpfunction convertSpace($string)</p>
<p>{</p>
<p>return str_replace(&#8220;_&#8221;, &#8221; &#8220;, $string);</p>
<p>}</p>
<p>$string = &#8220;Serpito_çok_yakışıklı_biri!&#8221;;</p>
<p>echo filter_var($string, FILTER_CALLBACK,</p>
<p>array(&#8220;options&#8221;=&gt;&#8221;convertSpace&#8221;));</p>
<p>?&gt;</p></blockquote>
<p>Kodumuzun ekran çıktısı şu şekilde olur:</p>
<blockquote><p>Serpito çok yakışıklı biri!</p></blockquote>
<p><strong>Örneğimizi Açıklayalım:</strong></p>
<blockquote><p>Örneğmiz tüm &#8220;_&#8221; karakterlerini space&#8217;e (yani boşluk)  dönüştürüyor .</p>
<ul>
<li>Dönüşüm için bir fonksiyon tasarla</li>
<li>filter_var() fonksiyonunu  FILTER_CALLBACK filtresi ile birlikte dizi işleminde kullanılıyor.</li>
</ul>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.serpito.com/php-filtreler/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PHP &#8211;  İstisna Yönetimi</title>
		<link>http://www.serpito.com/php-istisna-yonetimi/</link>
		<comments>http://www.serpito.com/php-istisna-yonetimi/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 01:24:01 +0000</pubDate>
		<dc:creator>Atilla Akoğlu</dc:creator>
				<category><![CDATA[PHP Dersleri]]></category>
		<category><![CDATA[exceptions]]></category>
		<category><![CDATA[istisnalar]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Dersler]]></category>

		<guid isPermaLink="false">http://serpito.com/php-istisna-yonetimi/</guid>
		<description><![CDATA[İstisna yönetimi , özel bir hata oluştuğu zaman kodun akışını değiştirebilir. Exception(İstisna) Nedir? PHP 5 ile birlikte hataları kontrol etmek için nesneye yönelik bir yaklaşım ortaya çıktı. Hata ayıklama durumları hata oluştuğu anda işletilecek kodun normal akışını değiştirerek yönetilmesini sağlamaktadır.Buna ististan yönetimi adı verilir. İstisna tetiklendiği anda şu aşamalar gerçekleşir; Varolan kod durumu kaydedilir. Kod <a href="http://www.serpito.com/php-istisna-yonetimi/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>İstisna yönetimi , özel bir hata oluştuğu zaman kodun akışını değiştirebilir.</p>
<h4><strong>  </strong><strong>Exception(İstisna) Nedir?</strong></h4>
<p>PHP 5  ile birlikte hataları kontrol etmek için nesneye yönelik bir yaklaşım ortaya çıktı.</p>
<p>Hata ayıklama durumları   hata oluştuğu anda işletilecek kodun  normal akışını değiştirerek yönetilmesini sağlamaktadır.Buna ististan yönetimi adı verilir.<br />
İstisna tetiklendiği anda şu aşamalar gerçekleşir;</p>
<ul>
<li>Varolan kod durumu kaydedilir.</li>
<li>Kod işletimi önceden tanımladan hata ayıklama bloğuna atlayacaktır.</li>
<li>Duruma göre , hata ayıklama sonunda , ya en son işletilen kod bloğuna      yeniden dönerek devam edecek, yada hata ayıklama bloğunda belirtilen      aşamadan devam edecektir.</li>
</ul>
<p>Şimdi farklı hata ayıklama yöntemlerini inceleyelim:</p>
<ul>
<li>Basit istisna kullanımı</li>
<li>Özel istisna ayıklayıcı tasarlamak</li>
<li>Çoklu istisnalar</li>
<li>Tekrarlı istisna göndermek</li>
<li>Yüksek seviye istisna ayıklayıcı ayarlamak</li>
</ul>
<p><strong>Note: </strong>İstisnalar yanlızca hatalı oluşması durumunda kullanılmalıdır.Ayrıca kodun herhangi bir noktasına atlaması için kullanılmamalıdır.</p>
<hr />
<h4><strong>Basit Exception(İstisna) </strong></h4>
<p>Bir istisna fırlatıldığında , devamındaki kod çalışmaya devam etmez, PHP gönderilen parçada &#8220;catch&#8221; ifadesi arar. &#8220;catch&#8221; ifadesi throw edilen istisnayı yakalar..</p>
<p><span id="more-87"></span><br />
Eğer istisna hedefte yakalanamazsa , fatal error(ölümcül hata) oluşur.Hata notu &#8220;Uncaught Exception&#8221; &#8211; &#8220;Yakalanamayan istisna&#8221; olarak görülür.</p>
<p>Şimdi yakalanmayan bir istisna tasarlayalım;</p>
<blockquote><p>&lt;?php</p>
<p>//istisna fonksiyonu tanımlayalım</p>
<p>function checkNum($number)</p>
<p>{</p>
<p>if($number&gt;1)</p>
<p>{</p>
<p>throw new Exception(&#8220;Değer 1 veya birden az olmalı&#8221;);</p>
<p>}</p>
<p>return true;</p>
<p>}</p>
<p>//istisnayı tetikle</p>
<p>checkNum(2);</p>
<p>?&gt;</p></blockquote>
<p>Yukarıdaki kodu çalıştırırsak , aşağıdaki gibi bir hata ile karşılaşırız:</p>
<blockquote><p><strong>Fatal error</strong>: Uncaught exception &#8216;Exception&#8217;</p>
<p>with message &#8216; Değer 1 veya birden az olmalı &#8216; in C:\webfolder\test.php:6</p>
<p>Stack trace: #0 C:\webfolder\test.php(12):</p>
<p>checkNum(28) #1 {main} thrown in <strong>C:\webfolder\test.php</strong> on   line <strong>6</strong></p></blockquote>
<h4><strong>Throw ve catch İfadeleri</strong></h4>
<p>Yukarıdaki gibi hatalarla uğraşmamak için ,uygun bir  istisna yönetimi tasarlamamız gerekir.</p>
<p>Uygun bir istisna  aşağıdaki ifadeleri içerir:</p>
<ol>
<li> Try &#8211; istisna tanımlanan fonksiyon &#8220;try&#8221; bloğunda bulunur.İstisna gönderilmezse,kod çalışmaya devam etmez.İstisna tetiklenirse , try bloğundan fırlatılır ve adrese yönelir.</li>
<li> Throw -İstisnanın tetiklediği bloktur.Her throw ifadesi en az bir catch ifadesine sahip olmalıdır.</li>
<li> Catch  &#8211; &#8220;catch&#8221; bloğu istisnanın yakalandığı ve tetiklendiği şekilde çalıştırıldığı bloktur.</li>
</ol>
<p>Bir İstisna yi geçerli bir kod ile tetikleyelim:</p>
<blockquote><p>&lt;?php</p>
<p>//istisna fonksiyonu oluşturalım</p>
<p>function checkNum($number)</p>
<p>{</p>
<p>if($number&gt;1)</p>
<p>{</p>
<p>throw new Exception(&#8220;Değer 1 veya daha az olmalıdır.&#8221;);</p>
<p>}</p>
<p>return true;</p>
<p>}</p>
<p>// &#8220;try&#8221;  bloğunda istisnayı tetikleyelim</p>
<p>try</p>
<p>{</p>
<p>checkNum(2);</p>
<p>//istisna fırlatıldığında,bu kod   çalışmayacaktır.</p>
<p>echo ‘Bunu görüyorsanız,değer 1   den kucuk demektir&#8217;;</p>
<p>}</p>
<p>//İstisna yakala</p>
<p>catch(Exception $e)</p>
<p>{</p>
<p>echo &#8216;Message: &#8216;   .$e-&gt;getMessage();</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p>Kod aşağıdaki gibi bir hata mesajı yayınlayacaktır:</p>
<blockquote><p>Message: Değer 1 veya daha az olmalıdır</p></blockquote>
<p><strong>Örnek Açıklaması:</strong></p>
<p>Yukardaki kod, istisya fırlatır ve yakalar;</p>
<ol>
<li> checkNum() fonksiyonu yaratıldı. Fonksiyon değerin 1 den büyük yada küçük olduğunu denetler.Ve istisna fırlatılır.</li>
<li> checkNum() fonksiyonu  try bloğunda çağırıldı.</li>
<li> checkNum() daki istisna  fırlatıldı</li>
<li> &#8220;catch&#8221; bloğu istisnayı ele alır ve  istisna bilgilerini içeren $e nesnesini yaratır.</li>
<li> İstisna nesnesi tarafından getMessage() fonksiyonu ile hata mesajı yayınlanır.</li>
</ol>
<hr />
<h4><strong>Custom Exception(İstisna) Sınıfları Oluşturmak</strong></h4>
<p>Özel istisna sınıfları oluşturmak son derece basittir. PHP de oluşacak hataları yönetmek için fonksiyonlar içeren sınıf oluşturuyoruz.</p>
<p>Özel istista sınıfımız  PHP istisna yönetim sınıfından kalıtılır,ve tüm özelliklerini kullanabilir.Ayrıca kendimize göre de fonksiyon ekleyebiliriz.</p>
<p>İstisna sınıfı oluşturalım:</p>
<blockquote><p>&lt;?php</p>
<p>class customException extends Exception</p>
<p>{</p>
<p>public function errorMessage()</p>
<p>{</p>
<p>//Hata mesajı</p>
<p>$errorMsg = &#8216;Error on line &#8216;.$this-&gt;getLine().&#8217; in   &#8216;.$this-&gt;getFile()</p>
<p>.&#8217;: &lt;b&gt;&#8217;.$this-&gt;getMessage().&#8217;&lt;/b&gt;geçersiz e-mail   adresi&#8217;;</p>
<p>return $errorMsg;</p>
<p>}</p>
<p>}</p>
<p>$email = &#8220;birisi@kodadiweb.com&#8221;;</p>
<p>try</p>
<p>{</p>
<p>//denetle</p>
<p>if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)</p>
<p>{</p>
<p>//email adresi geçersiz ise istisna fırlat</p>
<p>throw new customException($email);</p>
<p>}</p>
<p>}</p>
<p>catch (customException $e)</p>
<p>{</p>
<p>//özel mesajı yayınla</p>
<p>echo $e-&gt;errorMessage();</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p><strong>Örneğimizi Açıklayalım;</strong></p>
<p>Yukardaki kod örneğimiz  özel bir istisna sınıfı ile , istista fırlatır ve yakalar.</p>
<ol>
<li> customException() sınıfı  PHP öntanımlı &#8220;Exception&#8221;  sınıfından kalıtılmış bir istisna sınıfıdır.</li>
<li>errorMessage() function oluşturulur.e-mail adresi yanlış ise bir hata mesajı döndürür.</li>
<li>$email string yapısında tanımlanan  geçerli bir email adresini tutar.</li>
<li>&#8220;try&#8221; blogu çalıştırılı ve  e-mail adresi geçersiz ise istisna gönderilir.</li>
<li> &#8220;catch&#8221; bloğu istista yöntemini yakalar ve hata mesajını yayınlar.</li>
</ol>
<hr />
<h4><strong>Çoklu İstisnalar</strong></h4>
<p>Birden fazla istisnaları yönetmek ve uygulamak PHP script I için mümkündür.</p>
<p>Birkaç if..else  bloğu ve switch kullanarak çoklu istisnaları uygulayabiliriz.Bu istisnalar, farklı istisna sınıflarını kullanabilir ve farklı hata mesajları yayınlayabilirler:</p>
<blockquote><p>&lt;?php</p>
<p>class customException extends Exception</p>
<p>{</p>
<p>public function errorMessage()</p>
<p>{</p>
<p>//hata mesajı</p>
<p>$errorMsg = &#8216;Error on line &#8216;.$this-&gt;getLine().&#8217; in   &#8216;.$this-&gt;getFile()</p>
<p>.&#8217;: &lt;b&gt;&#8217;.$this-&gt;getMessage().&#8217;&lt;/b&gt; geçersiz e-mail   adresi&#8217;;</p>
<p>return $errorMsg;</p>
<p>}</p>
<p>}</p>
<p>$email = &#8220;birisi@kodadiweb.com&#8221;;</p>
<p>try</p>
<p>{</p>
<p>//denetle</p>
<p>if(filter_var($email,   FILTER_VALIDATE_EMAIL) === FALSE)</p>
<p>{</p>
<p>// email adresi yanlış ise istisna gönder</p>
<p>throw new customException($email);</p>
<p>}</p>
<p>// &#8220;birisi&#8221; ni mail   adresinde arar</p>
<p>if(strpos($email,   &#8220;örnek&#8221;) !== FALSE)</p>
<p>{</p>
<p>throw new Exception(&#8220;$email örnek bir mail adresidir&#8221;);</p>
<p>}</p>
<p>}</p>
<p>catch (customException $e)</p>
<p>{</p>
<p>echo $e-&gt;errorMessage();</p>
<p>}</p>
<p>catch(Exception $e)</p>
<p>{</p>
<p>echo $e-&gt;getMessage();</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p><strong>Örneği Açıklayalım:</strong></p>
<blockquote><p>Yukardaki kod iki durumda ve iki istisna fırlatma işlemini yorumlar ve denetler;</p>
<p>customException() sınıfı PHP Exception sınıfndan kalıtılır.Kalıtılan Exception sınıfın bütün methodlarını ve özelliklerini kullanabilir.(Class Konusunda daha detaylı işleyeceğiz)</p>
<p>errorMessage() oluşturuldu .Verilen email adresinin yanlış olması durumunda bu fonksiyon hata mesaını yayınlar.<br />
$email değişkeni    String tabanlıdır ve &#8220;birisi&#8221; stringini tutar.<br />
&#8220;try&#8221; bloğu çalıştırılır ve  ilk durumda istisna fırlatılmaz.<br />
İkinci koşulda  &#8220;birisi&#8221; Stringini gördüğü anda istisnayı tetikler.<br />
&#8220;catch&#8221; bloğu istisnayı yakalar ve hata mesajını doğrular.customException yakalanmaz ise , sadece basit istisna yakalanır ve catch bloğunda tutulur.</p></blockquote>
<hr />
<h4><strong>Exceptions(İstisna) nın Tekrar Fırlatılması </strong></h4>
<p>Bazı durumlarda , bir istisna fırlatıldığında ,normal olan yoldan farklı bir şekilde istisnayı tutmanı gerekebilir.  Böyle durumlarda bir &#8220;catch&#8221; bloğuyla ikinci tekrarda  istisna fırlatabilirsiniz .</p>
<p>Script sistem hatalarını  kullanıcıdan saklayabilir.Bu hatalar kullanıcıyı ilgilendirmez ama programcı için çok önemlidir.Bu durumu kolaylaştırmak için bir kullanıcıya tekrar istisna fırlatarak samimi bir mesajla kullanıcıya gösterebilirsiniz:</p>
<blockquote><p>&lt;?php</p>
<p>class customException extends Exception</p>
<p>{</p>
<p>public function errorMessage()</p>
<p>{</p>
<p>//hata mesajı</p>
<p>$errorMsg = $this-&gt;getMessage().&#8217; is not a valid E-Mail   address.&#8217;;</p>
<p>return $errorMsg;</p>
<p>}</p>
<p>}</p>
<p>$email = &#8220;birisi@kodadiweb.com&#8221;;</p>
<p>try</p>
<p>{</p>
<p>try</p>
<p>{</p>
<p>// &#8220;birisi&#8221; ni mail adresinde denetle</p>
<p>if(strpos($email, &#8220;example&#8221;) !== FALSE)</p>
<p>{</p>
<p>//mail geçersiz ise istisna fırlat</p>
<p>throw new Exception($email);</p>
<p>}</p>
<p>}</p>
<p>catch(Exception $e)</p>
<p>{</p>
<p>//tekrar fırlat</p>
<p>throw new customException($email);</p>
<p>}</p>
<p>}</p>
<p>catch (customException $e)</p>
<p>{</p>
<p>//özel mesajı yayınla</p>
<p>echo $e-&gt;errorMessage();</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p><strong>Örneği Açıklayalım:</strong></p>
<blockquote><p>Yukardaki kod email adresinin &#8220;birisi &#8221; stringini içerip içermediğini denetler ,içeriyor ise istisna tekrar gönderilir:</p>
<ol>
<li> customException() sınıfı PHP Exception sınıfndan kalıtılır.Kalıtılan Exception sınıfın bütün methodlarını ve özelliklerini kullanabilir</li>
<li>errorMessage() oluşturuldu .Verilen email adresinin yanlış olması durumunda bu fonksiyon hata mesaını yayınlar.</li>
<li> $email değişkeni    String tabanlıdır ve &#8220;birisi&#8221; stringini tutar.</li>
<li> &#8220;try&#8221; bloğu içindeki birbaşka try bloğu koşulu denetler ve tekrar istisna gönderir</li>
<li>E-mail içeriğinde  &#8220;birisi&#8221; stringi bulunduğunda istisna tetiklenir</li>
<li> &#8220;catch&#8221; bloğuistisnayı yakalar ve  tekrar bir &#8220;customException&#8221;  gönderir</li>
<li> &#8220;customException&#8221; yakalanır ve hata mesajı yayınlar</li>
</ol>
</blockquote>
<blockquote><p> İstisna yakalanamazsa , try bloğunun dışına çıkar ve üst blokta aramaya başlar.</p></blockquote>
<hr align="center" noshade="noshade" size="1" width="100%" />
<h4><strong>Üst Seviye İstisna Yakalayıcı Tasarlamak</strong></h4>
<p>set_error_handler()  fonksiyonu ile  kullanıcı tanımlı fonksiyonları kullanarak yakalanamayan istisnaları yakalar.</p>
<blockquote><p>&lt;?php</p>
<p>function myException($exception)</p>
<p>{</p>
<p>echo &#8220;&lt;b&gt;Exception:&lt;/b&gt; &#8221; ,   $exception-&gt;getMessage();</p>
<p>}</p>
<p>set_exception_handler(&#8216;myException&#8217;);</p>
<p>throw new Exception(&#8216;Yakalanamayan İstisna oluştu);</p>
<p>?&gt;</p></blockquote>
<p>Yukarıdaki kodun çıktısı şu şekilde görülür:</p>
<blockquote><p> <strong>Exception:</strong> Yakalanamayan İstisna oluştu</p></blockquote>
<p><strong>İstisna Kuralları</strong></p>
<ul>
<li> İstisnalar açısından yakalanabilirliği kolaylaştırmak için try      bloğunun içinde olabilir.</li>
<li>Her try yada &#8220;throw&#8221; bloğu en az bir adet catch bloğuyla      ilişkilendirilmeli</li>
<li>Birden fazla catch bloğu farklı istisna sınıflarını yakalamak için      kullanılabilir.</li>
<li>İstisnalar   try bloğunun içinde bulunan catch bloğuna      fırlatılabilir.</li>
</ul>
<p>Basit bir kural: Bişey fırlatıyorsanız , onu yakalamalısınız.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serpito.com/php-istisna-yonetimi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP &#8211;  Error Handling</title>
		<link>http://www.serpito.com/php-error-handling/</link>
		<comments>http://www.serpito.com/php-error-handling/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 01:10:47 +0000</pubDate>
		<dc:creator>Atilla Akoğlu</dc:creator>
				<category><![CDATA[PHP Dersleri]]></category>
		<category><![CDATA[error handling]]></category>
		<category><![CDATA[Hata Ayıklama]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Dersler]]></category>

		<guid isPermaLink="false">http://serpito.com/php-error-handling/</guid>
		<description><![CDATA[PHP dilinde hata ayıklama yöntemleri gayet basit ve güvenlidir.&#8221;php.ini&#8221; dosyasındaki error handling ayarını &#8220;1&#8243; değerine dönüştürerek , proje dosyalarınızda bulunan hataları tarayıcınızdan izleyebilme imkanına sahipsiniz.Tarayınıcı bir nevi derleyici olarak kullanabilir ve hatalarını en kısa sürede düzenleme imkanına sahip olursunuz. PHP Hata Ayıklama Kod yazarken ve uygulama geliştirirken ,hataları takip ve düzenleme işlemleri çok önemlidir.Kodlarınız hatalı <a href="http://www.serpito.com/php-error-handling/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>PHP dilinde hata ayıklama yöntemleri gayet basit ve güvenlidir.&#8221;php.ini&#8221; dosyasındaki error handling ayarını &#8220;1&#8243; değerine dönüştürerek , proje dosyalarınızda bulunan hataları tarayıcınızdan izleyebilme imkanına sahipsiniz.Tarayınıcı bir nevi derleyici olarak kullanabilir ve hatalarını en kısa sürede düzenleme imkanına sahip olursunuz.</p>
<p><strong>  PHP Hata Ayıklama</strong></p>
<p>Kod yazarken ve uygulama geliştirirken ,hataları takip ve düzenleme işlemleri çok önemlidir.Kodlarınız hatalı çalışıyor ise ,profesyonel anlamda size büyük bir kayıp olarak dönecektir,,ayrıca projenizin güvenliği çok büyük zarara uğrayacaktır.</p>
<p>Bu dersimizde PHP de hata ayıklama ve düzenleme yöntemleri hakkında yapılması  gereken işlemleri göreceğiz.</p>
<p>Şimdi farklı hata ayıklama metodları görelim:</p>
<ul>
<li> Basit  &#8220;die()&#8221; koşulu</li>
<li>Özel hata ve hata tetikleyiciler</li>
<li> Hata gösterme</li>
</ul>
<hr /><strong><br />
Basit Hata Ayıklama: die() fonksiyonu kullanma</strong><br />
İlk örneğimizde ,herhangi bir text dosyasını açan bir script yazalım:  <span id="more-86"></span></p>
<blockquote><p> &lt;?php<br />
$file=fopen(&#8220;herhangibirtextdosyasi.txt&#8221;,&#8221;r&#8221;);<br />
?&gt;</p></blockquote>
<p>&#8220;herhangibirtextdosyasi.txt&#8221; dosyasi bulunamadığı takdirde  tarayıcımızda aşağıdaki  gibi bir hata görürüz:</p>
<blockquote><p><strong>Warning</strong>: fopen(herhangibirtextdosyasi.txt)   [function.fopen]: failed to open stream:No such file or directory in <strong>C:\webfolder\test.php</strong> on line <strong>2</strong></p></blockquote>
<p>Bu hatadan kurtulmak için , dosyanın varlığını kontrol etmemiz gerekiyor,aşağıdaki scriptimizi görelim:</p>
<blockquote><p>&lt;?phpif(!file_exists(&#8220;herhangibirtextdosyasi.txt&#8221;))</p>
<p>{</p>
<p>die(&#8220;Dosya bulunamadı&#8221;);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$file=fopen(&#8220;herhangibirtextdosyasi.txt&#8221;,&#8221;r&#8221;);</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p>Dosya bulunamadığı takdirde aşağıdaki gibi bir uyarı alınacaktır;</p>
<blockquote><p>Dosya Bulunamadı</p></blockquote>
<p>Bu örneğimizdeki kodun güvenilirliği  ,önceki örneğimizden çok daha fazladır.Çünkü yapılacak işlemde hata basit bir hata ayıklama yöntemiyle beklenmeyen hatalardan kurtulduk.</p>
<p>Her nekadar basit yöntemimiz ile geçerlilik kazandırdıysak da,her zaman aynı şekilde hatalardan kurtuluşu sağlanamaz.Bunun için alternatif olacak özel bir hata ayıklama scriptimizi yazalım:</p>
<hr />
<strong>Özel Hata Ayıklama</strong>Özel bir  hata ayıklama metodumuzu çok basitce tasarlayabiliriz. <strong>Öncelikle fonksiyonun yapısını incelemekte fayda var;</strong></p>
<blockquote><p>error_function(error_level,error_message,error_file,error_line,error_context)</p></blockquote>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" width="20%"><strong>Parameter</strong></td>
<td valign="top" width="80%"><strong>Description</strong></td>
</tr>
<tr>
<td valign="top">error_level</td>
<td valign="top">Gerekli. Kullanıcı tanımlı hataları   özelleştirir.Değer olmalıdır. Must be a value number.</td>
</tr>
<tr>
<td valign="top">error_message</td>
<td valign="top">Gerekli. Kullanıcı tanımlı hata mesajını belirler</td>
</tr>
<tr>
<td valign="top">error_file</td>
<td valign="top">Gerekli.Hata oluşan dosyayı belirtir.</td>
</tr>
<tr>
<td valign="top">error_line</td>
<td valign="top">Opsiyonel. Hatalı kod satırını işaret eder.</td>
</tr>
<tr>
<td valign="top">error_context</td>
<td valign="top">Opsiyonel.Hatalı kod içeriğini belirler ve parçayı   gösterir.</td>
</tr>
</table>
<p><strong>Hata Rapor Aşamaları</strong></p>
<p>Kullanıcının tanımlarıyla belirli hatalar istenilen şekilde gösterilebilir ve isimlendirilebilir.</p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="7%"><strong>Değer</strong></td>
<td width="30%"><strong>Sabit</strong></td>
<td width="61%"><strong>Tanımı</strong></td>
</tr>
<tr>
<td valign="top">2</td>
<td valign="top">E_WARNING</td>
<td valign="top">Ölümcül hata değil. run-time hatası denir.</td>
</tr>
<tr>
<td valign="top">8</td>
<td valign="top">E_NOTICE</td>
<td valign="top">Run-time notları. Script normal olarak çalışır ,hata   olşturabilecek noktaları gösterir.</td>
</tr>
<tr>
<td valign="top">256</td>
<td valign="top">E_USER_ERROR</td>
<td valign="top">Kullanıcı sebebli ölümcül hata. E_ERROR a benzer.   trigger_error() yapılandırılmasıyla oluşur.</td>
</tr>
<tr>
<td valign="top">512</td>
<td valign="top">E_USER_WARNING</td>
<td valign="top">Ölümcül hata değil. E_WARNING e benzer.   trigger_error() yapılandırılmasıyla oluşur.</td>
</tr>
<tr>
<td valign="top">1024</td>
<td valign="top">E_USER_NOTICE</td>
<td valign="top">E_NOTICE e benzer. trigger_error()   yapılandırılmasıyla oluşan notlardır.</td>
</tr>
<tr>
<td valign="top">4096</td>
<td valign="top">E_RECOVERABLE_ERROR</td>
<td valign="top">Yakalanabilir ölümcül hatadır. E_ERROR a benzer,   kullanıcının tanımladığı ayıklamalar ile engellenebilir.</td>
</tr>
<tr>
<td valign="top">8191</td>
<td valign="top">E_ALL</td>
<td valign="top">Bütün hata ve uyarıları gösterir.</td>
</tr>
</table>
<p>Bir fonksiyon tanımlayarak hata ayıklamamızı gerçekleştirelim;</p>
<blockquote><p>function customError($errno, $errstr){</p>
<p>echo &#8220;&lt;b&gt;Hata:&lt;/b&gt; [$errno] $errstr&lt;br   /&gt;&#8221;;</p>
<p>echo &#8220;Script sonu&#8221;;</p>
<p>die();</p>
<p>}</p></blockquote>
<p>Yukardaki kod, basit bir hata ayıklama fonksiyonudur.Tetiklendiği anda, hata seviyesini ve hata mesajını yakalar,  ve tarayıcıya yayınlatır.</p>
<p>Hata ayıklamayı gerçekleştirdik,, şimdi işe hata ayıklamanın ne zaman tetikleneceğini belirlemek gerekiyor;</p>
<hr /><strong>Hata Ayıklayıcı Yapılandırmak</strong>Default hata ayıklayıcısı yapısını inceledik. Şimdi ise kodu çalışma zamanının herhangi bir anında hata ayıklamayı tetiklenecek şekilde yeniden düzenleyelim;Hata ayıklamayı ,sadece belirl hatalarda tetiklenmesini gerçekleştirebiliriz, fakat bu örneğimiz bütün tanımlanmış hataları gösteren bir script yazacağız.</p>
<blockquote><p>set_error_handler(&#8220;customError&#8221;);</p></blockquote>
<p><strong>Örnek</strong></p>
<p>Örneğimizi inceleyim;</p>
<blockquote><p>&lt;?php//hata ayıklayıcı fonksiyon</p>
<p>function customError($errno, $errstr)</p>
<p>{</p>
<p>echo &#8220;&lt;b&gt;Hata:&lt;/b&gt; [$errno] $errstr&#8221;;</p>
<p>}</p>
<p>//Hata ayıklayıcıyı yapılandır</p>
<p>set_error_handler(&#8220;customError&#8221;);</p>
<p>//hatayı tetikle</p>
<p>echo($test);</p>
<p>?&gt;</p></blockquote>
<p>Kodun çıktısı aşağıdaki gibi olacaktır.</p>
<blockquote><p><strong>Custom error:</strong> [8] Undefined variable: test</p></blockquote>
<hr /><strong>Hatayı tetikleme</strong>Bir script içinde kullanıcı girdileri olan bölümlerinde hata tetikleme çok gerekli olacaktır.PHP dilinde , bu işlemi trigger_error() fonksiyonu ile gerçekleştirebiliriz.<strong>Örnek</strong>Bu örneğimizde  &#8220;test&#8221; değişkeninin değeri 1 ve altında bir değerde  olmazsa hata oluşacaktır; Görelim;</p>
<blockquote><p>&lt;?php$test=2;</p>
<p>if ($test&gt;1)</p>
<p>{</p>
<p>trigger_error(&#8220;Değer 1 veya daha az olmalıdır&#8221;);</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p>Kodun çıktısı şu şekilde olacaktır.</p>
<blockquote><p><strong>Notice</strong>: Değer 1 veya daha az olmalıdırin <strong>C:\webfolder\test.php</strong> on line <strong>6</strong></p></blockquote>
<p>Hata script içerisinde istenilen herhangi bir yerde tetiklenebilir, ve ikinci bir parametre eklenerek tetikleme işlemi özelleştirilebilir;</p>
<p>Muhtemel Hata Türleri;</p>
<ul>
<li>E_USER_ERROR &#8211; Kullanıcı tanımlı işletim hatası.      Kodun işletilmesi iptal edilir.</li>
<li>E_USER_WARNING &#8211; Kullanıcı tanımlı işletim      sırasında oluşan hata.İşletim durdurulmaz</li>
<li>E_USER_NOTICE &#8211; Default. Kullanıcı tanımlı hata      notu. Script hata oluşturabilir diye yorumlar fakat normal şekilde çalışmasına      devam eder.</li>
</ul>
<p><strong>Örnek</strong></p>
<p>Örneğimizde ,  &#8220;test&#8221; değişken değeri 1 den fazla olursa  E_USER_WARNING meydana gelir. Hata oluşması durumunda E_USER_WARNING ile tanımladığımız notu script yayınlar:</p>
<blockquote><p> &lt;?php//hata ayıklayıcı fonksiyon</p>
<p>function customError($errno, $errstr)</p>
<p>{</p>
<p>echo &#8220;&lt;b&gt;Error:&lt;/b&gt; [$errno] $errstr&lt;br   /&gt;&#8221;;</p>
<p>echo &#8220;Script sonu&#8221;;</p>
<p>die();</p>
<p>}</p>
<p>//hata ayıklayıcı fonksiyon yapılandırıldı</p>
<p>set_error_handler(&#8220;customError&#8221;,E_USER_WARNING);</p>
<p>//hatayı tetikle</p>
<p>$test=2;</p>
<p>if ($test&gt;1)</p>
<p>{</p>
<p>trigger_error(&#8220;Değer 1 veya daha   az olmalı&#8221;,E_USER_WARNING);</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p>Kodumuzun  çıktısı şu şekilde olur.</p>
<blockquote><p><strong>Error:</strong> [512] Değer 1 veya daha az olmalı .Script sonu</p></blockquote>
<p><strong>Hata Bildirimi</strong></p>
<p>Hata mesajlarını e-mail aracılığıyla rapor etmek en güvenli yoldur.</p>
<p><strong>Hata Mesajı E-mail ile göndermek</strong></p>
<p>Aşağıdaki örneğimizde tanımladığımız hata oluştuğu zaman hatanın e-mail ile bildirilmesini uyguluyoruz;</p>
<blockquote><p> &lt;?php//Hata ayıklayıcı fonksiyon</p>
<p>function customError($errno, $errstr)</p>
<p>{</p>
<p>echo &#8220;&lt;b&gt;Hata:&lt;/b&gt; [$errno] $errstr&lt;br /&gt;&#8221;;</p>
<p>echo &#8220;yöneticiye rapor   edildi&#8221;;</p>
<p>error_log(&#8220;Hata: [$errno]   $errstr&#8221;,1,</p>
<p>&#8220;birisi@kodadiweb.com&#8221;,&#8221;From:   yonetici@kodadiweb.com&#8221;);</p>
<p>}</p>
<p>//hata ayıklayıcı kur</p>
<p>set_error_handler(&#8220;customError&#8221;,E_USER_WARNING);</p>
<p>//hata tetikle</p>
<p>$test=2;</p>
<p>if ($test&gt;1)</p>
<p>{</p>
<p>trigger_error(&#8220;Değer 1 veya   daha az olmalı&#8221;,E_USER_WARNING);</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p>The output of the code above should be something like this:</p>
<blockquote><p><strong>Error:</strong> [512] Değer 1 veya daha az olmalıYöneticiye rapor edildi</p></blockquote>
<p>Aşağıdaki görünümde bir mail yönetici mail adresine gönderildi.</p>
<blockquote><p>Error: [512] Değer 1 veya daha az olmalı</p></blockquote>
<p>Bu yöntem tüm hatalar için kullanışlı olmayabilir.Kullanıcı tanımlı hatalarin bildirimi yönetilebilir ve mudahele edilebilir olduğu için uygundur.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serpito.com/php-error-handling/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP &#8211;  Güvenli Email</title>
		<link>http://www.serpito.com/php-guvenli-email/</link>
		<comments>http://www.serpito.com/php-guvenli-email/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 00:56:28 +0000</pubDate>
		<dc:creator>Atilla Akoğlu</dc:creator>
				<category><![CDATA[PHP Dersleri]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[email security]]></category>
		<category><![CDATA[Güvenli email]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Dersler]]></category>

		<guid isPermaLink="false">http://serpito.com/php-guvenli-email/</guid>
		<description><![CDATA[Önceki dersimizde güvenlik düşünülmeden hazirlanmış email gönderme formunu açıkladık.İnternet ne kadar verimli ve yararlı bir platform olsa da güvenlik düşünülmesi gereken en önemli konulardan biridir E-mail Sızmalarıİlk olarak bir önceki dersimizde uyguladığımız e-mail formunu tekrar ele alalım: &#60;html&#62; &#60;body&#62; &#60;?php if (isset($_REQUEST['email'])) { //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = <a href="http://www.serpito.com/php-guvenli-email/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Önceki dersimizde güvenlik düşünülmeden hazirlanmış email gönderme formunu açıkladık.İnternet ne kadar verimli ve yararlı bir platform olsa da güvenlik düşünülmesi gereken en önemli konulardan biridir</p>
<p><strong>E-mail Sızmaları</strong>İlk olarak bir önceki dersimizde uyguladığımız e-mail formunu tekrar ele alalım:</p>
<p><span id="more-85"></span></p>
<blockquote><p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;?php</p>
<p>if (isset($_REQUEST['email']))</p>
<p>{</p>
<p>//send email</p>
<p>$email = $_REQUEST['email'] ;</p>
<p>$subject = $_REQUEST['subject'] ;</p>
<p>$message = $_REQUEST['message'] ;</p>
<p>mail(&#8220;someone@example.com&#8221;, &#8220;Subject: $subject&#8221;,</p>
<p>$message, &#8220;From: $email&#8221; );</p>
<p>echo &#8220;Email formumuzu kullandığınız için teşekkürler&#8221;;</p>
<p>}</p>
<p>else</p>
<p>//if &#8220;email&#8221; is not filled out, display the form</p>
<p>{</p>
<p>echo &#8220;&lt;form method=&#8217;post&#8217; action=&#8217;mailform.php&#8217;&gt;</p>
<p>Email: &lt;input name=&#8217;email&#8217; type=&#8217;text&#8217; /&gt;&lt;br /&gt;</p>
<p>Konu: &lt;input name=&#8217;subject&#8217; type=&#8217;text&#8217; /&gt;&lt;br /&gt;</p>
<p>Mesaj:&lt;br /&gt;</p>
<p>&lt;textarea name=&#8217;message&#8217; rows=&#8217;15&#8242; cols=&#8217;40&#8242;&gt;</p>
<p>&lt;/textarea&gt;&lt;br /&gt;</p>
<p>&lt;input type=&#8217;submit&#8217; /&gt;</p>
<p>&lt;/form&gt;&#8221;;</p>
<p>}</p>
<p>?&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
<p>Yukarıdaki kodumuzun sorunu,yetkilendirilmemil kullanıcıların ,mail başlıklarına fazla,zaman zaman da zararlı olan verilerin girmelerini engellememekti.</p>
<p>Aşağıdaki textin e-mail input bölümüne girildiğini düşünelim,, sonuç ne olacak sizce?</p>
<blockquote><p>someone@example.com%0ACc:person2@example.com</p>
<p>%0ABcc:person3@example.com,person3@example.com,</p>
<p>anotherperson4@example.com,person5@example.com</p>
<p>%0ABTo:person6@example.com</p></blockquote>
<p>mail() fonksiyonu yukardaki texti normal bir veri olarak işleme koyacaktır. Kullanıcı submit butonuna bastığı anda  yukarda yazan tüm adreslere mail gönderilecektir!</p>
<hr align="center" size="2" width="100%" /> <strong>E-mail Sızmalarını  Durduralım</strong>E-mail sızmalarını engellemenin en iyi yolu input onaylama yapmaktır.Aşağıdaki kod örneğimiz ,önceki örneğimiz ile aynı yapıya sahiptir,fakat  bu örneğimizde input-girdi alanlarımızı onaylayıcı kodlar ekledik:</p>
<blockquote><p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;?php</p>
<p>function spamcheck($field)</p>
<p>{</p>
<p>if(eregi(&#8220;to:&#8221;,$field) || eregi(&#8220;cc:&#8221;,$field))</p>
<p>{</p>
<p>return TRUE;</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>return FALSE;</p>
<p>}</p>
<p>}</p>
<p>// &#8220;email&#8221; alanı doldurulmuş ise ,gönder</p>
<p>if (isset($_REQUEST['email']))</p>
<p>{</p>
<p>//e-mail adresinin doğruluğunu kontrol et</p>
<p>$mailcheck = spamcheck($_REQUEST['email']);</p>
<p>if ($mailcheck==TRUE)</p>
<p>{</p>
<p>echo &#8220;Geçersiz girdi&#8221;;</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>// email gönder</p>
<p>$email = $_REQUEST['email'] ;</p>
<p>$subject = $_REQUEST['subject'] ;</p>
<p>$message = $_REQUEST['message'] ;</p>
<p>mail(&#8220;someone@example.com&#8221;, &#8220;Subject: $subject&#8221;,</p>
<p>$message, &#8220;From: $email&#8221; );</p>
<p>echo &#8220;Formumuzu kullandığınız için teşekkürler&#8221;;</p>
<p>}</p>
<p>}</p>
<p>else</p>
<p>//&#8221;email&#8221; alanımız doldurulmamış ise formu yeniden yükle</p>
<p>{</p>
<p>echo &#8220;&lt;form method=&#8217;post&#8217; action=&#8217;mailform.php&#8217;&gt;</p>
<p>Email: &lt;input name=&#8217;email&#8217; type=&#8217;text&#8217; /&gt;&lt;br /&gt;</p>
<p>Konu: &lt;input name=&#8217;subject&#8217; type=&#8217;text&#8217; /&gt;&lt;br /&gt;</p>
<p>Mesaj:&lt;br /&gt;</p>
<p>&lt;textarea name=&#8217;message&#8217; rows=&#8217;15&#8242; cols=&#8217;40&#8242;&gt;</p>
<p>&lt;/textarea&gt;&lt;br /&gt;</p>
<p>&lt;input type=&#8217;submit&#8217; /&gt;</p>
<p>&lt;/form&gt;&#8221;;</p>
<p>}</p>
<p>?&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.serpito.com/php-guvenli-email/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP- Email</title>
		<link>http://www.serpito.com/php-email/</link>
		<comments>http://www.serpito.com/php-email/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 00:47:49 +0000</pubDate>
		<dc:creator>Atilla Akoğlu</dc:creator>
				<category><![CDATA[PHP Dersleri]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Email fonksiyonu]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Dersler]]></category>

		<guid isPermaLink="false">http://serpito.com/php-email/</guid>
		<description><![CDATA[PHP yazacağımız yardımıyla direct olarak e-mail gönderebilir mail() Fonksiyonu mail() fonksiyonu yazılan kod içinde e-mail gonderen bir fonksiyondur. Syntax mail(to,subject,message,headers,parameters) Parametre Tanımı to Gereklidir. E-mailin hangi adres veya adreslere ulaşacağını belirtmelisiniz subject Gereklidir. Gönderilen mesajın konusunu ele tutan değişkendir. Not: Bu satırda yeni satır &#8220;\n&#8221; karakterleri içeremez. message Gereklidir. Gönderilecek mesajı tutan değişkendir.her satır(\n) karakterleriyle <a href="http://www.serpito.com/php-email/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>PHP yazacağımız yardımıyla direct olarak e-mail gönderebilir</p>
<p><strong>mail() Fonksiyonu</strong></p>
<p>mail() fonksiyonu yazılan kod içinde e-mail gonderen bir fonksiyondur.</p>
<blockquote><p> <strong> Syntax</strong><br />
mail(to,subject,message,headers,parameters)</p></blockquote>
<blockquote>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" width="20%"><strong>Parametre</strong></td>
<td valign="top" width="80%"><strong>Tanımı</strong></td>
</tr>
<tr>
<td valign="top">to</td>
<td valign="top">Gereklidir. E-mailin hangi adres veya adreslere   ulaşacağını belirtmelisiniz</td>
</tr>
<tr>
<td valign="top">subject</td>
<td valign="top">Gereklidir. Gönderilen mesajın konusunu ele tutan   değişkendir. <strong>Not:</strong> Bu satırda yeni satır &#8220;\n&#8221; karakterleri içeremez.</td>
</tr>
<tr>
<td valign="top">message</td>
<td valign="top">Gereklidir. Gönderilecek mesajı tutan   değişkendir.her satır(\n) karakterleriyle satır atlamalıdır. Toplam mesaj   büyüklüğü 70 karakteri geçmemelidir.</td>
</tr>
<tr>
<td valign="top">headers</td>
<td valign="top">Opsiyonel.Diger ek basliklar hakkındaki bilgileri   tutan değişkendir, From, Cc, ve Bcc gibi. Ek başlıklar  CRLF (\r\n)   karakterleriyle birbirinden ayrılmalıdır.</td>
</tr>
<tr>
<td valign="top">parameters</td>
<td valign="top">Opsiyonel. Özel ve ek olarak programa parametre   gönderir.</td>
</tr>
</table>
</blockquote>
<p><strong>Not:</strong> mail fonksiyonunun çalışması ve erişilebilir olması için  sistemde yüklü olan PHP nin mail ayarı ve seçeneği izin verilmiş olmalıdır. &#8220;php.ini&#8221; ayar dosyasında gerekli düzenlemelerin yapılmış olması gerekir. <span id="more-84"></span></p>
<hr /> <strong>Basit Bir E-Mail İşlemi</strong><br />
E-mail göndermenin en basit yolu text mail yollamaktır.Aşağıdaki örnekte; öncelikle değişkenleri($to, $subject, $message, $from, $headers ) tanımlıyoruz, ardından mail göndermek için tanımlanan değişkenleri kullanıyoruz;</p>
<blockquote><p>&lt;?php</p>
<p>$to = &#8220;birisi@example.com&#8221;;</p>
<p>$subject = &#8220;Test mail&#8221;;</p>
<p>$message = &#8220;Merhaba! Bu basit bir deneme mailidir.&#8221;;</p>
<p>$from = &#8220;atilla@serpito.com&#8221;;</p>
<p>$headers = &#8220;Kimden: $from&#8221;;</p>
<p>mail($to,$subject,$message,$headers);</p>
<p>echo &#8220;Mail Gönderildi.&#8221;;</p>
<p>?&gt;</p></blockquote>
<hr /> <strong>Mail Form</strong><br />
PHP kullanarak,  web sitenize bir iletişim formu oluşturabilirsiniz. Aşağıdaki örnekten formda yazılan mail ,belirli bir e-mail adresine gönderiliyor:</p>
<blockquote><p>&lt;html&gt;&lt;body&gt;</p>
<p>&lt;?php</p>
<p>if (isset($_REQUEST['email']))</p>
<p>{</p>
<p>//email gönder</p>
<p>$email = $_REQUEST['email'] ;</p>
<p>$subject = $_REQUEST['subject'] ;</p>
<p>$message = $_REQUEST['message'] ;</p>
<p>mail( &#8220;herhangibiri@example.com&#8221;, &#8220;Subject:   $subject&#8221;,</p>
<p>$message, &#8220;From: $email&#8221; );</p>
<p>echo &#8220;Mail formumuzu kullandığınız için teşekkür   ederiz&#8221;;</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo &#8220;&lt;form method=&#8217;post&#8217; action=&#8217;mailform.php&#8217;&gt;</p>
<p>Email: &lt;input name=&#8217;email&#8217; type=&#8217;text&#8217; /&gt;&lt;br /&gt;</p>
<p>Subject: &lt;input name=&#8217;subject&#8217; type=&#8217;text&#8217; /&gt;&lt;br /&gt;</p>
<p>Message:&lt;br /&gt;</p>
<p>&lt;textarea name=&#8217;message&#8217; rows=&#8217;15&#8242; cols=&#8217;40&#8242;&gt;</p>
<p>&lt;/textarea&gt;&lt;br /&gt;</p>
<p>&lt;input type=&#8217;submit&#8217; /&gt;</p>
<p>&lt;/form&gt;&#8221;;</p>
<p>}</p>
<p>?&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
<p>Örneğimizi aşama aşama inceleyelim;</p>
<ul type="disc">
<li>İlk olarak, email girdi bölümünün dolu olduğunu      kontrol et</li>
<li>Doldurulmamış ise ( sayfa ilk defa açılıyor gibi      sıfırdan formu göster)</li>
<li> Mesaj girdileri doldurulduktan      sonra;formdan e-maili gönder</li>
<li>Girdiler dolu ise ,sayfa yeniden yüklenir,e-mail      formu yeniden sıfırlanır,ve maili gönderir</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.serpito.com/php-email/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP &#8211;  Sessions</title>
		<link>http://www.serpito.com/php-sessions/</link>
		<comments>http://www.serpito.com/php-sessions/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 00:39:12 +0000</pubDate>
		<dc:creator>Atilla Akoğlu</dc:creator>
				<category><![CDATA[PHP Dersleri]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Dersler]]></category>
		<category><![CDATA[Sessions]]></category>

		<guid isPermaLink="false">http://serpito.com/php-sessions/</guid>
		<description><![CDATA[PHP dilinde Session , bir kullanıcı için ayar değişiklikleri ve hakkındaki bilgileri , almak ve özelleştirmek için kullanılır.Session değişkenleri ,sadece tek kullanıcı hakkında veri tutar ve işlem yapabilir ayrıca bütün sayfalar dahilinde tek kullanıcı hakkında uygulama yapar. PHP Session Değişkenleri Bir proje üzerinde çalışırken , proje açarsınız, bazı gerekli değişiklikleri yaparsınız ve sonrasında uygulamayı kapatırsınız.PHP&#8217; <a href="http://www.serpito.com/php-sessions/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>PHP dilinde Session , bir kullanıcı için ayar değişiklikleri ve hakkındaki bilgileri , almak ve özelleştirmek için kullanılır.Session değişkenleri ,sadece tek kullanıcı hakkında veri tutar ve işlem yapabilir ayrıca bütün sayfalar dahilinde tek kullanıcı hakkında uygulama yapar.</p>
<p><strong>PHP Session Değişkenleri</strong></p>
<p>Bir proje üzerinde çalışırken , proje açarsınız, bazı gerekli değişiklikleri yaparsınız ve sonrasında uygulamayı kapatırsınız.PHP&#8217; de Session  da aynı bu şekildedir.Bilgisayar sizin kim oldugunuzu bilir,ve uygulamalarınıza ne zaman başladığınızı ve sona erdirdiğinizi takip eder.Ama internet üzerinde bu konuda bir sorun meydana gelir; Web sunucusu sizi ve neler yaptığınızı tanıyamaz, çünkü  HTTP adresi bu durumu sağlayamaz.</p>
<p>PHP Session , server üzerinde yapılan son uygulamayı,bilgileri(Örn; kullancı adi, alışveriş bilgileri&#8230;) yerleştirerek bu sorunu ortadan kaldırır.</p>
<p>Session bilgileri kullanıcı siteden ayrıldıktan sonra silinir.Eğer sürekli bir takip isterseniz veritabanına verileri kaydetmeniz mümkündür.   <span id="more-83"></span></p>
<p>Session her ziyaretçi için bir id(UID) numarası atar ve bütün bilgileri bu id e göre yerleştirir.UID numarası aynı zamanda çerezlere de kaydedilir veya URL&#8217; e yerleştirilir.</p>
<hr />
<strong>Session Başlatmak</strong>Session bilgilerini kaydetmeden önce, Session başlatmak gerekir.<strong>Not:</strong> session_start() fonksiyonu &lt;html&gt; tagından önce yazılmalıdır:</p>
<blockquote><p>&lt;?php session_start(); ?&gt;</p>
<p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
<p>Yukarda yazılan kod kullanıcıya ait bir Session açar  ve kullanıcı hakkındaki bilgileri önceki konumuzda anlattığımız gibi UID numaralarına göre  kaydetmeye başlar.</p>
<hr />
<strong>Session Değişkenini Yerleştirmek</strong>$_SESSION değişkenini yerleştirmenin ve düzenleme yapmanın yolu örneğimizdedir, buyrun bakalım hemen;</p>
<blockquote><p>&lt;?php session_start();</p>
<p>//session verilerini yerlestir</p>
<p>$_SESSION['views']=1;</p>
<p>?&gt;</p>
<p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;?php</p>
<p>// session verilerini duzenle</p>
<p>echo &#8220;Sayfa gösterimi=&#8221;. $_SESSION['views'];</p>
<p>?&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
<p>Çıktı:</p>
<blockquote><p>Sayfa gösterimi=1</p></blockquote>
<p>Yukardaki örnekte , basit bir sayfa gösterim sayacı tasarladık. isset() fonksiyonu ile &#8220;views&#8221; değişkeninin kaydedildiğini kontrol edelim. &#8220;views&#8221; değişkeni yapılandırıldıysa ,sayacımızı arttırabiliriz. Eğer değişkenimiz yoksa,&#8221;views&#8221;  adıyla yeniden yapılandırıyoruz ve değerini 1 olarak atıyoruz:</p>
<blockquote><p>&lt;?php</p>
<p>session_start();</p>
<p>if(isset($_SESSION['views']))</p>
<p>$_SESSION['views']=$_SESSION['views']+1;</p>
<p>else</p>
<p>$_SESSION['views']=1;</p>
<p>echo &#8220;Gösterim=&#8221;. $_SESSION['views'];</p>
<p>?&gt;</p></blockquote>
<hr /><strong>Session Yoketmek</strong>Session&#8217;ımızı yoketmek veya sona erdirmek için unset() yada session_destroy() fonksiyonlarını kullanacağız.Session dahilinde oluşan belirli bir değişkeni silmek için unset() fonksiyonunu kullanıyoruz;</p>
<blockquote><p>&lt;?php</p>
<p>unset($_SESSION['views']);</p>
<p>?&gt;</p>
<p>Session&#8217;a ait tüm verileri yoketmek için session_destroy() fonksiyonunu kullanıyoruz:</p>
<blockquote><p>&lt;?phpsession_destroy();?&gt;</p></blockquote>
<p><strong>Not:</strong> session_destroy()  tüm session u sıfırlar ,böylece kaydedilen tüm veriler yokolur.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.serpito.com/php-sessions/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PHP &#8211;  Çerezler</title>
		<link>http://www.serpito.com/php-cerezler/</link>
		<comments>http://www.serpito.com/php-cerezler/#comments</comments>
		<pubDate>Sat, 01 Mar 2008 23:38:27 +0000</pubDate>
		<dc:creator>Atilla Akoğlu</dc:creator>
				<category><![CDATA[PHP Dersleri]]></category>
		<category><![CDATA[Çerezler]]></category>
		<category><![CDATA[Cookies]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Dersler]]></category>

		<guid isPermaLink="false">http://serpito.com/php-cerezler/</guid>
		<description><![CDATA[Cookie &#8211; Türkçesi ile çerez , kullanıcıyı ayırt etmeye yarar. Cookie-Çerez Nedir? Cookie kullanıcıyı ayırt etmenin en sağlam yoludur. Cookie, sunucu makinanın kullanıcı bilgisayarına yerleştirdiği küçük boyutta dosyalardır.Tarayıcının bir sayfayı açtığı her tekrar da sunucu çerezlerini tekrar gönderir. PHP ile , çerez değerlerini hem oluşturur hem de düzenleyebilirsiniz. Cookie-Çerez Nasıl Oluşturulur? Çerez oluşturmanin işlevi setcookie()&#8217; <a href="http://www.serpito.com/php-cerezler/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Cookie &#8211; Türkçesi ile çerez , kullanıcıyı ayırt etmeye yarar.</p>
<p><strong>Cookie-Çerez Nedir? </strong></p>
<p>Cookie kullanıcıyı ayırt etmenin en sağlam yoludur. Cookie, sunucu  makinanın kullanıcı bilgisayarına yerleştirdiği küçük boyutta dosyalardır.Tarayıcının bir sayfayı açtığı her tekrar da sunucu çerezlerini tekrar gönderir. PHP ile , çerez değerlerini hem oluşturur hem de düzenleyebilirsiniz.</p>
<hr /><strong>Cookie-Çerez Nasıl Oluşturulur?</strong> Çerez oluşturmanin işlevi setcookie()&#8217; dir.</p>
<p><strong><strike>Not</strike>:</strong> setcookie() fonksiyonu  &lt;html&gt; tagından önce yazılmalıdır.</p>
<p><strong>Syntax</strong></p>
<blockquote><p>setcookie(isim, deger, suresi, dosya_yolu, domain);</p></blockquote>
<p><strong>Örnek:</strong></p>
<p>Aşağıdaki örnekte,user isminde Ali Parlak imzasıyla bir çerez oluşturacağız.Aynı zamanda çerezimize 1 saat geçerlilik süresi -ömür  verelim: <span id="more-82"></span></p>
<blockquote><p>&lt;?php</p>
<p>setcookie(&#8220;user&#8221;, &#8220;Ali Parlak&#8221;, time()+3600);</p>
<p>?&gt;</p>
<p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
<p><strong><strike>Not</strike>: </strong>Çerez değeri gönderildiğinde , otomatik olarak  URLencode edilir ,ve çerez ulaştığında yine otomatik olarak decode edilir. (URLencoding işlemini engellemek için , setrawcookie() işlevi kullanılabilir).</p>
<p><em><strong>Dipnot</strong>: Encode &#8211; Kodlamak, decode &#8211; kodu çözmek</em></p>
<hr /><strong> </strong> <strong>Çerez Değerleri Nasıl Düzenlenir?</strong>$_COOKIE değişkeni çerez değerlerini düzenleyebilir.<br />
Aşağıdaki örneğimizde , &#8220;user&#8221; adlı çerezi düzenleyerek sayfaya yazdıran bir kod yazalım;</p>
<blockquote><p>&lt;?php</p>
<p>//çerezi yazdir</p>
<p>echo $_COOKIE["user"];</p>
<p>// Butun çerezleri gormenin yolu</p>
<p>print_r($_COOKIE);</p>
<p>?&gt;</p></blockquote>
<p>Sıradaki örnekte , çerez gönderilip gönderilmediğini kontrol eden  isset() fonksiyonunu yakından inceleyelim;</p>
<blockquote><p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;?php</p>
<p>if (isset($_COOKIE["user"]))</p>
<p>echo &#8220;Hosgeldiniz &#8221; . $_COOKIE["user"] .   &#8220;!&lt;br /&gt;&#8221;;</p>
<p>else</p>
<p>echo &#8220;Hosgeldin Misafir!&lt;br /&gt;&#8221;;</p>
<p>?&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
<hr /><strong>Çerez Nasıl Silinir?</strong>Çerez silerken kesinlikle çerezin  geçerlilik süresi geçmiş olmalı.</p>
<p>Örnek silme işlemi:</p>
<blockquote><p>&lt;?php</p>
<p>// 1 saat oncesine geçerlilik süresi biten çerezler</p>
<p>setcookie(&#8220;user&#8221;, &#8220;&#8221;, time()-3600);</p>
<p>?&gt;</p></blockquote>
<hr /><strong>Ya Tarayıcı Çerezleri Desteklemiyorsa?</strong>Tarayıcı uygulamalarınız , kullanılan tarayıcı ile uyumlu değilse ,sayfalar arası bilgi aktarım formları kullanmalısınız.Form konularından hatırlayacağınız gibi kullanıcı girdileri form ile kayıt altına alınabilir. Aşağıdaki form örneğinde kullanıcı Submit butonuna bastigin anda &#8220;welcome.php&#8221; dosyasına gönderilen veriler değişkenler tarafından tutulur.</p>
<blockquote><p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;form action=&#8221;welcome.php&#8221; method=&#8221;post&#8221;&gt;</p>
<p>Name: &lt;input type=&#8221;text&#8221; name=&#8221;name&#8221; /&gt;</p>
<p>Age: &lt;input type=&#8221;text&#8221; name=&#8221;age&#8221; /&gt;</p>
<p>&lt;input type=&#8221;submit&#8221; /&gt;</p>
<p>&lt;/form&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
<p>&#8220;welcome.php&#8221;  dosyasındaki kullanıcı bilgilerini düzenleyelim;</p>
<blockquote><p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>Merhaba &lt;?php echo $_POST["name"]; ?&gt;.&lt;br /&gt;</p>
<p>&lt;?php echo   $_POST["age"]; ?&gt; yaşındasın</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.serpito.com/php-cerezler/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Upload</title>
		<link>http://www.serpito.com/php-upload/</link>
		<comments>http://www.serpito.com/php-upload/#comments</comments>
		<pubDate>Sat, 01 Mar 2008 23:32:06 +0000</pubDate>
		<dc:creator>Atilla Akoğlu</dc:creator>
				<category><![CDATA[PHP Dersleri]]></category>
		<category><![CDATA[dosya yükleme]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Dersler]]></category>
		<category><![CDATA[Php upload]]></category>

		<guid isPermaLink="false">http://serpito.com/php-upload/</guid>
		<description><![CDATA[PHP ile ,sunucuya dosya yüklemek mümkündür. Dosya-Yükle Formu oluşturma Kullanıcılara dosya yükleme olanağı vermek kullanımı ve proje değerini attırıcı bir etkendir. Şimdi aşağıdaki dosya yükleme formuna göz gezdirelim: &#60;html&#62; &#60;body&#62; &#60;form action=&#8221;upload_file.php&#8221; method=&#8221;post&#8221; enctype=&#8221;multipart/form-data&#8221;&#62; &#60;label for=&#8221;file&#8221;&#62;Dosya Adı:&#60;/label&#62; &#60;input type=&#8221;file&#8221; name=&#8221;file&#8221; id=&#8221;file&#8221; /&#62; &#60;br /&#62; &#60;input type=&#8221;submit&#8221; name=&#8221;submit&#8221; value=&#8221;Gönder&#8221; /&#62; &#60;/form&#62; &#60;/body&#62; &#60;/html&#62; Yukardaki formda dikkat <a href="http://www.serpito.com/php-upload/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>PHP ile ,sunucuya dosya yüklemek mümkündür.</p>
<p><strong>Dosya-Yükle Formu oluşturma</strong></p>
<p>Kullanıcılara dosya yükleme olanağı vermek  kullanımı ve proje değerini attırıcı bir etkendir.</p>
<p>Şimdi aşağıdaki dosya yükleme formuna göz gezdirelim:</p>
<blockquote><p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;form action=&#8221;upload_file.php&#8221; method=&#8221;post&#8221;</p>
<p>enctype=&#8221;multipart/form-data&#8221;&gt;</p>
<p>&lt;label for=&#8221;file&#8221;&gt;Dosya Adı:&lt;/label&gt;</p>
<p>&lt;input type=&#8221;file&#8221; name=&#8221;file&#8221; id=&#8221;file&#8221;   /&gt;</p>
<p>&lt;br /&gt;</p>
<p>&lt;input type=&#8221;submit&#8221; name=&#8221;submit&#8221;   value=&#8221;Gönder&#8221; /&gt;</p>
<p>&lt;/form&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
<p>Yukardaki formda dikkat edilecek noktaları belirleyelim:  <span id="more-81"></span></p>
<ul type="disc">
<li>&lt;form&gt; tagının attribute değerine bakacak      olursak, enctype=&#8221;multipart/form-data&#8221; form onay işleminde dosya upload      işleminin belirteci olarak görev alır.</li>
<li>&lt;input&gt; tagında      type=&#8221;file&#8221; attribute  değeri post metoduyla gönderilecek      bir dosyanin varlığını gösterir.</li>
<p><strong>Not:</strong> Kullanıcılara dosya yükleme      izni vermek aslında büyük riskleri ortaya çıkarır.Sadece güvenilir      kullanıcılara izni vermenizde büyük yarar var.</ul>
<hr />
<strong>Upload Scripti Oluşturmak</strong>&#8220;upload_file.php&#8221;  dosyasında  dosya aktarım için gerekli scriptleri oluşturduk,şimdi inceleyelim;</p>
<blockquote><p>&lt;?php</p>
<p>if ($_FILES["file"]["error"] &gt; 0)</p>
<p>{</p>
<p>echo &#8220;Hata:   &#8221; . $_FILES["file"]["error"] . &#8220;&lt;br   /&gt;&#8221;;</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo   &#8220;Yükle: &#8221; . $_FILES["file"]["name"] .   &#8220;&lt;br /&gt;&#8221;;</p>
<p>echo &#8220;Tür:   &#8221; . $_FILES["file"]["type"] . &#8220;&lt;br   /&gt;&#8221;;</p>
<p>echo   &#8220;Boyut: &#8221; . ($_FILES["file"]["size"] / 1024) .   &#8221; Kb&lt;br /&gt;&#8221;;</p>
<p>echo   &#8220;Yükleme Yeri: &#8221; . $_FILES["file"]["tmp_name"];</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p>PHP $_FILES değişkeni kullanarak,uzak bağlantı kurulan istemci bilgisayara dosya aktarımı sağlanabilir.</p>
<p>Scriptlerde kullandığımız parametrelere bakalım:</p>
<ul type="disc">
<li>$_FILES["file"]["name"] &#8211;      aktarılan dosyanın adı</li>
<li>$_FILES["file"]["type"] &#8211;      dosyanın türü(uzantısı)</li>
<li>$_FILES["file"]["size"] &#8211;      byte olarak dosyanın boyutu</li>
<li>$_FILES["file"]["tmp_name"] &#8211;      dosyanın server üzerinde yüklendiği temp klasörünün adı</li>
<li>$_FILES["file"]["error"] &#8211;      Dosya yükleme sonrası oluşam hata kodu</li>
</ul>
<p>Dosya yüklemeni basit bir metodunu yazdık. Güvenlik sebebiyle,daha fazla ayrıntı ve kısıtlamalar eklemenizi tavsiye ederim.</p>
<hr /><strong>Upload Kısıtlamaları</strong>Bu script örneğimizde dosya yükleme işlemine bir kaç sınırlama daha getirdik.Kullanıcı yanlızca &#8220;.gif&#8221; veya &#8220;.jpeg&#8221; uzantılı dosyalar yükleyebilir ve yüklenecek dosya boyutu maximum 20 kb ile sınırladık:</p>
<blockquote><p>&lt;?php</p>
<p>if ((($_FILES["file"]["type"] ==   &#8220;image/gif&#8221;)</p>
<p>|| ($_FILES["file"]["type"] ==   &#8220;image/pjpeg&#8221;))</p>
<p>&amp;&amp; ($_FILES["file"]["size"] &lt; 20000))</p>
<p>{</p>
<p>if ($_FILES["file"]["error"] &gt; 0)</p>
<p>{</p>
<p>echo   &#8220;Hata: &#8221; . $_FILES["file"]["error"] .   &#8220;&lt;br /&gt;&#8221;;</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo &#8220;Dosya Adi: &#8221; . $_FILES["file"]["name"] .   &#8220;&lt;br /&gt;&#8221;;</p>
<p>echo &#8220;Dosya Tipi: &#8221; . $_FILES["file"]["type"] .   &#8220;&lt;br /&gt;&#8221;;</p>
<p>echo   &#8220;Boyut: &#8221; . ($_FILES["file"]["size"] / 1024) .   &#8221; Kb&lt;br /&gt;&#8221;;</p>
<p>echo &#8220;Saklandığı Yer: &#8221; .   $_FILES["file"]["tmp_name"];</p>
<p>}</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo   &#8220;Geçersiz Dosya file&#8221;;</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<hr />
<strong>Yüklenen Dosyayı Kaydetmek</strong>Önceki örneklerimizde yüklenen dosyalarımızı sunucu üzerinde geçici bir klasörde sakladık</p>
<p>Geçici olarak kopyalanan dosya script sona erdiği anda kaybolur.Dosyamızı yerleştirmek için başka bir hedefe yönlendirmemiz gerekir;</p>
<blockquote><p>&lt;?php</p>
<p>if (($_FILES["file"]["type"] ==   &#8220;image/gif&#8221;)</p>
<p>|| ($_FILES["file"]["type"] ==   &#8220;image/pjpeg&#8221;)</p>
<p>&amp;&amp; ($_FILES["file"]["size"] &lt; 20000))</p>
<p>{</p>
<p>if   ($_FILES["file"]["error"] &gt; 0)</p>
<p>{</p>
<p>echo &#8220;Hata Kodu: &#8221; . $_FILES["file"]["error"] .   &#8220;&lt;br /&gt;&#8221;;</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo   &#8220;Dosya Adı: &#8221; . $_FILES["file"]["name"] .   &#8220;&lt;br /&gt;&#8221;;</p>
<p>echo   &#8220;Dosya Tipi: &#8221; . $_FILES["file"]["type"] .   &#8220;&lt;br /&gt;&#8221;;</p>
<p>echo &#8220;Boyutu: &#8221; . ($_FILES["file"]["size"] /   1024) . &#8221; Kb&lt;br /&gt;&#8221;;</p>
<p>echo &#8220;Geçici Dosya: &#8221; .   $_FILES["file"]["tmp_name"] . &#8220;&lt;br /&gt;&#8221;;</p>
<p>if (file_exists(&#8220;upload/&#8221; .   $_FILES["file"]["name"]))</p>
<p>{</p>
<p>echo $_FILES["file"]["name"] . &#8221; dosyası zaten   yüklenmiş. &#8220;;</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>move_uploaded_file($_FILES["file"]["tmp_name"],</p>
<p>&#8220;upload/&#8221; . $_FILES["file"]["name"]);</p>
<p>echo &#8220;yerleştirildiği hedef: &#8221; . &#8220;upload/&#8221; .   $_FILES["file"]["name"];</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo &#8221;   geçersiz dosya&#8221;;</p>
<p>}</p>
<p>?&gt;</p></blockquote>
<p>Yukarıdaki scriptimiz dosyanin önceden var olup olmadığını kontrol eder.Eğer yoksa dosyayı belirlenen hedefe kopyalar.,</p>
<p><strong><strike>Not</strike>:</strong> Örneğimiz yüklenen dosyayı &#8220;upload&#8221; adında bir klasörde saklıyor.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serpito.com/php-upload/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

