<?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>directory komutları arşivleri - Ertan Dönmez</title>
	<atom:link href="https://www.ertandonmez.org/tag/directory-komutlari/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Ertan Dönmez Kişisel Blog Sitesi.</description>
	<lastBuildDate>Wed, 02 Jun 2010 23:53:30 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>
	<item>
		<title>PHP Directory Komutları</title>
		<link>https://www.ertandonmez.org/php-directory-komutlari/</link>
					<comments>https://www.ertandonmez.org/php-directory-komutlari/#comments</comments>
		
		<dc:creator><![CDATA[Ertan]]></dc:creator>
		<pubDate>Wed, 02 Jun 2010 23:53:30 +0000</pubDate>
				<category><![CDATA[Php Dersleri]]></category>
		<category><![CDATA[directory komutları]]></category>
		<category><![CDATA[php directory]]></category>
		<category><![CDATA[PHP Directory Komutları]]></category>
		<guid isPermaLink="false">https://www.ertandonmez.org/?p=1405</guid>

					<description><![CDATA[<p>PHP nin kurulu olduğu bilgisayar veya scriptin çalıştığı serverda dosyalar veya dizinler üzerinde çeşitli işlemleri gerçekleştiren komutları vardır.Bunlardan dosyalar üzerinde işlem yapan(örn:dosya silme , dosya kopyalama,büyüklüğünü öğrenme,açma,kapama vb gibi) komutları PHP nin File System Function (Dosyasistemi fonksiyonları) içinde açıklanır.Diğer yandan Directory(Klasör) İşlemlerini ise burada açıklayacağımız fonksiyonlar gerçekleştirir. PHP nin Klasör komutları şunlardır: chdir() dir() closedir() [&#8230;]</p>
<p><a href="https://www.ertandonmez.org/php-directory-komutlari/">PHP Directory Komutları</a> yazısı ilk önce <a href="https://www.ertandonmez.org">Ertan Dönmez</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[<p>PHP nin kurulu olduğu bilgisayar veya scriptin çalıştığı serverda dosyalar veya dizinler üzerinde çeşitli işlemleri gerçekleştiren komutları vardır.Bunlardan dosyalar üzerinde işlem yapan(örn:dosya silme , dosya kopyalama,büyüklüğünü öğrenme,açma,kapama vb gibi) komutları PHP nin File System Function<span id="more-1405"></span> (Dosyasistemi fonksiyonları) içinde açıklanır.Diğer yandan Directory(Klasör) İşlemlerini ise burada açıklayacağımız fonksiyonlar gerçekleştirir.<br />
<strong>PHP nin Klasör komutları şunlardır:</strong><br />
<strong>chdir()</strong><br />
<strong>dir()</strong><br />
<strong>closedir()</strong><br />
<strong>opendir()</strong><br />
<strong>readdir()</strong><br />
<strong>rewinddir()</strong><br />
<strong> </strong><br />
<strong>Şimdi bu komutları yazacağımız bir programın içinde kullanarak öğrenelim.</strong><strong> </strong><br />
<strong>Yazacağımız programda önce verilen bir klasörde bulunana dosya ve altklasörleri ekrana yazan bir program yazalım..</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>ÖRN-1: </strong><strong> </strong><br />
<strong> </strong><br />
<strong>&lt;?php</strong><br />
<strong> </strong><br />
<strong>$hedef=&#8221;c:/windows/desktop/ftp/klasör1&#8243;; </strong><br />
<strong> </strong><br />
<strong>chdir($hedef);</strong><br />
<strong>$link=@opendir($hedef);</strong><br />
<strong>if(!$link){</strong><br />
<strong>echo “Belirtilen isimde bir klasör bulunamadı veya belirtilen yol yanlış!”;</strong><br />
<strong>}</strong><br />
<strong>while($dosya=readdir($link)){</strong><br />
<strong> if ($dosya != &#8220;.&#8221; &amp;&amp; $dosya != &#8220;..&#8221;){</strong><br />
<strong> $tip=filetype($dosya);</strong><br />
<strong> echo $tip.” ”.$dosya ;</strong><br />
<strong> }</strong><br />
<strong>}</strong><br />
<strong>closedir($link);</strong><br />
<strong> </strong><br />
<strong>?&gt;</strong><br />
<strong> </strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>Şimdi bu kodları adım adım inceleyelim.</strong><strong> </strong><br />
<strong> </strong><br />
<strong><em>$hedef=&#8221;c:/windows/desktop/ftp/klasör1&#8243;; </em></strong><br />
<strong> </strong><strong> </strong><br />
<strong>Öncelikle $hedef değişkenine içeriğini listeleyeceğimiz klasörün adresini veriyoruz.Bu işlemi </strong><strong> </strong><strong> </strong><br />
<strong> </strong><strong><em>C:/windows/desktop/ftp/klasör</em></strong><strong> gibi kesin bir bildirim ile verebileceğimiz gibi bu dosyanın bulunduğu klasöre göre </strong><strong><em>/klasör </em></strong><strong>gibi göreceli bir adresde verebiliriz.</strong><br />
<strong><em> </em></strong><br />
<strong><em>chdir($hedef);</em></strong><br />
<strong><em> </em></strong><br />
<strong>bu satır ile php scriptine klasör değiştirmesini söylüyoruz.Burada dikkat edilmesi gereken bir nokta var.</strong><strong> </strong><br />
<strong>Eğer</strong><strong> biz </strong><strong><em>chdir() </em></strong><strong>komutunu kullanmazsak bu script yine verdiğimiz klasördeki içeriği listeleyecek.Ama bu defa içeriğim tipini yani dosya mı yoksa klasörmü olduğuna karar veren PHP nin Filesystem Function (Dosyasistem komutlarından) </strong><strong><em>filetype() </em></strong><strong>komutunu kullanamayacağız. Çünkü </strong><strong><em>chdir() </em></strong><strong>kullanmadan </strong><strong><em>filetype() </em></strong><strong>kullanırsak dönen değer </strong><strong> <em>fifo, char, dir, block, link, file ve </em></strong><strong>unknown tiplerinden biri olacağına null yani boş değer olmaktadır.</strong><br />
<strong> </strong><br />
<strong>Unutmadan ekleyelim,burada gelen içeriğin dosya mı yoksa klasör mü olduğunu bize söyleyen </strong><strong><em>filetype()</em></strong><br />
<strong>Komutu yerine yine aynı işleve sahip </strong><strong><em>is_dir(), is_file() , is_link() </em></strong><strong>komutlarıda kullanılabilir.</strong><br />
<strong> </strong><br />
<strong> </strong><br />
<strong><em>$link=@opendir($hedef);</em></strong><br />
<strong> </strong><br />
<strong>bu satır ile $hedef ile belirtilen klasörü açıp bağlantıyı $link değişkenine atıyoruz.Burada </strong><strong><em>opendir() </em></strong><strong>komutundan önce @ kullanmamızın sebebi hata durumunda yani belirtilen dosyanın açılamaması veya belirtilen isimde bir dosya bulunamaması halinde verilecek hata mesajını kontrol etmek ve kullanıcıya kendi hata mesajımızı iletmek.</strong><br />
<strong> </strong><br />
<strong><em>if(!$link){</em></strong><br />
<strong><em>echo “Belirtilen isimde bir klasör bulunamadı veya belirtilen yol yanlış!”;</em></strong><br />
<strong><em>}</em></strong><br />
<strong><em> </em></strong><br />
<strong><em>$link=@opendir($hedef); </em></strong><strong> fonksiyonu yapılan işlem sonrası başarı halinde true hata halinde ise false değerini gönderir.yani </strong><strong><em>$link </em></strong><strong>değişkeni yada true değeri yada false değerine sahiptir.</strong><br />
<strong><em>If </em></strong><strong>kontrol deyimi ile $link false ise yani </strong><strong><em>opendir() </em></strong><strong>fonksiyonu ile klasör açılamamışsa</strong><strong><em> </em></strong><strong>ekrana kendi hata mesajımızı yazdırıyoruz.</strong><br />
<strong> </strong><br />
<strong><em> </em></strong><br />
<strong><em> </em></strong><br />
<strong><em>while($dosya=readdir($link)){</em></strong><br />
<strong><em> if ($dosya != &#8220;.&#8221; &amp;&amp; $dosya != &#8220;..&#8221;){</em></strong><br />
<strong><em> $tip=filetype($dosya);</em></strong><br />
<strong><em> echo $tip.” ”.$dosya ;</em></strong><br />
<strong><em> }</em></strong><br />
<strong><em>}</em></strong><br />
<strong> </strong><br />
<strong> </strong><br />
<strong>yukarıdaki kod grubunda önce bir döngü kurduk ardından if ile bir kontrol oluşturduk.Bunlara geçmeden önce  yukarıda kullandığımız </strong><strong><em>readdir()</em></strong><strong> fonksiyonunu açıklayalım.</strong><br />
<strong>Evet </strong><strong><em>readdir() </em></strong><strong>fonksiyonu ile sizinde tahmin etmiş olduğunuz gibi </strong><strong><em>opendir() </em></strong><strong>fonksiyonu ile açılmış olan klasörden içerik okuyoruz. Burada </strong><strong><em>while</em></strong><strong> ile döngü kurmamızın sebebi </strong><strong><em>readdir() </em></strong><strong>fonksiyonu her çağrılışında belirtilen klasörün içinden bir dosya veya klasör adı okur.Bu durumu PHP nin mysql_komutlarından </strong><strong><em>mysql_fetch_array()</em></strong><strong> a benzetebiliriz. </strong><br />
<strong> </strong><br />
<strong>If  kontrol deyimi kullanılarak dosya isimlerinin “.”  veya “..” olmaması sağlanır yani eğer dosya “.” veya “..”  ismi ile geliyorsa bunu ekrana basmıyoruz.Eğer if deyimini kaldırarak scripti çalıştırırsak ekrana yazılan dosya ve klasör isimleri arasında “.” ve “..” isimlerininde olduğunu görürüz.Bunun sebebini açıklamak isterdim ama ne yazıkki benimde bir fikrim yok.</strong><strong>J</strong><br />
<strong> </strong><br />
<strong>If koşulunun olumlu olamsı yani dosya isimlerinin “.” ve “..” dan farklı olması halinde</strong><br />
<strong><em>filetype()</em></strong><strong> fonksiyonu ile bunu dosyamı yoksa klasör adımı olduğunu öğrenip bunu </strong><strong><em>$tip </em></strong><strong>değişkenine atıyoruz.Ve ardından önce tipini sonrada adını ekrana basıyoruz</strong><strong><em>. </em></strong><br />
<strong><em> </em></strong><br />
<strong>While döngüsü sona erdiği zaman yani klasör ün tüm içeriği okunduktan sonrada dongüyü bitiriyoruz.</strong><strong> </strong><br />
<strong>Ve ardından programımızın son satırı :</strong><br />
<strong> </strong><br />
<strong> </strong><strong><em>closedir($link);</em></strong><br />
<strong> </strong><strong> </strong><br />
<strong>komutu ilede </strong><strong><em>opendir() </em></strong><strong>kullanarak açtığımız klasörü kapatıyoruz.Burada yine önemli bir noktaya dikkat etmemiz gerekiyor.</strong><strong> </strong><br />
<strong><em>closedir() </em></strong><strong>fonksiyonu ile daha önce açılmış bir klasörü </strong><strong><em> </em></strong><strong>kapatabilmemiz için bu klasörün mutlaka </strong><strong><em>opendir() </em></strong><strong>fonksiyonu ile açılmış olması gerekiyor.Şimdi siz içinizden klasörler başka bir komut ilede açılabiliyor mu? Diye geçiriyorsunuzdur.Hemen cevaplayalım:</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>Klasör açmak içindekileri ekrana basmak için ve onu kapatmak için yukarıdaki komutlardan farklı bir fonksiyonumuz aslında bir CLASS ımız var yani bir nesne.</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong><em>dir()</em></strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>bu nesne aslında tam olarak nesnede değil görünürde nesneye dayalı bir mekanizma sözkonusu bir klasörü okumak için..</strong><strong> </strong><br />
<strong><em>dir($hedef);</em></strong><strong> </strong><br />
<strong>satırı ile $hedef ile belirtilen klasör açılır.Bu klasörü </strong><strong><em>dir()</em></strong><strong> nesnesi ile açtığımız zaman okumak için </strong><strong><em>readdir(), </em></strong><strong>kapatmak içinde </strong><strong><em>closedir() </em></strong><strong>fonksiyonlarını kullanamıyoruz.İyi peki ama nasıl okuyup nasıl kapatacağız klasörü..</strong><strong> </strong><br />
<strong><em> </em></strong><strong> </strong><br />
<strong><em>dir() </em></strong><strong>fonksiyonu bir nesne olduğu için bu işlemleri yapan kendi methodları var..Bir örnekle açıklamaya çalışalım:</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong><em>&lt;?php</em></strong><strong> </strong><br />
<strong><em> </em></strong><br />
<strong><em>$hedef=”C:/windows/desktop/ftp/klasör1”;</em></strong><br />
<strong><em>$d = dir($hedef); </em></strong><br />
<strong><em> </em></strong><br />
<strong><em>echo &#8220;Path: &#8220;.$d-&gt;path.&#8221;&lt;br&gt;\n&#8221;; </em></strong><br />
<strong><em> </em></strong><br />
<strong><em>while($dosya=$d-&gt;read()) { </em></strong><br />
<strong><em>echo $dosya.&#8221;&lt;br&gt;\n&#8221;;</em></strong><br />
<strong><em>} </em></strong><br />
<strong><em> </em></strong><br />
<strong><em>$d-&gt;close();</em></strong><br />
<strong><em> </em></strong><br />
<strong><em>?&gt;</em></strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>Bo kodda </strong><strong><em>$d=dir($hedef); </em></strong><strong> yazarak $hedef klasörü üzerinde yapılacak açma,okuma ve kapatma işlemleri ni gerçekleştirecek olan dir() classının $d ye atadık.ve </strong><strong><em>dir($hedef); </em></strong><strong>diyerek klasörü açmış olduk.</strong><strong> </strong><br />
<strong><em>dir()</em></strong><strong> nesnesini iki özelliği vardır.Bunlar </strong><strong><em>path</em></strong><strong> ve <em>handle</em> dir.</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>Path özelliği klasörün adresini verir.</strong><strong> </strong><br />
<strong><em>echo “path :”.$d-&gt;path; </em></strong><strong>yazılarak bu nesnenin özelliğine erişilir.</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong><em>while($dosya=$d-&gt;read()) { </em></strong><br />
<strong><em>echo $dosya.&#8221;&lt;br&gt;\n&#8221;;</em></strong><br />
<strong><em>} </em></strong><br />
<strong> </strong><strong> </strong><br />
<strong>yukarıdaki döngünün amacı ve nasıl işlediği yukarıda anlatımıştı.Burada sadece açıklanacak nokta</strong><strong> </strong><br />
<strong><em>$dosya=$d-&gt;read();</em></strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>satırıyla $d nesnesinin read() methoduna erişilir.ve dosya adı $dosya değişkenine aktarılır.</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong><em>$d-&gt;close();</em></strong><br />
<strong> </strong><strong> </strong><br />
<strong>satırıylada bu nesnenin close methodu kullanılarak klasör kapatılır.Bu tip kapatma sadece </strong><strong><em>dir()</em></strong><strong> nesnesi ile açılan klasörlerde kullanılır.</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>Bu nesnenin birde </strong><strong><em>rewind() </em></strong><strong>methodu vardır.Bu method açılan klasör akımını yani bağlantıyı resetlemek için kullanılır.Görünürde bir faydası yok.(Ben saçmalamaya başladım.yahu su </strong><strong><em>rewinddir() </em></strong><strong>komutunun ne işe yaradığını tam olarak bilen biri buraya onu eklerse bende saçmalamayacağım</strong><strong>JJJ</strong><strong>)</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>Peki şimdi bu komutlarla ne yapabiliriz diye düşündük ve aklımıza şöyle birşey geldi.</strong><strong> </strong><br />
<strong>Öyle bir script yazalımki sayfa her çağrılışında farklı bir resmi ekrana basılsın.(veya bir text dosyasının içinide ekrana basabiliriz.)</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong><em>ÖRN-2:</em></strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>&lt;?php</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>$hedef=&#8221;c:/windows/desktop/ftp/klasör1&#8243;;</strong><strong> </strong><br />
<strong>$i=0;</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>chdir($hedef);</strong><strong> </strong><br />
<strong>$link=@opendir($hedef); </strong><strong>//klasörü açıyoruz</strong><strong> </strong><br />
<strong>if(!$link){echo “belirtilen yol yanlış veya dosya bulunamadı.”;}</strong><strong> </strong><br />
<strong>while($dosya=readdir($link)){</strong><strong> </strong><br />
<strong> if ($dosya != &#8220;.&#8221; &amp;&amp; $dosya != &#8220;..&#8221;){</strong><strong> </strong><br />
<strong> $tip=filetype($dosya);</strong><strong> </strong><br />
<strong> if($tip==&#8221;file&#8221;){</strong><strong> </strong><br />
<strong> $dosyadizi[$i++]=$dosya; </strong><strong><em>//dosya isimlerini bir diziye atıyoruz.</em></strong><strong> </strong><br />
<strong> }</strong><strong> </strong><br />
<strong> }</strong><strong> </strong><br />
<strong>}</strong><strong> </strong><br />
<strong>closedir($link);</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>srand((double)microtime()*1000000);</strong><strong> </strong><br />
<strong> $limit=sizeof($dosyadizi); </strong><strong>//$dosyadizi dizsinin eleman sayısını öğreniyoruz.</strong><strong> </strong><br />
<strong> $no = rand(0,$limit-1);   //0 ile $dosyadizi dizisinin eleman sayısının bir eksiği arasında rastgele sayı </strong><strong> </strong><br />
<strong> //üretiyoruz.</strong><strong> </strong><br />
<strong>echo &#8220;&lt;img src=\&#8221;$hedef/$dosyadizi[$no]\&#8221; &gt;&#8221;;</strong><strong> </strong><br />
<strong> </strong><strong> </strong><br />
<strong>?&gt;</strong><strong> </strong></p>
<p><a href="https://www.ertandonmez.org/php-directory-komutlari/">PHP Directory Komutları</a> yazısı ilk önce <a href="https://www.ertandonmez.org">Ertan Dönmez</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ertandonmez.org/php-directory-komutlari/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
