PHP PHP Nedir?PHP şu ana kadar gelişim sürecini en hızlı ve en sağlam şekilde tamamlayan sunucu tabanlı bir betik dilidir ve HTML içerisine gmülü olarak çalışır. Ayrıntıya girmek gerekirse PHP betik dili tamamen sunucu tarafında çalışarak istemci tarafına hiçbir yük getirmemekte ve platform bağımsız çalışabilmektedir rneğin PHP kullanılarak tasarlanan bir PHP betiği bir iMAC + Netscape üzerinde çalışacağı gibi Windows NT + Internet Explorer üzerindede çalışabilmektedir. Şu anda PHP platform olarak tüm istemci platformlarını desteklediği gibi sunucu platformu olarak da Linux + Apache web sunucusu, MS Windows NT + MS IIS, MS Windows NT + Apache web sunucusu bileşimlerini desteklemektedir. Zaten bu iki platform dünya üzerindeki tüm web sunucusu pazarının % 90 ınını kapsamaktadır. PHP Ne İşe Yarar?Genelde bir çok web sayfasında grmeye alıştığımız formlar, kullanıcı anketleri, veritabanına bağlanıp sorgu yapma ve veri girme sayfaları ve kullanıcı ile sayfa sahibi kişi / şirket arasında salt HTML den daha interaktif bir şekilde bilgi alışverişi sağlayabilecek olan bütün projeler için PHP biçilmiş kaftandır. PHP kullanarak form oluşturup bu formu online olarak işleyebilir ve formu doldurana sonuç dnebilir, kendi kendini yaratan web sayfaları hazırlayabilir, cookie yollayıp alabilir ve HMTL içerisinde yapay zeka gerektirecek her tür işlem için kullanabilirsiniz. Günümüzde PHP nin en yaygın kullanım alanı web ve veritabanlarini etkileşimli bir şekilde kullanan elektronik ticaret ve müşteri servisleri uygulamalarıdır. PHP kendi içerisinde bir çok veritabanı sunucusuna ve veritabanına native bağlantı imkanı veren bir dildir. Desteklediği bazı veritabanları ise şunlardır :o:p>Adabas DDBaseEmpressFileProInformixInterBasemSQLMySQL OraclePostgreSQLSolidSybaseVelocisUnix dbmMS SQLPHP sadece veritabanı bağlantısı sağlamakla kalmaz ayrıca IMAP, SNMP, NNTP, POP3, HTTP servislerine bağlantı kurabilmek içinde destek vermektedir. MySQL : Kaynak kodu yeni açık olan bir veritabanı sunucusu. PHP ile mükemmel bir uyum içerisinde çalışmakta ve bu ikili konusunda her yerde dküman bulabilmeniz mümkün. PHP TarihçesiPHP 1994 yılında Rasmus Lerdorf tarafından web sunucusuna koyduğu CV sinin kaç kişi tarafından okunduğunu izlemek için geliştirmeye başlanmıştır. İlk başta bu versyonlar halka açık olmamakla birlikte 1995 yılında Personal Home Page Tools adı altında diğer insanların kullanımına açık hale getirilmiştir. O yıllarda içerisinde çok basit bir iki makroyu anlayabilen ufak bir derleme motoru kişisel sayfalarda kullanılmaya alışık olunan bazi gereçleri bulunduran, misafir defteri, sayaç vb uygulamaları barındıran bir araçtı. 1995 yılında derleme motoru tekrar yazılarak adına PHP/FI V2 denildi ve bu sürüm Rasmus tarafından yazılan ve HTML form bilgilerini işleyebilen bir yapıya sahipti buna mSQL desteğinide ekleyince PHP/FI tam anlamıyla doğmuş oldu. Bir çok kişinin desteği ve kendi yazdıkları kodları paylaşmaları sonucu çok hızlı bir şekilde gelişti ve 1997 de Zeev Suraski ve Andi Gutmans tarafından tamamen yeniden yazılan derleme motoru PHP V3 için bir taban oluşturdu. Bundan yaklaşık bir iki ay nce PHP V4 çıktı ve bu sürümde PHP V3 gibi sıfırdan yeniden yazıldı. PHP Nereden Temin Edilir?PHP şu anda birçok web sunucusu üzerinden ftp kullanarak indirilebileceği gibi www.php.net <http://www.php.net> adresindende edinilebilir. <ftp://ftp. onar.com.tr/pub/linux/console/php/> ya da ODTU nun ftp sunucusundan indirmeniz daha hızlı olacaktır. Boyutu cok buyuk olmayan bu dosyalar aslında tek başlarına çok nemli olmakla beraber kullanım kılavuzlarını indirmeniz nerilir zira her zaman referans olarak kullanabilirsiniz. PHP Kullanacak Bir WEB Sitesi İçin Neler Gerekir?Betik tabanlı dillerde hazırlanana betiğin çalışması bir çok etmene bağlıdır. PHP de ise çalışan bir sistemin 3 temel katmanı vardır :- İşletim Sistemi- Web Sunucusu- PHP Derleme MotoruGrüldüğü üzere sadece PHP dosyalarını sunucu üzerine indirip kurmak yetmemektedir , web sunucusunun kullanılacak olan. php ya da. php3 uzantılı dosyalarda PHP derleme motorunu çalıştırması gerektigini bilmek zorunda olduğu gibi dışarıdan bağlanan kullanıcının dosyaları çalıştırma ve okuma haklarının ynetimi ise işletim sistemine kalmaktadır. Bu üç katmandan herhangi birinde bir problem oluşursa web sayfası hizmet veremez. İşletim sistemi olarak tavsiye edilebilecek en güçlü opsyon Linux tur . Şu anda kullanılan bir çok PHP ile desteklenmiş sayfa altyapı olarak Linux kullanmaktadır. Tavsiye edilebilecek dağıtım ise Redhat dir, fakat bu PHP diğer dağıtımlarda kullanılamıyor anlamına gelmez aksine tüm Linux dağıtımları üzerinde sorunsuz çalışmaktadır fakat kurulum ve kullanım kolaylığı ve yaygınlığı açısından Redhat tavsiye edilmiştir. Micro$oft kısmında ise seçenek olarak Windows NT sz konusu olacaktır fakat eğer başınızın ağrımasını, IT müdürünüzün gecenin ikisinde sizi arayip siteye ulaşılamadığını sylemesini ve sabah geldiğinizde verdiği hata mesajından hiçbirşey anlayamadığınız mavi bir ekranı grmek istemiyorsaniz bu seçeneği aklınızın kşesine bile yaklaştırmayın ancak illaki MS bağımlı bir çzüme gidecekseniz C# kullanın, unutmadan henüz Micro$oft geliştiricileri bile bu dil hakkında tam bir bilgiye sahip değiller ve eğer megabaytlarca RAM harddisk ve processor hızı size batıyorsa hemen ASP kullanmaya başlayabilirsiniz. İşletim sistemi ile alakalı kurulum bilgisi ve temini konusunda www.gelecek.com.tr <http://www.gelecek.com.tr> adresine bakmanızı tavsiye ederim. Web sunucusu kısmında ise bir çok web sunucusu olmasına rağmen sadece bir tanesi tavsiye edilebilir bir sunucu : Apache. Apache DSO mantığı güden ve PHP ile mükemmel bir uyum içinde çalışan son araştırmalara gre dünya üzerindeki web sitelerinin % 49 unda kullanılan ve en nemlisi kaynak müsrifi olmayan bir web sunucusu. Linux üstünde kurulumu ise oldukca basit ve Linux işletim sistemi ile mükemmel bir uyum içerisinde çalışan bu sunucu sanal domain tanımlama konusunda ise en çok tercih edilen alternatif. Apache nin kurulumu ve kullanımı hakkındaki ayrıntılı bilgileri www.apache.org <http://www.apache.org> adresinden edinebilirsiniz. Bu yazı dizisinde çok kısa bir şekilde Apache ve PHP kurulumundan bahsedildikten sonra ayrıntılı olarak çeşitli uygulamaların nasıl yapıldığına dair bilgiler verilecek o yüzden referanslara bakmanızı neririm. Tabii ki PHP uygulaması yapılacaksa bir şekilde PHP derleme motoruda kurulmak zorunda yoksa üstteki üç sayfanın bir anlamı kalmaz. PHP motorunu kurabilmek için gerekli dosyaları yukarıda belirtilen yerlerden edinebilirsiniz. PHP KurulumuBu yazı dizisinin asıl amacı PHP kurulumunu ğretmek yerine PHP kullanmayı ğretmek olduğu için PHP nin kurulumundan çok basit bir şekilde sz edilecektir. PHP kuruluşu aynı anda Apache web sunucusunun da kuruluşunu içerdiği için RPM ya da hazır paket kullanmak yerine dosyaların. tar. gz hallerinin kullanımı yerinde olacaktır. Elimizde hem PHP için hem de Apache web sunucusu için gereken targz dosyalarının olduğunu ve isimlerinin apache_1.3.2. tar. gz, php-3.0.2. tar. gz olduğunu kabul edelim. Bu arada sisteminize bir adet SQL sunucusu kurmanizda yerinde olacaktir. Eğer Redhat kullanıyorsanız ilk kurulum sırasında PostgreSQL seçeneğini işaretleyerek Redhat kurulduğu anda bir SQL sunucusu sahibi olabilirsiniz ancak size tavsiyem www.mysql.com <http://www.mysql.com> adresinden Redhat için gereken RPM dosyalarını indirerek rpm -i komutu ile MySQL sunucusunu kurmanızdır. Kurulum işlemi aşağıdaki şekilde olacaktır :1- gunzip apache_1.3.2. tar. gz2- tar xvf apache_1.3.2. tar3- gunzip php-3.0. tar. gz4- tar xvf php-3.0. tar5- cd apache_1.3.26- ./configure -prefix=/www7- cd../php-3.0.28- ./configure -with-mysql -with-apache=../apache_1.3.2 -enable-track-vars9- make 10- make install11- cd../apache_1.3.212- ./configure -prefix=/www -activate-module=/src/modules/php3/libphp3. a13- make 14- make install15- cd../php-3.0.216- cp php3. ini-dist /usr/local/lib/php3. ini17- add this line to /www/conf/httpd. conf :AddType application/x-httpd-php3. php3Yukarıdaki kurulum PHP 3 için geçerli olmakla beraber eğer PHP 4 kullanmaya karar verirseniz paketleri " tar zxvf " komutu ile açtıktan sonra içindeki README dosyalarında kuruluş adımlarının buna çok yakın olduğunu sadece dosya ve dizin isimlerinin ufak değişikliklere uğradığını grürsünüz. Bunların hepsini yaptıktan sonra web sunucunuzu durdurup tekrar başlatmanız gerekmektedir. Bunu makinanizi açıp kapayarak yapabileceğiniz gibi tüm httpd process lerini kill -9 kullanarak yok ederekte yapabilirsiniz ama tek satırda :kill -TERM `cat /www/logs/httpd. pid`yaparsanız bunların hepsinin yapacağı işi yapmış olur. En son aşamada ufak bir PHP betiği yazarak çalıştırıp sistemin doğru olarak kurulup kurulmadığına bakmak mantıklı bir hareket olacaktır. Bunun için yapılması gereken ise çok basittir. Herhangi bir metin editrü ile içinde bir PHP betiği bulunan basit bir sayfa hazırlayarak bunu web sunucusunun /www/htdocs/ dizininin altında bir yere koyarak bu sayfayı internet tarayıcısından çağırmak kontrol için yeterli olacaktır. Aşağıdaki HTML kodunu "pico" ile aynen yazın : <HTML> <HEAD> Php deneme betigi </HEAD> <BODY> <? print " Php deneme çalışması "; ?> </BODY> </HTML>daha sonra CTRL + O tuşuna basıp dosya adı olarak deneme. php3 ( eğer PHP 4 kurduysanız sadece deneme. php ) verip Enter tuşlayın. Daha sonra CTRL + X kombinasyonu ile " pico " dan çıkın. Dosya /www/htdocs/deneme. php şeklinde kaydedilmiş olacaktır. Daha sonra tarayıcınızı açıp XXX. XXX. XXX. XXX/deneme. php şeklinde ( ilk 4 octet sunucunuza atadığınız IP numarasına karşılık gelmekte mesela 10.0.0.32 gibi ) dosyayı çağırın, eğer sunucunuza IP adresi atamadıysanız localhost/deneme. php şeklindede çağırabilirsiniz ancak sisteminizde kurulu bir DNS sunucusu olması gerekmektedir eğer aynı makinayı hem sunucu hem de istemci olarak kullanıyorsanız o zaman DNS sunucusuna gerek kalmayacaktır. Dosyayı çağırdığınızda tarayıcının içinde " Php deneme çalışması " yazan bir sayfa gelecektir. Eğer bu geliyorsa sistemimiz çalışmaya hazır haldedir değilse dosyanızın haklarını değiştirmeniz gerekmektedir bunu chmod komutu ile yapabilirsiniz. Bu komut hakkındaki daha ayrıntılı bilgiyi man chmod yazarak ya da info chmod yazarak bulabilirsiniz ama tavsiyem Midnight Commander kurarak dosyanın üzerine gelip menüye geçtikten sonra chmod yapmanızdır grsel olduğu için yapmanız gerekeni çok kolaylaştıracaktır. Eger sonuç olarak belirtilen sey browser penceresine yazilmazsa su tür hatalarla karsilasabilirsiniz :- Yazdiginiz kod aynen ekrana basilmaktadir. HTTP sunucunuzun. php ya da. php3 dkümanlarini algilayamamasi durumu sz konusudur. PHP kurulumunuza gz atin ayrica. php ya da. php3 dosya tipinin Apache nin /conf/httpdconf dosyasinin içinde tanitilip tanitilmadigina bakin - Yazdiginiz kodun sadece belli blümleri ekrana geliyor ve hyperlink ler dogru çalisiyor. PHP dosyalarinizin versyon sorunu olabilir eger PHPV4 kurduysaniz ve dosya uzantilarini. php3 vermeyin, bunu yaparsaniz yukaridaki sorun olusuyor. - Syntax error hatasi alabilirsiniz. Bu islerin yolunda gittigini ancak program yazma konusunda biraz daha çalismaniz gerektigi anlamina gelir çünkü PHP derleme motoru dosyanizi derlemeye çalismis fakat bazi yazim hatalarindan dolayi basarili olamamistir. - Browser sayfayi bulamamis ve IE kullaniyorsaniz DNS hatasi vermistir. Dosyanizin yolunu dogru verdiginizden emin olun ve dosyanin /www/htdocs altinda bulundugundanda emin olun. Genelde kullanicilar dosyalarini kendi home dizinleri altinda yaratirlar ve tasimayi unuturlar. Saatlerce bilgisayar basinda ugrasmissaniz emin olun bu hataya düseceksiniz. - Browser yetki sorunu olduguna dair bir hata vermistir. Chmod ve chown komutlarini dogru parametrelerle kullandiginiza emin olun zira dosyayi herkesin grmesi gerekmekte ancak dosya hala size ait ve sizin tarafinizdan kullanilabilir grünmekte.- Bilgisayariniz hiçbir reaksyon vermemekte. Apache nin çalistigindan ve httpd processinin çalistigindan emin olun. Bunu ps komutunu kullanarak grebilirsiniz. Eger zombie process leriniz varsa bilin ki isletim sistemi katmaninda ya da yazdiginiz kod içinde bir hata var. Sorunu /var/log/ altindaki log dosyalarindan grebilirsiniz. PHP de degiskenler Butun programlama dillerinde oldugu gibi PHP dilinde de degisken kavrami mevcut zaten olmasaydi herhalde algoritma gibi bir kavramimiz olmazdi :). Degiskenler adi ustunde kendilerine veri atanip bu verinin degisitirilmesi icin kullanilan seylerdir, bunlari yemek kaplarina benzetebiliriz hani bir yemek kabina istedigimiz yemegi koyabilir ve sonra yikar tekrar kullaniriz ya bir degiskenede istedigimiz degeri atar sonra sıfırlar ve yeni bir deger atayabilir artik eskiyincede cope atabilir ya da oldurebiliriz. Degiskenler bizim icin ileride cok buyuk onem tasiyacak zira su an basit bir iki arac gibi gorunmelerine ragmen mukemmel bir menu ve aksam yemegi icin kullanilacak olan tabaklar ve kaplar buyuk onem tasimakta ;). Form tasarlarken dongu kurarken ve karar verirken bizim icin cok onemli olacak olan degiskenler butun dillerde aslinda birer temel tastir ve ilk ogrenilmesi gereken seylerden birisidir. PHP degiskenleri syntax i cok benzemesine ragmen C deki gibi daha onceden tanimlanmak zorunda degildirler ve o an yaratilarak o an kullanilabilirler yanliz unutulmamasi gereken PHP OOP e yakin oldugu icin her degiskenin kullanildigi yerin o degiskene has olmasi ve parantezleriniz bittikten sonra o degiskenin diger parantez icinde gecen yapilarda kullanilamamasidir. PHP de bir degisken tanimlamak icin ilk once mantikli bir sebebimiz daha sonra klavyemizde $ tusunun bulunmasi gerekmektedir zira PHP de tum degiskenler daima $ isareti ile baslar. Ornek : $ad="Ali"; $soyad="Alemdaroglu"; $sayi=3; $yuzde=0.2739;Yukarida gordugunuz gibi degiskenler tanimlanmadan dogrudan deger aldilar ve deger aldiklarinda aslinda yaratildilar ve tipler belirlendi. Ad degiskeninin bir karakter dizisi oldugu sayi degiskeninin bir gercel sayi oldugu ve yuzde degiskeninin bir kayan noktali sayi oldugu hep esitliklerden sonra anlasilir. Boylece degisken tipi tanimlama zorlugu ise ortadan kalkar zaten C de en buyuk sorunlardan biriside dinamik boyutta array ya da string tanimlayamamaktir. Degiskenler ve fonksyonlardan donen veriler, ki degiskenlere atanir, eger bir seyin sonucu olarak donuyorlarsa isimiz bittikten sonra bu sonuclari parantezin bitmesini beklemeden yok edebiliriz ve bu bize hafiza kazandiracaktir. Madem hafizadan bahsediyoruz gelelim degisken tiplerine ve hafizada kaplayacaklari yer miktarina ve anlamlarina. | Degisken Tipleri | Tam sayilar : Adindanda anlasilacagi gibi "-" ve "+" olabilen toplama cikarma islemlerinde kullandigimiz kusurati olmayan sayilardan bahsediyoruz. PHP de tam sayilar asagidaki sekillerde gosterilebilirler ve unutmayalim ki tam sayi her sayma sisteminde tam sayi olacaktir yani 10 sayisi onluk duzende tam sayi oldugu gibi onaltilik sayi sistemindede tam sayi olacaktir yani A seklinde. $a=1234; $a=-1234; $a=0123; < 8 li sayma duzenini ifade eder yani 3x1 + 2x8 + 1x64 = 83 tur $a=0x12; < 16 li sayma duzenini ifade eder yani 2x1 + 16x1 = 18 dir Kayan noktali sayilar : Virgulden sonra sayilar bulunduran bir kavramdan bahsediyoruz yani pi sayisi gibi ya da meshur 1/3 gibi. Ornek : $a=1.234; $a=0.1234; $a=1.23e4; < 1.23 x 10^4 = 1230 Diziler : Aslinda basit bir isim ya da tumce dizi olabilir ama tanim yapmak gerekirse yan yana gelmis karakterler butununu anlayabiliriz. Hemen ornek : $a="deneme bir iki uc" ; $a="deneme 1 2 3"; Yukarida gordugunuz gibi bir dizinin icinde sayi da kullanabiliriz ama bu demek degildir ki kullandigimiz sayilar normal bir dizi elemani degil tam sayidir, aksine bu elemanlarda dizinin bir elemanidir ve karakter veri tipindedirler. Katarlar : Katarlar karmasik yapida olan ve aslinda spreadsheet turevi programlarda gordugumuz tablo mantiginda olan yapilardir. Bunlar bir izgaranin hucrelerine yapistirilmis olan diziler olabilecegi gibi tam ya da kayan noktali sayilarda olabilir. Katarlarda katar boyutu onceden verilebilecegi gibi dinamik katarlarda tanimlanabilir ve daha sonra bu katara elemanlar eklenebilir. Katarlar daima koseli parantezlerle gosterilir ve birden fazla boyutlu olabilirler ve her boyutun ilk elemani "0" dir. Katarlara ornek vermek gerekirse : $a ="def"; $a ="abc"; $b =0; Buradaki katarlarda ilk elemana def sonraki katar elemanina abc verdik, sonraki ornekte ise katarin kacinci elemaninin sıfır olacagini belirtmektense deneme elemaninin sıfır olacagini belirttik ki bu cok buyuk bir esneklik. $a ="PHP"; $a ="Turkiye"; $a ="Grubu"; Bu sekilde ise yukarida soyledigimiz gibi ilk elemani PHP sonraki elemani Turkiye bir sonraki elemani ise Grubu seklinde katara herhangi bir parametre vermeden ekledik. Ilk yaptigimiz harekette katar yaratildi sonraki islemlerde ise katar elemanlari ard arda katara eklendiPHP Directory Komutları: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 komutları PHP nin File System Function içinde açıklanır. Diğer yandan Directory İşlemlerini ise burada açıklayacağımız fonksiyonlar gerçekleştirir. PHP nin Klasr komutları şunlardır: chdir dir closedir opendir readdir rewinddir Şimdi bu komutları yazacağımız bir programın içinde kullanarak ğrenelim. Yazacağımız programda nce verilen bir klasrde bulunana dosya ve altklasrleri ekrana yazan bir program yazalım.. RN-1: <?php $hedef="c:/windows/desktop/ftp/klasr1"; chdir ;$link=@opendir ;if while($dosya=readdir { if }closedir ; ?>Şimdi bu kodları adım adım inceleyelim. $hedef="c:/windows/desktop/ftp/klasr1"; ncelikle $hedef değişkenine içeriğini listeleyeceğimiz klasrün adresini veriyoruz. Bu işlemi C:/windows/desktop/ftp/klasr gibi kesin bir bildirim ile verebileceğimiz gibi bu dosyanın bulunduğu klasre gre /klasr gibi greceli bir adresde verebiliriz. chdir ;bu satır ile php scriptine klasr değiştirmesini sylüyoruz. Burada dikkat edilmesi gereken bir nokta var. Eğer biz chdir komutunu kullanmazsak bu script yine verdiğimiz klasrdeki içeriği listeleyecek. Ama bu defa içeriğim tipini yani dosya mı yoksa klasrmü olduğuna karar veren PHP nin Filesystem Function filetype komutunu kullanamayacağız. Çünkü chdir kullanmadan filetype kullanırsak dnen değer fifo, char, dir, block, link, file ve unknown tiplerinden biri olacağına null yani boş değer olmaktadır. Unutmadan ekleyelim, burada gelen içeriğin dosya mı yoksa klasr mü olduğunu bize syleyen filetype Komutu yerine yine aynı işleve sahip is_dir , is_file , is_link komutlarıda kullanılabilir.$link=@opendir ; bu satır ile $hedef ile belirtilen klasrü açıp bağlantıyı $link değişkenine atıyoruz. Burada opendir 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. if $link=@opendir ; fonksiyonu yapılan işlem sonrası başarı halinde true hata halinde ise false değerini gnderir. yani $link değişkeni yada true değeri yada false değerine sahiptir. If kontrol deyimi ile $link false ise yani opendir fonksiyonu ile klasr açılamamışsa ekrana kendi hata mesajımızı yazdırıyoruz. while($dosya=readdir { if } yukarıdaki kod grubunda nce bir dngü kurduk ardından if ile bir kontrol oluşturduk. Bunlara geçmeden nce yukarıda kullandığımız readdir fonksiyonunu açıklayalım. Evet readdir fonksiyonu ile sizinde tahmin etmiş olduğunuz gibi opendir fonksiyonu ile açılmış olan klasrden içerik okuyoruz. Burada while ile dngü kurmamızın sebebi readdir fonksiyonu her çağrılışında belirtilen klasrün içinden bir dosya veya klasr adı okur. Bu durumu PHP nin mysql_komutlarından mysql_fetch_array a benzetebiliriz. 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 klasr isimleri arasında "." ve ".." isimlerininde olduğunu grürüz. Bunun sebebini açıklamak isterdim ama ne yazıkki benimde bir fikrim yok. J If koşulunun olumlu olamsı yani dosya isimlerinin "." ve ".." dan farklı olması halindefiletype fonksiyonu ile bunu dosyamı yoksa klasr adımı olduğunu ğrenip bunu $tip değişkenine atıyoruz. Ve ardından nce tipini sonrada adını ekrana basıyoruz. While dngüsü sona erdiği zaman yani klasr ün tüm içeriği okunduktan sonrada dongüyü bitiriyoruz. Ve ardından programımızın son satırı : closedir ; komutu ilede opendir kullanarak açtığımız klasrü kapatıyoruz. Burada yine nemli bir noktaya dikkat etmemiz gerekiyor. closedir fonksiyonu ile daha nce açılmış bir klasrü kapatabilmemiz için bu klasrün mutlaka opendir fonksiyonu ile açılmış olması gerekiyor. Şimdi siz içinizden klasrler başka bir komut ilede açılabiliyor mu? Diye geçiriyorsunuzdur. Hemen cevaplayalım: Klasr 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 varyani bir nesne. dir bu nesne aslında tam olarak nesnede değil grünürde nesneye dayalı bir mekanizma szkonusu bir klasrü okumak için.. dir ;satırı ile $hedef ile belirtilen klasr açılır. Bu klasrü dir nesnesi ile açtığımız zaman okumak için readdir , kapatmak içinde closedir fonksiyonlarını kullanamıyoruz. İyi peki ama nasıl okuyup nasıl kapatacağız klasrü.. dir fonksiyonu bir nesne olduğu için bu işlemleri yapan kendi methodları var.. Bir rnekle açıklamaya çalışalım:<?php$hedef="C:/windows/desktop/ftp/klasr1";$d = dir ; echo "Path: ".$d->path."<br>\n"; while($dosya=$d->read $d->close ; ?> Bo kodda $d=dir ; yazarak $hedef klasrü üzerinde yapılacak açma, okuma ve kapatma işlemleri ni gerçekleştirecek olan dir classının $d ye atadık. ve dir ; diyerek klasrü açmış olduk. dir nesnesini iki zelliği vardır. Bunlar path ve handle dir. Path zelliği klasrün adresini verir. echo "path :".$d->path; yazılarak bu nesnenin zelliğine erişilir. while($dosya=$d->read yukarıdaki dngünün amacı ve nasıl işlediği yukarıda anlatımıştı. Burada sadece açıklanacak nokta$dosya=$d->read ; satırıyla $d nesnesinin read methoduna erişilir. ve dosya adı $dosya değişkenine aktarılır. $d->close ; satırıylada bu nesnenin close methodu kullanılarak klasr kapatılır. Bu tip kapatma sadece dir nesnesi ile açılan klasrlerde kullanılır. Bu nesnenin birde rewind methodu vardır. Bu method açılan klasr akımını yani bağlantıyı resetlemek için kullanılır. Grünürde bir faydası yok.(Ben saçmalamaya başladım. yahu su rewinddir komutunun ne işe yaradığını tam olarak bilen biri buraya onu eklerse bende saçmalamayacağımJJJ) Peki şimdi bu komutlarla ne yapabiliriz diye düşündük ve aklımıza şyle birşey geldi. yle bir script yazalımki sayfa her çağrılışında farklı bir resmi ekrana basılsın. RN-2: <?php $hedef="c:/windows/desktop/ftp/klasr1";$i=0; chdir ;$link=@opendir ; //klasrü açıyoruzif while($dosya=readdir { if { $tip=filetype ; if }}closedir ; srand microtime 1000000); $limit=sizeof ; //$dosyadizi dizsinin eleman sayısını ğreniyoruz. $no = rand(0,$limit-1); //0 ile $dosyadizi dizisinin eleman sayısının bir eksiği arasında rastgele sayı //üretiyoruz. echo "<img src=\"$hedef/$dosyadizi \" >";

oturup kendin yazdiysan saygi duyarim ama, baska bi yerden copy paste yapiyosan, yapma be kardesim link ver biz o bi satirdan gidebiliriz kaynaga... Laaaaaan.