WwW.HacKbanK.Gen.TR (ArÅŸiv Ana sayfa) => Web Tasarım

Konu: Ayrıntılı PHP

Sayfa: [ 1 ]

__-_ßadkurt_-__ 14.10.2008 01:54:47
Rasmus Lerdorf,  tarihin ilk dönemlerinde yani Internet'in henüz yayıldığı 1990'ların ortalarına doÄŸru iÅŸ arıyordu; hayat öyküsünü bir kiÅŸisel sayfada yayınlamak ve baÅŸvuracağı yerlere bu sayfanın adresini verebileceÄŸini düşündü. Fakat o dönemde özellikle üniversitelerin Unix aÄŸlarında kurulan Web Sunucularda kiÅŸisel sayfa yapmak kolay deÄŸildi. Rasmus, kendisi için hazırladığı yazılımın Web'e aÅŸina olmayanlar starafından da kolayca kullanabileceÄŸini düşündü. Bu yazılımın büyükçe bir bölümü Perl dilinden alınmıştı. Adına Personal Home Page (KiÅŸisel Ana Sayfa) dediÄŸi bu programın çok tutulması üzerine Rasmus Lerdorf, Internet Sitesi kuran herkesin birinci gün deÄŸilse bile ikinci gün farkına vardığı ihtiyacı, yani bir form yoluyla ziyaretçiden gelen bilgileri iÅŸlemeyi saÄŸlayan ekleri yazdı ve programın adı PHP/FI (Form Interpreter/Form Yorumlayıcı) oldu. Kimileri programın bu sürümüne PHP2 adını taktı; ve bu ad, programın çok deÄŸiÅŸmesine ve geliÅŸmesine raÄŸmen uzun süre deÄŸiÅŸmeden kaldı.

Rasmus Lerdorf, 1995'in ortalarında, Zeev Suraski, Stig Bakken, Shane Caraveo ve Jim Winstead ile bir grup kurdu ve PHP'yi Perl'den ödünç alma rutinlerle iş yapan bir paket olmaktan çıkartıp, Nesne-Yönelimli (Object-Oriented) bir programlama dili haline getirdi. Bu grup, bugün PHP4 adı verilen bu dili geliştirmekte ve yeni işlevsellikler kazanması için sürekli çalışmaktadır. PHP, Linux gibi, Açık Sistem kurallarına tabidir; isteyen programda istediği değişikliği yapabilir; ancak bu değişiklikten para kazanamaz ve yaptığı değişiklikleri isteyen herkese açıklamak zorundadır.

Linux'un önümüzdeki yıllarda en çok kullanılan iÅŸletim sistemi olacağı yolundaki bilgiler kuÅŸkusuz en çok Linus Torvalds'ı ÅŸaşırttı. Linux'un bu baÅŸarısındaki en önemli anahtar nokta olan açık kaynak geliÅŸtiriliyor ve dünyanın heryerinden yazılım geliÅŸtiricilerin desteÄŸini alıyor olması. Aynı baÅŸarıyı Web yazılım geliÅŸtirme dili PHP de gösteriyor. PHP bundan iki yıl öncesine kadar adı duyulmamış basit bir dildi. Ancak ÅŸimdi gerek performans gerek destek açısından diÄŸer Web yazılım geliÅŸtirme dilleri ile kolayca yarışıyor; hatta bunları fazlasıyla geçiyor. Hemen her türlü iÅŸletim sistemiyle çalışıyor olması da cabası. PHP, her türlü veritabanıyla sorunsuz çalışıyor olmasıyla ve  Zend derleyicisiyle daha da yaygınlık ve güç kazanacak. PHP ve açık kaynak olarak geliÅŸtirilmeye baÅŸlanan MySQL'in birlikte kullanıldıklarında yakaladıkları etkinlik binlerce Dolar verilerek alınan veritabanı ve uygulama dilleriyle yarışmanın ötesinde farklara sahip.

Türkiye'de PHP oldukça yeni kullanılmaya başlandı. Dünyadaki PHP kullanıcılarının tercih ettikleri PHP editörü PHPed'i bir Türk'ün geliştirmiş olması, hepimize haklı bir gurur veriyor. Ayrıca
          adresindeki oluÅŸum çok kısa sürede Türkiye'de PHP'nin layık olduÄŸu yeri alacağını gösteriyor.

Bu kitapçığı PHP'nin 4'ncü sürümüne göre yazdım. Burada verdiğimiz örnekleri uyguladığınızda beklenen sonucu alamazsanız, önce sizin sisteminizde kurulu PHP'nin sürümünü kontrol etmelisiniz.

Bununla birlikte bir programlama dilinin incelikleri, ancak kodlarınızı kendiniz yazarsanız öğrenilebilir. Örnek kodlardan, ancak kendi yazdığınız kodlar beklediğiniz sonucu vermediği taktirde, karşılaştırma amacıyla yararlanmalısınız. Sizi biraz da buna zorlamak için yer yer konuları bu kodların yazıldığı varsayımı ile ele alacağım.

Bugüne kadar PHP programlarrına .php3 uzatmasını vermek adeta gelenek halini almıştı; ancak PHP'nin 4'ncü sürümüyle birlikte, konfigürasyon ve INF dosyaları, yapılandırma sırasında işletim sistemlerine ve Web sunucularına varsayılan değer olarak sadece .php uzatmasını tanımasını bildiriyorlar. PHP programlarınıza bundan başka uzatmalar verecekseniz, Linux'ta Apache konfigürasyon dosyasını, Windows'da ise Registry kayıtlarını değiştirmeniz gerekir.

PHP'ye GiriÅŸ

C/C++, Pascal, hatta Visual Basic bilen kişiler için PHP öğrenmek hemen hemen bir öğleden sonrayı ayırmak suretiyle yapılabilecek bir iştir. Bu dillere aşina olmayanlar ise belki bir kaç öğleden sonralarını ayırmak zorunda kalabilirler! PHP, bir Script dilidir; yani kodları düz yazı dosyaları halinde kaydedilir ve kullanılacağı ortamda bir yorumlayıcı tarafından yorumlanır. Bu, PHP ile yazacağınız programları, derlemek yani ortaya bir EXE veya çalıştırılabilir başka bir dosya çıkartmaya gerek olmadığı anlamına gelir. Fakat PHP Script'lerinizi çalıştırabilmek için bu dili bilen bir programa ihtiyacınız vardır. Bu programın tek başına (komut istemci penceresinde veya terminal ekranında) çalışması mümkün olduğu gibi, Web Server tarafından da çalıştırılabilir olması gerekir. Başka bir deyişle Web Sunucu programının PHP anlar hale getirilmesini sağlamak zorundayız.

PHP yorumcusu, bugün Zend-çekirdeği adı verilen bir Scripting teknolojine dayalı olarak, Zeev Suraski ile Andi Gutmans tarafından sıfırdan, tamamen yeniden yazılmış bulunuyor. Zend, tıpkı Windows Script Host ve mesela Visual Basic for Applications (VBA) gibi, işletim sistemine kendisi ile uyumlu Script dilleriyle yazılmış programları çalıştırma imkanı kazandıran bir teknolojidir (Zend konusunda ek bilgiyi Internet'te
         
www.zend.com
adresinde bulabilirsiniz.) Bugün bu dilin resmî adı "PHP: Hypertext Preprocessor" (Hiper-metin ön-işlemcisi) olarak değiştirildi, ve çeşitli Web Server'ların PHP dili anlaması için gerekli yorumlayıcıları yeniden üretildi. 20 Ocak 200'de İsrail'de PHP'nin ilk uluslararası konferansı yapıldı ve 4'ncü sürümünün betası ortaya kondu.

Peki ama PHP nedir?

PHP ile artık oturup her türlü işlevselliği sahip programlar yazabilirsiniz; yani PHP başlı başına uygulama alanları bulabilecek düzeye ulaşmıştır. Başka bir deyişle PHP ile oyun programından tutun veritabanı yönetimine kadar hemen her türlü programı yazabilirsiniz. Bizi bu kitapçıkta ilgilendiren tarafıyla PHP, Web Sunucuya bir takım işler yaptırmak için program yazma dilidir. Tıpkı CGI/Perl veya ASP ya da ColdFusion, Java (Javascript değil!) gibi! PHP kodları, oluşturacağımız HTML sayfalarında HTML etiketlerinin arasında kendi özel ayracı içinde yazılır:

<html>
<?PHP
      echo ("Merhaba Dünya!");
?>
</html>
 


İster kiÅŸisel bilgisayarımızda, ister gerçek Internet ortamında olsun, bir Web Sunucu, ziyaretçinin (Internet istemci programının, Browser'ın) talep ettiÄŸi dosya adının uzatması olarak ".PHP,"  ".PHP2," ".PHP3," veya ".PHP4" görünce, kendine kendine, "Yine bana iÅŸ çıktı!" diye düşünür! Çünkü Web Server, uzatması ".htm" veya ".html" olan bir dosyayı, kendi sabit disklerinden birinde bulur ve zahmetsizce, ziyaretçinin bilgisayarına gönderir. Fakat, ".asp," .pl," ".cfm" gibi, ".PHP" uzatması, Web Sunucuya bu sayfayı olduÄŸu gibi, alıp ziyaretçinin Browser'ına göndermek yerine, önce PHP yorumlayıcıyı çağırarak, ona teslim etmesi gerektiÄŸini bildirir. PHP yorumlayıcısı (yani Windows ortamında PHP.exe veya 4'ncü sürümle gelen PHP4isapi.dll, Unix ve türevlerinde çalıştırılabilir PHP dosyası), kendisine teslim edilen bu belgede önce "<?PHP" ve "?>" ayraçları arasındaki PHP kodlarını seçerek alır ve gereÄŸi ne ise onu yapar. Bu ayraçların içinde kalan kodlar, bizim yapılmasını istediÄŸimiz iÅŸlemin komutlarıdır. HTML ile yetinmeyip, PHP kullanmamızın sebebi, bu komutların HTML'in yapayacağı ÅŸeyleri yapmasıdır.

HTML'in yapamayacağı ÅŸeylerin başında, Web Sunucusu'nda yapılacak iÅŸler vardır. Sözgelimi HTML etiketlerini kullanarak, Web Sunucusu'ndaki bir veritabanı dosyasını açıp, içindeki verileri okuyamayız. HTML yoluyla Web Sunucusu'nun sabit disklerindeki düz yazı dosyalarını da okuyamayız ve bu disklere dosya yazamayız. HTML etiketleri ile Web ziyaretçimizden bilgi edinebilir ve bunları Sunucu'ya yollayabiliriz; ama o kadar! Bu bilgileri iÅŸe yarar ÅŸekle sokmak için bize Server'da çalışan bir program gerekir. Server'da çalışan program, EXE ve DLL veya JSP (Java Server Pages)  gibi bir "gerçek program"; veya Perl, ASP ve PHP gibi Script diliyle yazılmış bir program olabilir. (Gerçek programları yazanlar, tabiî, sizin Script diliyle yazılmış programlara "program" demenize çok kızarlar! Ama bu Script pogramlarının program olmasını hiç engellemez.)

Ne diyorduk? Web Sunucu, ".PHP" uzatmasını görünce telaşa kapılır, bu dosyayı PHP yorumlayıcısına verir ve o da "<?PHP" ve "?>" ayraçları içindeki kodları icra eder, demiştik. Bu icraatın sonunda ortaya çıkan ürün eğer ziyaretçiye gönderilecekse, HTML etiketleri içinde gönderilir; yani ziyaretçi asla PHP kodlarını göremez. Kimi zaman PHP programımızın çalışması sonucu ortaya ziyaretçiye gönderilecek bir ürün çıkmaz; elde edilen sonuç ya başka bir programa (örneğin elektronik ileti gönderen bir Sendmail progamına) hammadde olarak verilir, ya da Server'da sabit diske yazılır. Fakat her durumda, Web ziyaretçimiz bizim PHP kodlarımızı göremez; bu Web sayfalarımızda PHP kodu kullanmamız halinde, sayfalarımızın Browser tarafından tanınması veya tanınmaması gibi bir durumun ortaya çıkmaması demektir. Ziyaretçi ne tür Browser kullanırsa kullansın, kendisine Sunucu'dan daima saf HTML kodu geleceği için, sayfalarımızı rahatça görebilecektir. Tabiî bir nokta var: Sayfalarımızda herhangi bir Browser'ın arızalı yorumladığı veya hiç yorumlayamadığı HTML etiketleri bulunabilir; ya da söz gelimi ziyaretçiye giden HTML'in içinde Browser'da çalıştırılacak olan başka Script kodları bulunabilir; ve Browser bu kodları anlamayabilir. Örneğin, HTML sayfanızda VBScript kodları kullanmış iseniz, Netscape ile sitenize bağlanmış olan kişiler bu kodun oluşturmasını istediğiniz etkiyi göremeyeceklerdir; çünkü Netscape VBScript anlamaz! PHP ile yazacağınız Web programlarının (eski deyimiyle "sayfaların") oluşturacağı HTML belgesinin Browser türleri ve sürümleri ile uyarlılığını sağlamak yine Web programcısı olarak sizin sorumluluğunuzdadır.

Özetlersek, PHP bir CGI programlama dilidir; bu dille, Web Sunucusu ile Web ziyaretçisi arasındaki buluşma noktası olan CGI'da bilgi alışverişi yapılabilir; Sunucu'da bulunan başka programlar çalıştırılabilir ve böylece Web sayfalarımıza HTML'in sınırlamalarının ötesinde hareket ve ziyaretçi ile etkileşme olanağı kazandırılabilir.

Sanırım iyi bir Web programcısı olarak şu anda ekrana "Merhaba Dünya!" yazdırmak için sabırsızlanıyorsunuz. Ama bunun için, PHP sayfanızı ya PHP-uyumlu bir Web Sunucusu'ndaki Web sitenize yüklemek, ya da kişisel bilgisayarınızdaki kişişel Web Sunucusu'na PHP öğretmek zorundasınız. Bu ikinci yöntemi kuvvetle tavsiye ederim; çünkü yazacağınız PHP programlarını gerçek Internet Sunucusunda sınamak, bazen arzu edilmeyen durumlara yol açabilir. Oysa kişinin bu denemeleri, evinde ve işyerinde kendi bilgisayarında yapması, çoğu zaman daha az başağrısı ve gözyaşına yol açar! En azından, PHP hatalarınızı ve gözyaşlarınızı sizden başka gören olmaz!

  

PHP ve Veritabanı

Kişisel bilgisayarınızdaki kişisel Web sunucusuna PHP öğretme işlemine geçmeden önce, hemen hemen PHP'nin ikiz kardeşi sayılan MySQL'den ve onun rakibi PostgreSQL'den kısaca söz edelim.

PHP'nin varlık sebeplerinin başında, ticarî Unix ve Microsoft Windows işletim sistemlerinden ayrı, ticarî olmayan Açık Sistem ortamlarında çalışan bir Script dili ile bu dille kullanılabilecek yine Açık Sistem ürünü bir veritabanı erişim ve yönetim aracına sahip olmak gelir. Perl, gerçi PHP'den çok önce Açık Sistem ürünü olarak, isteyen Web Programcısı'nın ücretsiz edineceği bir CGI programlama dili olarak Web'in ilk gününden beri Web Programcısının emrinde idi. Ama Perl, metin dosyalarından yazı çekmek ve bunları biçimlendirerek rapor haline getirmek amacıyla geliştirilen bir dil olduğu için, özellikle veritabanına dayalı işlemlerde programcıya çok güçlük çıkartıyordu. ASP ise (ASP desteği sağlayan ve ücretsiz Web sitesi veren firmaların giderek artmasına ve veritabanı konusunda hem kolaylık, hem de büyük bir etkinlik sağlamasına rağmen) çoğunlukla ücretli Web sitesi aldığımız ticarî amaçlı evsahibi (Hosting) firmalarının sağladığı bir teknoloji olarak görüldü. PHP, tasarımcılarının MySQL ve PostgreSQL teknolojilerini geliştiren kurum ve firmalarla yaptığı yakın işbirliği sonucu ikinci sürümünden itibaren veri-yönlendirmeli Web uygulaması alanında önemli bir araç olarak belirdi. Dolayısıyla, PHP kurulumu dendiği zaman, kendiliğinden, MySQL kurulumu da kastedilmiş olur. Şimdi PostgreSQL da ekleyebiliriz.

PHP, bir dildir; MySQL ve PostgreSQL ise bir demet sürücüdür. PHP ile, Web Server'a sayfanızı Internet ziyaretçisine göndermeden önce bir takım komutları icra etmesini, bir takım veri dosyalarını açıp içindeki bilgileri alıp bunları HTML kodlarıyla bezeyip, Browser'a bildiğimiz klasik HTML sayfası olarak göndermesi talimatını veririz. MySQL ve PostgreSQL ise, Windows sistemlerinde Denetim Masası'nda gördüğünüz ODBC Veri Kaynağı Yönetmeni adlı araç gibi, bir vertabanı sunucusu, yani Database Server pprogramlarıdır. Yakın zamana kadar bu iki veritabanı yönetim aracı arasında fazla bir çekişme yoktu. Ancak şimdi özellikle Linux kullanıcıları topluluklarında iki program arasında verimlilik testleri yapılıyor; hangisinin daha iyi olduğnuna ilişkin yoğun bir tartışma sürüyor. PHPBuilder.com uzmanları, yaptıkları bir çok denemede, MySQL'in daha hızlı ve daha etkin çalıştıkları sonucuna varıyorlar. (Bu konuda daha geniş bilgi edinmek için Internet'te
          adresine bakabilirsiniz.)

MySQL, bir kullanıcı lisansı 200 Dolar olan ticarî bir program iken 2000 yılı ortalarında GPL (GNU General Public License/GNU Kamusal  Lisans) uygulamasına geçmiÅŸ ve ücretsiz daÄŸtılır hale gelmiÅŸ bulunuyor. Buna göre MySQL'i bir ticarî uygulamanın içinde motor olarak kullanacaksanız üreteci firmaya lisans ücreti ödemeniz gerekir; bunun dışındaki uygulamalar için programı Internet'ten indirerek kullanabilirsiniz. PHP için MySQL'e gerek yoktur. PHP, bir NT veya Win9x tabanlı Web Server'da çalıştırılıyorsa, Microsoft'un ODBC sürücüleri ile çalışabilir; ve ODBC'nin okuduÄŸu bütün veritabanlarından veri çekebilir. (ODBC'nin Unix-Linux sürümü de vardır.)  Ayrıca PHP için Adabas, dBase, Empress, FilePro, Informix, InterBase, mSQL, Oracle, Solid, Sybase, Velocis ve bir çok Unix veritabanı yöneticisi için geliÅŸtirilmiÅŸ add-on (sonradan eklenen) modüller vardır. PHP, bir çok LDAP istemci programı için yazılmış API'lere de sahiptir. PHP ile IMAP, SMTP gibi Internet elektronik mektup protokollerini kullanmak da mümkündür.

Biz bu kitapçıkta örneklerimizde ve uygulamalarımızıda MySQ'den yararlanacağız. PHP-MySQL ikilisini kişisel bilgisayarımıza kurmak için önce gerekli programları Internet'ten indirmemiz gerekir. Bunun için şu adreslerden yararlanabilirsiniz:


         


         

  

PHP ve Veritabanı

Kişisel bilgisayarınızdaki kişisel Web sunucusuna PHP öğretme işlemine geçmeden önce, hemen hemen PHP'nin ikiz kardeşi sayılan MySQL'den ve onun rakibi PostgreSQL'den kısaca söz edelim.

PHP'nin varlık sebeplerinin başında, ticarî Unix ve Microsoft Windows işletim sistemlerinden ayrı, ticarî olmayan Açık Sistem ortamlarında çalışan bir Script dili ile bu dille kullanılabilecek yine Açık Sistem ürünü bir veritabanı erişim ve yönetim aracına sahip olmak gelir. Perl, gerçi PHP'den çok önce Açık Sistem ürünü olarak, isteyen Web Programcısı'nın ücretsiz edineceği bir CGI programlama dili olarak Web'in ilk gününden beri Web Programcısının emrinde idi. Ama Perl, metin dosyalarından yazı çekmek ve bunları biçimlendirerek rapor haline getirmek amacıyla geliştirilen bir dil olduğu için, özellikle veritabanına dayalı işlemlerde programcıya çok güçlük çıkartıyordu. ASP ise (ASP desteği sağlayan ve ücretsiz Web sitesi veren firmaların giderek artmasına ve veritabanı konusunda hem kolaylık, hem de büyük bir etkinlik sağlamasına rağmen) çoğunlukla ücretli Web sitesi aldığımız ticarî amaçlı evsahibi (Hosting) firmalarının sağladığı bir teknoloji olarak görüldü. PHP, tasarımcılarının MySQL ve PostgreSQL teknolojilerini geliştiren kurum ve firmalarla yaptığı yakın işbirliği sonucu ikinci sürümünden itibaren veri-yönlendirmeli Web uygulaması alanında önemli bir araç olarak belirdi. Dolayısıyla, PHP kurulumu dendiği zaman, kendiliğinden, MySQL kurulumu da kastedilmiş olur. Şimdi PostgreSQL da ekleyebiliriz.

PHP, bir dildir; MySQL ve PostgreSQL ise bir demet sürücüdür. PHP ile, Web Server'a sayfanızı Internet ziyaretçisine göndermeden önce bir takım komutları icra etmesini, bir takım veri dosyalarını açıp içindeki bilgileri alıp bunları HTML kodlarıyla bezeyip, Browser'a bildiğimiz klasik HTML sayfası olarak göndermesi talimatını veririz. MySQL ve PostgreSQL ise, Windows sistemlerinde Denetim Masası'nda gördüğünüz ODBC Veri Kaynağı Yönetmeni adlı araç gibi, bir vertabanı sunucusu, yani Database Server pprogramlarıdır. Yakın zamana kadar bu iki veritabanı yönetim aracı arasında fazla bir çekişme yoktu. Ancak şimdi özellikle Linux kullanıcıları topluluklarında iki program arasında verimlilik testleri yapılıyor; hangisinin daha iyi olduğnuna ilişkin yoğun bir tartışma sürüyor. PHPBuilder.com uzmanları, yaptıkları bir çok denemede, MySQL'in daha hızlı ve daha etkin çalıştıkları sonucuna varıyorlar. (Bu konuda daha geniş bilgi edinmek için Internet'te
          adresine bakabilirsiniz.)

MySQL, bir kullanıcı lisansı 200 Dolar olan ticarî bir program iken 2000 yılı ortalarında GPL (GNU General Public License/GNU Kamusal  Lisans) uygulamasına geçmiÅŸ ve ücretsiz daÄŸtılır hale gelmiÅŸ bulunuyor. Buna göre MySQL'i bir ticarî uygulamanın içinde motor olarak kullanacaksanız üreteci firmaya lisans ücreti ödemeniz gerekir; bunun dışındaki uygulamalar için programı Internet'ten indirerek kullanabilirsiniz. PHP için MySQL'e gerek yoktur. PHP, bir NT veya Win9x tabanlı Web Server'da çalıştırılıyorsa, Microsoft'un ODBC sürücüleri ile çalışabilir; ve ODBC'nin okuduÄŸu bütün veritabanlarından veri çekebilir. (ODBC'nin Unix-Linux sürümü de vardır.)  Ayrıca PHP için Adabas, dBase, Empress, FilePro, Informix, InterBase, mSQL, Oracle, Solid, Sybase, Velocis ve bir çok Unix veritabanı yöneticisi için geliÅŸtirilmiÅŸ add-on (sonradan eklenen) modüller vardır. PHP, bir çok LDAP istemci programı için yazılmış API'lere de sahiptir. PHP ile IMAP, SMTP gibi Internet elektronik mektup protokollerini kullanmak da mümkündür.

Biz bu kitapçıkta örneklerimizde ve uygulamalarımızıda MySQ'den yararlanacağız. PHP-MySQL ikilisini kişisel bilgisayarımıza kurmak için önce gerekli programları Internet'ten indirmemiz gerekir. Bunun için şu adreslerden yararlanabilirsiniz:


         


         

  

 Unix/Linux Sistemleri

Kurma işlemine Unix ortamından başlayalım. Burada Unix sistemi dediğimiz zaman Unix'in tekrar bilişim haritasında yerini almasını sağlayan Linux'u kastediyorum. Bunun için önce
          adresini ziyaret etmemiz gerekiyor. EÄŸer PHP uzmanı olacaksanız, burası sizin ikinci eviniz olabilir. Downloads köprüsünü tıklayarak açılacak sayfada Unix/Linux için kaynak kodunu bilgisayarınıza aktarın. PHP'yi kuracağınız bilgisayarda bir Web sunucu programı yoksa,
          adresinden apache_1.3.12.tar.gz (veya daha ileri) dosyasını da indirmeniz gerekir. Unix-Linux sistemleri için bilgisayarınızda "gcc C derleyici" bulunması gerekir. Linux sisteminizde örneÄŸin Red Hat Linux sürüm 5.2 gibi eski bir gcc derleyici varsa, gcc sürüm 2.8.1'i Internet'ten bulmanız gerekir.

PHP, bir Unix/Linux sisteminde müstakil yorumlayıcı veya Apache Web sunucusunun bir modülü olarak çalışmak üzere derlenebilir. PHP, müstakil yorumlayıcı olarak kurulduğunda, Web sunucusu, her ihtiyaç halinde PHP yorumlayıcısının bir örneğini çalıştırır. Bu, bir süre sonra Web sunucusunun bulunduğu işletim sisteminin yükünün artmasına ve işleyişinde yavaşlamaya yol açabilir. Oysa PHP, sunucunun bir modülü olarak kurulduğunda, bu sakınca ortaya çıkmaz. (Bu özelliği ile PHP, klasik CGI/Perl'ün çalışma tarzından ayrılır, ASP'nin ve ColdFusion'ın çalışma tarzına yaklaşır.) Bununla birlikte kötü niyetle veya beceriksizce yazılmış PHP programları modül olarak kurulmuş PHP'yi çökertirlerse, Web sunucusunu da çökertmiş olurlar; oysa müstakil PHP yorumlayıcı çökerse, Web sunucusuna bir şey olmaz.

Burada yapacağımız kurulum işlemi sırasında Linux kurulu olan bilgisayarımıza Apache Web sunucu programını, bu sunucunun kullanacağı güvenli Socket katmanını sağlayacak Mod_SSL programını, bu programın gerektirdiği OpenSSL aracını, MySQL veritabanı sunucusunu ve PHP Scripting dilini kurmuş olacağız.

PHP'yi Linux ortamında Apache Web sunucusuna modül olarak kurmak için sırasıyla şu işlemleri yapmamız gerekir (Sisteminizde gzip veya gunzip ile gcc and GNU make kurulu olduğunu varsayıyorum):

1. Sisteminizi root olarak başlatın ve sıkıştırılmış olarak alacağınız PHP ve Apache dosyalarını geniş yer olan geçici bir dizinde açın, ve o dizine gidin. Sözgelimi, Apache'nin tar-zip olarak sıkıştırılmış kaynak dosyalarının tmp adlı dizinde olduğunu varsayalım:
 
# cd /tmp
# gunzip –c apache_1.3.12.tar.gz  | tar xf –
 


Burada, indirdiğiniz Apache sürümü farklı ise onun adını yazacaksınız. Şimdi Apache'yi açtığınız klasöre gidin ve buradaki configure dosyasını çalıştırın:
 
# cd apache_1.3.12
# ./configure --prefix=/usr/local/apache
 


Buradaki örnekte Apache'yi /usr/local/apache dizinine koyduğumuza dikkat edin. Bu dizini, bir çok kurulumun varsayım olarak arayacağı dizin olduğu için tercih ediyoruz. Ama isterseniz siz Apache'yi başka dizine de kurabilirsiniz.

2. Sıra MySQL veritabanı sunucusunda. Linux'ta root oturumunda iken sıkıştırılmış dosyaları indirdiÄŸiniz geçici dizine  geçin ve dosyaları açın; sonra oluÅŸturulan dizine giderek, configure komutu ile veritabanı sürücüsünü yapılandırın:
 
# cd /tmp
# gunzip -dc mysql-3.22.32.tar.gz | tar xvf -
# cd mysql-3.22.32
# configure --prefix=/usr/local/mysql
 


Şimdi make komutu ile binary dosyalarını oluşturarak, ve sisteme yükleyelim:
 
# make
# make install
 


MySQL'in kullanım izinlerini belirlememiz gerekir. Aşağıdaki komutları yazarken "parola" kelimesi yerine vermek istediğiniz parola kelimesini yazmanız gerekir:
 
# scripts/mysql_install_db
# cd /usr/local/mysql/bin
# ./safe_mysqld &
# ./mysqladmin -u root password 'parola'
 


Kurulum işleminin başarılı olup olmadığını sınamak için, kurulum sırasında oluşturlan örnek veritabanı dosyalarını bulunup bulunmadığını soruşturabilir ve kendimiz yeni bir veritabanı oluşturabiliriz. Bunun için şu komutu yazalım:
 
# BINDIR/mysqlshow -p
# mysql -u root -p
 


Sistem "Enter password:" karşılığını verdiÄŸinde, yukarıda kullanım izinlerini belirlerken yazdığınız parolayı yazın; MySQL sunucusu çalışacak ve size kullanıcı izinlerinin bulunduÄŸu "mysql" ve sınama amacıyla oluÅŸturulan  "test" adlı iki veritabanının bulunduÄŸunu bildirecektir. Åžimdi kendi veritabanımızı oluÅŸturalım. MySQL sunucu komut istemcisi satırına ÅŸunu yazın (Bilgisayarın vereceÄŸi karşılıklardan ayırt etmek için kendi yazdıklarımızı koyu renkle gösteriyoruz):
 
mysql> create database deneme;
 


Sunucu "Query OK, 1 row affected (0.00 sec)" ÅŸeklinde karşılık verecektir.  Åžimdi bu veritabanını seçerek içinde deneme adlı ve içinde "no" ve "isim" adlı iki alan bulunan bir tablo oluÅŸturalım (MySQL komutları büyük harf-küçük harf ayrımı yapmaz; komutlardan sonra noktalı virgül konur). Burada koyu renkle gösterilen satırlar ve iÅŸaretler bize aittir:
 
mysql> use deneme;
Database changed
mysql> CREATE TABLE books (
-> no int(3) not null auto_increment,
-> isim char(50) not null,
-> unique(no),
-> primary key(no)
-> );
Query OK, 0 rows affected (0.00 sec)
 


Bakalım tablomuz başarılı şekilde oluşmuş mu?
 
mysql> show tables;
mysql> describe deneme;
Field Type Null Key Default Extra
no int(3) PRI 0 auto_increment
isim char(50)
2 rows in set (0.00 sec)
 


Çok güzel! Hem MySQL'i kurmuş, hem de ilk tablomuzu oluşturmuş bulunuyoruz. MySQL komutlarını daha ayrıntılı öğrenebilmek için MySQL'in
          adresindeki sitesini ziyaret edebilirsiniz. Åžimdilik MySQL'den çıkalım ve kuruluma devam edelim.

3. Sıra geldi PHP'ye!  PHP kaynak dosyasının bulunduÄŸu geçici dizine geçin, ve dosyaları açın; sonra açılan dosyaların bulunduÄŸu dizine gidin:
  
# gunzip -c PHP-4.0.1pl2.tar.gz | tar xf -
# cd PHP-4.0.1pl2
  


Şimdi configure dosyasını çalıştıracağız; bu komutun bir çok opsiyonu vardır; bunların tümünü görmek istiyorsanız, "configure --help" komutunu verebilirsiniz. Biz sadece PHP'ye MySQL ve Apache opsiyonlarını eklemekle yetineceğiz:
 
# ./configure --with-mysql=/usr/local/mysql \
--with-xml \
--with-apache=../apache_1.3.12 \
--enable-track-vars
 


Oluşan binary dosyalarını program dosyasına çevirerek, yükleyelim:
  
# make
# make install
  


Oluşan ini dosyasını lib dizinine koplayalım:
 
# cp PHP.ini-dist /usr/local/lib/PHP.ini
 


PHP.ini dosyasındaki bir çok özelliği değiştirerek, PHP'nin çalışma tarzını ayarlayabilirsiniz; örneğin şu satırı ekleyerek, PHP'nin azamî çalışma süresini arttırabilirsiniz:
 
max_execution_time = 60;
 


Bu iÅŸlemleri baÅŸarıyla bitirmiÅŸ olsak bile sistemin çalıştığını kontrol etmemiz gerekir. Önce Apache'nin çalıştığından emin olalım. Bunun için önce Apache'nin yapılandırılmasına PHP'nun eklendiÄŸinden emin olmamız gerekir. Kurulumu buradaki gibi yaptı iseniz /usr/local/apache/conf dizininde bulunan  httpd.conf dosyasını açın; ve "addtype for PHP4" satırların önündeki yorum (#) iÅŸaretlerini kaldırın; yani bu satır yorum olmaktan çıkıp yapılandırma komutu olsun:
 
#AddType application/x-httpd-PHP .PHP
#AddType application/x-httpd-PHP-source .PHPs
 


şeklindeki satırları şu şekle getirin:
 
AddType application/x-httpd-PHP .PHP
AddType application/x-httpd-PHP-source .PHPs
 


Şimdi Apache sunucusunu çalıştırabilir ve PHP desteğinin bulunup bulunmadığını sınayabilirsiniz:
 
# cd /usr/local/apache/bin
# ./apachectl configtest
Syntax OK
# ./apachectl start
./apachectl start: httpd started
 


"httpd started" ifadesi bize Apache'nin çalıştığını gösteriyor. Şimdi Browser'ınızı açın ve HTTP sunucusu olarak Apache'nin adresini yazın. Bu, bilgisayarınızın Domain adıdır; Apache'nin kurulu olduğu bilgisayarın IP numarasını da yazabilirsiniz.

Şimdi, bir düzyazı dosyasına şunları yazın:
 
<? PHPinfo(); ?>
 


Dosyayı PHP.PHP adıyla Apache'nin Web sunucu için kök dizin saydığı klasöre kaydedin. Browser'ınızın URL adresi alanına sunucu adıyla birlikte dosyanın adını yazın

Aldığınız sonuç, PHP'nin sistem ve sunucu hakkında ayrıntılı raporu ise, kendi kendinizi kutlayabilirsiniz: hem Apache sunucu, hem de PHP çalışıyor!

  

Linux'ta program derlediniz mi?

Daha önce hiç Linux programı derlemediyseniz, önce bazı kavramları açıklığa kavuşturalım:

tar: (tape archiver) birden fazla dosyayı tek dosya haline getirir ve sıkıştırır. Teyplere yedekleme amacıyla geliştirilmiştir. tar dosyaları sıkıştırılmışsa uzatması .gz, değilse .tar olur.

gcc: GNU'nun C derleyicisidir. İnsan tarafından okunabilen kaynak kodlarını makina tarafından okunabilen nesne (object) dosyalarına dönüştürür. C programlama diliyle yazılmış kaynak kodları içeren dosyaların uzantını .c olur. Nesne dosyalarının adının uzantısı genellikle .o olur. Derleyici başlık (header, uzantısı .h olan) dosyalarını bulamazsa derleme hatası verir.

make: henüz derlenmemiş kaynak dosyalarını derleyen yardımcı bir programdır. make, derleme talimatlarını Makefile adlı bir dosyadan alır.

ld: GNU'nun bağlayıcı (linker) programıdır. Nesne dosyalarını ve kitaplık denen dosyaları birbirine bağlayarak ortaya çalıştırılabilir bir program dosyası çıkartır. Genellikle Makefile'ın içinde linker'ın çalıştırılması talimatı bulunur ve sizin bu programı kullanmanız gerekmez.

ldconfig : paylaşılan kitaplık dosyalarını (shared librari) arar. Bu dosyalardan birden fazla program tarafından paylaşılır, ve dosya adlarında .so bulunur.

./configure : C derleyecisi ve header dosyalarının nerede olduğunu araştırır, ve vardığı sonuca göre Makefiles dosyasında değişiklik yapar.

  

Güvenli socket ve Internet Erişimi Katmanı

Kuracağınız Web sunucusu gerçek Internet'e açılacaksa, sisteminize Mod_SSL yeteneğini kazandırmanız gerekir. Bu sistemin rsaref-2.0 adında bir eki vardır; ancak Amerika dışında kurulan Web Sunucularda rsaref-2.0 ekinin kurulması gerekmez. Apache sunucusunu sadece PHP dosyalarınızı sınamak amacıyla kendi bilgisayarınıza kuruyorsanız, Mod_SSL kurmak şart değildir.

Bu işlemi yapmak zorunda iseniz, önce
          adresinden openssl-0.9.1c.tar.gz adlı dosyayı,
          adresinden de mod_ssl-2.6.5-1.3.12.tar.gz dosyasını indirin. Sonra sırasıyla ÅŸu iÅŸlemleri yapabilirsiniz:
 
# gunzip -dc openssl-0.9.5c.tar.gz | tar xvf -
# cd openssl-0.9.x
#./config --prefix=/usr/local/ssl \
-L`pwd`/../rsaref-2.0/local/rsaref -fPIC
# make
# make test
# make install
# cd ..
 


Şimdi Mod_SSL modülünü Apache ile kullanılacak şekilde kuralım:
 
# gunzip -dc mod_ssl-2.6.4-1.3.12.tar.gz |tar xvf -
# cd
# ./configure --with-apache=../apache_1.3.12
# cd ..
# cd apache_1.3.12
# SSL_BASE=../openssl-0.9.x \
RSA_BASE=../rsaref-2.0/local \
./configure \
--enable-module=ssl \
--activate-module=src/modules/PHP4/libPHP4.a \
--enable-module=PHP4 \
--prefix=/usr/local/apache \
--enable-shared=ssl
 [...ISS'ler buraya arzu ettikleri diÄŸer opsiyonları ekleyebilirler..]
# make


Bu noktada sistem binary dosyaların oluşturulduğunu ve kurulumun gerekli güvenlik sertifikalarını istediğini bildirecektir. Sertifika oluşturma konusunda fazla bilgi için,
          adresine bakabilirsiniz.) Diyelim ki sadece ISS'in yeri, firma adı ve bir iki diÄŸer bilgiden oluÅŸan özel bir sertifika oluÅŸturmakla yetineceksiniz. Bunun için ÅŸu komutu girin ve sistemin soracağı sorulara cevap verin:
 
# make certificate TYPE=custom
 


Åžimdi Apache'yi yeniden kurabiliriz:
 
# make install
 


Herşey yolunda gittiyse, sistem "You now have successfully built and installed the Apache 1.3 HTTP server," şeklinde başlayan uzun bir mesaj verecektir. Bu durumda Apache sunucusu şu komutla başlatılabilir:
 
/usr/local/apache/bin/apachectl start
 


Apache'yi güvenli iletişim katmanı desteği ile başlatmak istiyorsanız şu komutu yazın:
 
/usr/local/apache/bin/apachectl startssl


  

Windows-PWS ve IIS

PHP'yi Windows 95/98/NT/2000 işletim sistemlerinden biri ile çalışan bilgisayara kurmak için önce
          adresinden PHP-4.0.1pl2-Win32.zip veya daha ileri sürümdeki zip dosyasını almamız gerekir. Bu dosyayı açın ve içindekileri sözgelimi c:\PHP dizinine kopyalayın. (Dizini oluÅŸtururken "PHP," "PHP" veya "PHP" yazdığınıza dikkat edin!)

Daha önce Wihdows sistemine PHP 3.x kurmuÅŸ olanlar PHP 4.0'ün kurulumumu biraz farklı bulacaklardır. Bu, daha önce PHP kiÅŸisel ve Internet amaçlı Web sunucuda (PWS veya IIS) müstakil bir CGI programı olarak çalışırken ÅŸimdi buna ek olarak (tıpkı ASP gibi) DLL yoluyla, bir ISAPI modülü  olarak çalışmasının saÄŸlanmış olmasından kaynaklanıyor.

PHP'yi Windows 95 veya NT4.0 sisteminde kurulu bir PWS veya IIS için kuracaksınız, önce bazı önlemler almanız gerekiyor. NT 4.0 sistemlerinde IIS 4.0'ün bulunduğu Option Pack'in kurulması şart. Windows 95 sistemlerinde ise önce DCOM bileşenlerinin günceleştirilmesi gerekiyor. Bu dosyayı,
          adresinden alabilirsiniz.

PHP'yi müstakil çalışan CGI programı olarak kullanmayı düşünseniz bile daha önceki sürümlerinden farklı olarak bazı DLL dosyalarının Windows dizininde sistem alt-dizinine kopyalanması gerekir. Açtığınız Zip dosyasından çıkan ve C:\PHP dizinine kopyaladığınız dosyalar arasında bulunan MSVCRT.DLL ve PHP4TS.DLL adlı dosyaları Windows 9x sistemlerinde WINDOWS dizininde SYSTEM, NT/2000'de ise WINNT dzininde SYSTEM32 dizinine kopya edin. (Windows, MSVCRT.DLL dosyasının kullanılmakta olduğu bildirerek, kopyalamayı reddederse, kopyalamaya gerek yok demektir.)

  

IIS 4.0 ve 5.0

Windows NT/2000'e kurulu olan IIS 4.0 veya 5.0'e PHP desteği kazandırmak için, önce yukarıdaki gibi DLL dosyalarını gerekli yere kopyalayın. Açtığınız Zip dosyasından çıkmış olan PHP.ini-dist isimli düz yazı dosyasını Notepad ile açın ve "extension_dir=" satırını bularak, karşısındaki "./" yazısını silip yerine PHP dosyalarını kopyaladığınız dizinin adını (örneğin C:\PHP) yazın. PHP dizinin adını doğru yazdığınızı kontrol etmekte daima yarar vardır! Sonra ";browscap =" satırını bulun ve önündeki noktalı virgülü kaldırarak karşısındaki "extra/browscap.ini" kelimelerini c:\Winnt\browscap.ini olarak değiştirin. Bu dosyayı, PHP.ini adıyla Winnt dizinine kaydedin. (Windows dizininin Winnt adını taşıdığını varsayıyorum. Sizin Windows dizininiz başka ise, gerekli düzeltmeyi yapmanız gerekir.)

Internet Services Manager'ı açın; bu araç, NT 4.0'te Start menüsünde Programs/Option Pack'te, 2000'de ise Control Panel/Administrative Tools'dadır. Açılacak pencerede muhtemelen Default Web Server adını taşıyan Web sunucusunun adını sağ tıklayın:

  

Açılan listede Properties maddesini; açılan kutuda Home Directory sekmesini seçin; Configuration düğmesini tıklayın ve  yeni bir Application Mappings satırı eklemek üzere, Executable kutusuna PHP4isapi.dll dosyasının tam yolunu ve adını (örneÄŸin C:\PHP\ PHP4isapi.dll); Extension kutusuna ise .PHP yazın (IIS 4.0'te Method exclusions kutusunu boÅŸ bırakın) ve  Script engine kutusuna iÅŸaret koyun.

ISAPI Filters sekmesini seçin. Add düğmesini tıklayarak yeni bir ISAPI filtresi kaydı yapın. Açılacak kutuda filtre adı olarak PHP, yol olarak da PHP4isapi.dll dosyasının bulunduÄŸu dizinin yolunu  (örneÄŸin C:\PHP\ PHP4isapi.dll) yazın.

IIS'i tamamen durdurun; ama bunun için sadece Internet Services Manager'daki Stop düğmesini tıklamak yetmez; komut istemci (MSDOS Prompt) penceresinde net stop iisadmin yazın. Windows, bu servisin bağlı olduğu diğer bazı hizmetlerin de durdurulacağını bildirince "Y" yazın ve Enter'a basın. Şimdi IIS'i tekrar başlatmak için aynı pencerede net start w3svc yazın. Artık IIS'iniz PHP anlar hale gelmiş olmalı. Bunu, hemen sınayalım. Notepad veya bir başka düzyazı programıyla şunları yazın:

 
<? PHPinfo(); ?>
 


Dosyayı PHP.PHP adıyla IIS'in kök dizin saydığı klasöre kaydedin. Browser'ınızın URL adresi alanına sunucu adıyla birlikte dosyanın adını yazın.

Bravo! İşte yeni bir dil öğrenmiş Web sunucuya sahip oldunuz.

Browser Yetenek Dosyası: Browscap.ini

Windows sistemine kurulu bir Web Sunucu programına (PWS, IIS veya Apache Win32) PHP yeteneği kazandırabilmek için PHP'nin talep sahibi Browser'ın yeteneklerini bir dosyadan okuması gerekir. Bu dosyanın adı browscap.ini dir.

Internet'te
          dosyasını alarak açın ve çıkacak "browscap.txt" dosyasının adını "browscap.ini" olarak deÄŸiÅŸtirerek Windows/Winnt klasörüne kopyalayın.
NOT:ALınTı

__-_ßadkurt_-__ 14.10.2008 22:27:07
PHP DEVAMI1
PWS 4.0

Windows'un 95/98/SE/Me türlerine kişisel Web sunucu programı olarak Personal Web Server (PWS 4.0) kurulmalıdır. PHP Zip dosyasından çıkacak DLL'leri Windows dizininde System klasörüne kopyaladıktan sonra, Zip dosyasından çıkmış olan PHP.ini-dist isimli düzyazı dosyasını Notepad ile açın ve "extension_dir=" satırını bularak, karşısındaki "./" yazısını silip yerine PHP dosyalarını kopyaladığınız dizinin adını (örneğin C:\PHP) yazın. PHP dizinin adını doğru yazdığınızı kontrol edin! Sonra ";browscap =" satırını bulun ve önündeki noktalı virgülü kaldırarak karşısındaki "extra/browscap.ini" kelimelerini c:\Windows\browscap.ini olarak değiştirin. Bu dosyayı, PHP.ini adıyla Windows dizinine kaydedin. Daha önceki sayfalarda göreceğiniz şekilde Browscap.ini dosyasının dosyasını Windows dizinine kopyalamış olmanız gerekir. (Windows dizininin Windows adını taşıdığını varsayıyorum. Sizin Windows dizininiz başka ise, gerekli düzeltmeyi yapabilirsiniz.)

Şimdi, açtığınız PHP Zip dosyasının içinden çıkan PWS-PHP4.reg adlı dosyayı bir düzyazı programıyla, örneğin Notepad ile açın. ".PHP"="[PUT PATH HERE]\\PHP4isapi.dll" yazılı satırı PHP dosyalarını koyduğunuz dizine göre, örneğin şöyle değiştirin:

 
".PHP" = "C:\\PHP\\PHP4isapi.dll"
 


Burada çok dikkat etmeniz gereken nokta, ters-bölü işaretlerinin başka yerlerde normal olarak yazdığımız gibi bir adet değil, iki adet olmasıdır. Dosyayı kaydettikten sonra, iki kere tıklayın ve Windows'un Registry'de değişiklik yapmayı isteyip, istemediğinize ilişkin sorusuna Evet yanıtını verin. Tamaam! Sizin de PHP bilen bir PWS'iniz oldu. Ama bunu bir sınayalım. Ve bunu bir Merhaba Dünya programı ile yapalım ki, gelenek bozulmasın!

Düzyazı programınızla şu metni merhaba.PHP adıyla PWS'in Web için kök dizin saydığı (muhtemelen C:\Inetpub\wwwroot) klasöre kaydedin:

 
<html>
<?PHP
           echo ("Merhaba Dünya!");
?>
</html>


Sonra Personal Web Manager kutusunda, Ana başlıklı bölümde, Yayımlama kısmındaki "http://" diye başlayan ve kişisel Web sunucunuzun adı ile devam eden köprüyü tıklayın. Varsayılan Browser'ınız, kişisel Web sunucunuzun ana sayfasını açacaktır. Browser'ın URL adres bölümüne, merhaba.PHP yazın ve klavyede Enter tuşuna basın. Eğer gerçekten PWS'iniz, PHP öğrenmişse, size ve dünyaya merhaba diyecektir.

  

Windows'da Apache!

NT sisteminizde ISS değil de Apache for Win 32 Web Server programını çalıştırıyorsanız, sürümüne göre httpd.conf veya srm.conf dosyasına şu ekleri yapmanız gerekir:
 
ScriptAlias /PHP3/"c:/path-to-PHP-dir/"
AddType application/x-httpd-PHP3 .PHP3
Action application/x-httpd-PHP3"/PHP3/PHP.exe"
  


  

Windows'da MySQL

PHP, Windows ortamında, Windows'un ODBC sürücülerini kullanarak, sürücüsü bulunan bütün veritabanlarına ulaşabilir. Ancak Windows ortamında geliştirseniz bile, Web sitenizi, Unix tabanlı ve ODBC-uyumlu olmayan bir sunucuya gönderebilirsiniz. Bu durumda sayfalarınızda kullanacağınız verileri muhtemelen MySQL aracılığıyla veritabanından çekeceksiniz demektir. Bu yüzden Windows sisteminize MySQL kurmak ve veritabanlarını bu araçla geliştirmeniz yerinde olur. Unix/Linux ortamında ücretsiz olmakla birlikte MySQL, Windows için bedeli paylaşımlı (shareware) olarak edinilebilir. Benioku dosyasında belirtildiğine göre, programı eğitim amacıyla ve 30 günü aşmamak kaydıyla kullanıyorsanız, ücret ödenmesi gerekmiyor. Diğer durumlarda TCX firmasının Internet'te
          adresindeki sitesindeki formları doldurarak lisans alınması gerekiyor. Bu programı, MySQL'in
          adresinden edinebilirsiniz. Bu adresteki mysql-shareware-3.22.34-win.zip dosyasını alarak, bir geçici dizinde açın. (Sisteminiz gerçek Internet sunucusu olarak ticarî amaçlı hizmet saÄŸlayacaksa ÅŸu dosyayı almanız gerekir:
         ) Shareware sürümünü içeren dosyayı açtığınızda ortaya çıkacak setup.exe programı MySQL'i kuracaktır.

MySQL Server'ın Windows'da da tıpkı Linux'ta olduğu gibi çalıştırılması ve durdurulması gerekir. MySQL'in paylaşım sürümünü kullanmak için Windows sistemlerinde mysqld-shareware.exe programını çalıştırmanız gerekir. DOS komut istemcisini açın ve "C:/mysql/bin" dizinine giderek, sırasıyla şu komutları verin:

 
mysqld-shareware
mysqlshow
mysqlshow -u root mysql
mysqladmin version status proc
  


Şimdi MySQL server çalışıyor ve biraz sonra PHP yoluyla kişisel Web Server'ınıza hizmet vermeye hazır demektir. Bu komutları icra ettiğiniz sırada bir hata mesajı ile karaşılaşırsanız, MySQL'in kuruluşunda hata yapmış olabilirsiniz. DOS ekrarında test ve MySQLl veri tabanlarının varlığını ve hizmete girdiğini gösteren mesajlar görürseniz, MySQL güzelce çalışıyor demektir. Bunu bir de Browser ile ve PHP yoluyla sınayalım:

Yukarıda IIS'e PHP desteği kazandırma çalışmaları sırasında oluşturmadı iseniz, düz yazı programınızda şu tek satırı yazın; php.php adıyla, kişisel Web'inizin kök dizinine kaydedin:

 
<? PHPinfo(); ?>
  


Browser'ınızı açın; URL hanesine örneğin
          yazın. Açılacak sayfada iki ÅŸeye dikkat edin: MySQL ve ODBC bölümleri var mı? MySQL bölümü varsa; kendinizi yeniden kutlayın! ODBC bölümü yoksa, muhtemelen sisteminizde Microsoft'un Open Database Connectivity (Açık Veribanı BaÄŸlantısı) sürücüleri kurulu deÄŸil demektir. (Windows'da Denetim Masası'nda ODBC simgesini görmüyorsanız, MS'un sitesinden gerekli kur programını indirmeniz gerekebilir. Linux'ta ise MyODBC programı ile bu imkanı kazanabilirsiniz.)

Bir kere daha tekrar etmek gerekirse, PHP ile veritabanına dayanan sayfalar yapmak için mutlaka ve sadece MySQL sürücülerini kullanmak gerekmez. Bunun yerine MS'un ODBC sürücülerini kullanabilirsiniz. Ancak Web sitenize evsahipliği yapan firmanın size ODBC desteği verip vermediğini öğrenmeniz gerekir. Aslında aynı şekilde, evsahibi firmanın MySQL desteği verip vermediğini de öğrenmek zorundasınız. (PHP ile MS-ODBC sürücülerini kullanabilmek için Andrew Stopford'un ASPToday sitesindeki
          yazısında geniÅŸ bilgi bulabilirsiniz.)

Geçmiş olsun. Bana sorarsanız, PHP ile dolu yeni bir hayata başlamak için en önemli adımı attınız. Bundan sonrası, sadece PHP dilini öğrenmekten ibaret. Dilin üretecilerinden Zeev Suraski, bu yılın başında İsrail'de yapılan ilk uluslararası PHP Konferansı'nda "PHP öğrenmek zor mu?" diye soran bir bilgisayar meraklısına şu cevabı veriyordu: "Bir haftadan fazla zaman ayırmanız gerekiyorsa, sizin için zor demektir!"

  

PHP'nin Yapı Taşları

PHP, bir programlama dili olarak, değişkenler, değişkenlerin değerleriyle bir işlem yapmayı sağlayan işlemciler, işlemcilerle oluşturulan deyimler ve nihayet bunların tümünü toplu olarak kullanmamızı sağlayan işlevlere (fonksiyonlara) sahiptir. PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkanına ve bunların kullanılmasını sağlayan metodlara da sahiptir. Bütün bu imkanları kullanarak, PHP ile bir veritabanından veri alarak, bunları HTML etiketlerinin değerleri olarak kullanabiliriz; Web sitemizi ziyaret eden kişilerden bilgi alabiliriz, bu bilgilerle işlemler yapabiliriz. PHP'nin çeşitli komutlarını, deyimlerini ve fonksiyonlarını kullanarak, programımızın çalıştığı Web sunucusunun bulunduğu bilgisayara da çeşitli dosya işlemleri yaptırabiliriz.

Bu tür karmaşık uygulamalara geçebilmek için önce, PHP dilinin unsurlarını biraz yakından inceleyelim.

  

PHP programını durdurmak

Şimdi belki PHP'yi durdurmayı hiç düşünmüyorsunuz; ama ilerde bir fonksiyonun vereceği sonucun bütün programın durdurulmasını gerektiği zamanlar olabilir. PHP'nin resmî el kitabına bile ilk baskısında konulması unutulmuş olan programı durdurma komutu, exit kelimesidir; hiç bir parametre almadan çalışır

  

DeÄŸiÅŸkenler

Programcılıkta işlemlerimizi değişkenlerle yaparız. Değişkeni bir kap gibi düşünebilirsiniz. Sözgelimi "Gün," değişkenin adı ise bu değişkenin değeri Pazar, Pazartesi, Salı, vd., olabilir. Her değişken, türüne göre, ya bir ya da daha fazla değer tutar. Adından da anlaşılacağı gibi değişkenin değeri değişir! Bu değişikliği biz yapabiliriz; programın kendisi yapabilir.

PHP'de de, bir çok başka bilgisayar programlama dilinde olduğu gibi değişkenlerin içine bir değer konmadan önce tanımlanması mümkündür; fakat gerekli değildir. Değişkenleri adının önüne $ işareti koyarak tanımlarız:
 
$adi;
$soyadi;
$123;
$sevdigiRenk;
 


Değişkenler, harf, rakam veya alt çizgi (_) ile başlayabilirler; bu karakterleri içerebilirler; ama içinde boşluk veya diğer işaretler bulunamaz. PHP değişkenleri her türlü değişken tutabilirler: bir değişkenin adının yazılış şekli onun tutabileceği değerin niteliğini belirlemez. Dolayısıyla, "$adi" değişkenin değeri "Reşit" da olabilir, "1255" de olabilir.

PHP'de genellikle deÄŸiÅŸkenleri deÄŸerini atayarak belirleriz:
 
$adi = "ReÅŸit";
$soyadi = "Gülen";
$123 = 123;
$sevdigiRenk = "yeÅŸil";
 


Değişkenler, kullanıldıkları işleme, taşıdıkları değeri verirler:
 
print $adi;
 


komutu, eğer değeri "Reşit" ise "Browser penceresine "Reşit" kelimesini yazdırır.

PHP'de özel bir değişkene değişken adı olarak kullanılacak değerleri de atayabiliriz:
 
$adi = "ReÅŸit";
$degisken = "adi";
print $$degisken;
 


Burada Browser penceresine yine "Reşit" kelimesi yazılacaktır; çünkü PHP $degisken adlı değişkenin "adi" adlı değişkeni tuttuğunu bilecek ve iki Dolar işaretini görünce, $degisken'in değerini değil, onun tuttuğu değişkenin değerini yazacaktır. Bu, size şu anda karışık görünebilir. Daha sonra döngüleri gördüğümüzde bu tekniği bir satırlık kod ile yüzlerce değeri yazdırmakta kullanacağız. Bu teknik şöyle de kullanılabilir:
 
$degisken  = "adi";
$$degisken = "ReÅŸit";
print "$adi";
print $$degisken;
print "${$degisken}";
print "${'adi'}";
 


Buradaki dört "print" komutu da Browser'a "Reşit" kelimesini yazdıracaktır.

PHP'de bir değişkenin tuttuğu değer, bir başka değişkene atanabilir. Bu ya duragan, ya da dinamik olarak yapılır. Duragan yöntemde:
 
$birinci_degisken  = "Nurcan";
$ikinci_degisken = $birinci_degisken;
$birinci_degisken = "Tülay";
print $ikinci_degisken;
 


Buradaki "print" komutu Browser  penceresine "ReÅŸit" kelimesini yazdıracaktır. İki deÄŸiÅŸken arasındaki deÄŸer alış-veriÅŸi birinci deÄŸiÅŸkenin tuttuÄŸu deÄŸeri deÄŸiÅŸtirmeden önce olduÄŸu için, ikinci deÄŸiÅŸken birinci deÄŸiÅŸkenin ilk deÄŸerini almış oldu. Fakat kimi zaman iki deÄŸiÅŸken arasındaki deÄŸer alış-veriÅŸi sürekli (dinamik) olsun isteriz. PHP, buna, ilk atama sırasında & iÅŸareti kullanırsak izin verir:
 
$birinci_degisken  = "Nurcan";
$ikinci_degisken = &$birinci_degisken;
$birinci_degisken = "Tülay";
print $ikinci_degisken;
 


Buradaki "print" komutu ise Browser  penceresine "Tülay" kelimesini yazdıracaktır. Çünkü iki deÄŸiÅŸken arasındaki deÄŸer alış-veriÅŸi birinci deÄŸiÅŸkenin tuttuÄŸu deÄŸeri deÄŸiÅŸtirmeden önce halde, ikinci deÄŸiÅŸkene birinci deÄŸiÅŸkenin deÄŸerini dinamik olarak atamış olduk. Atama iÅŸlemi sırasında & iÅŸareti kullandığımız için, birinci deÄŸiÅŸkenin deÄŸeri deÄŸiÅŸtiÄŸinde ikinci deÄŸiÅŸkenin de deÄŸeri deÄŸiÅŸecektir.

NoT:ALıntı

__-_ßadkurt_-__ 14.10.2008 22:38:24
PHP DEVAMI 2


Veri Türleri

PHP, deÄŸiÅŸkenlere, tuttukları deÄŸere göre farklı bellek alanı  tahsis eder; bu bakımdan verilerimizin türü etkin bir programcılık açısından önem taşır. Ayrıca PHP, diÄŸer bütün programlama dilleri gibi belirli veri türleri ile belirli iÅŸlemleri yapar veya yapamaz. ÖrneÄŸin, ancak iki sayı arasında aritmedik toplama yapılabilir. İki metin tutan deÄŸiÅŸken aritmetik olarak toplanamaz; ancak içerdikleri deÄŸerler ardarda eklenebilir. Ne var ki, PHP sizin aritmetik toplama mı, yoksa ardarda ekleme mi yapmak istediÄŸinizi bilmek durumunda deÄŸildir. (PHP'ye 'muazzam dil' dedik; içinde yapay zekâ var demedik!) Dolayısyla deÄŸerleri 5 ile 6 olan iki deÄŸiÅŸkeni topladığınız zaman ortaya 11 yerine 56 çıkarsa, kabahati PHP'de deÄŸil, deÄŸiÅŸkenlere veri atayan kiÅŸide (büyük bir ihtimalle kendinizde) aramalısınız.

PHP açısından dünyada altı tür değer vardır:

Tamsayı (Integer): 5,124, 9834 gibi
Çift (Double): 3,567 gibi
Alfanümerik (String): "Reşit" gibi
Mantıksal (Boolean): doğru (true)/yanlış (false) gibi
Nesne (Object)
Dizi (Array)

Bazı uzmanlara göre, gerçekte PHP'de mantıksal (boolean) değişken türü yoktur. B kanının sebebi, PHP'nin true (doğru) ya da false (yanlış) olarak atadığımız değerleri 1 ve boş/null değerlere çevirmesi, mantıksal olarak sorgulandığında 0 dışındaki tam ve ondalık değişkenleri TRUE, 0'ı FALSE sayması, ve boş alfanümerik değişkenleri FALSE, dolu alfanümerik değişkenleri ise TRUE olarak değerlendirmesidir. Ancak daha sonra gereceğimiz gibi PHP, Mantıksal/Boolean adında bir değişken değiştirme fonksiyonuna sahiptir ve bu tür değişkenlerin türü sorulduğunda "boolean" karşılığını verir

  

Tür Değiştirme

DeÄŸiÅŸkenlere atadığımız deÄŸerlerinin türlerini genellikle biliriz; ama yüzlerce deÄŸiÅŸkenle uÄŸraÅŸtığımız bir Web programında deÄŸiÅŸken türünü unutmak çok kolaydır. Kimi zaman da deÄŸiÅŸkenlere program yoluyla deÄŸer atarız; baÅŸka bir deyiÅŸle programımız bazı deÄŸiÅŸkenleri kendisi oluÅŸturabilir, ve bunlara kendisi deÄŸer atayabilir. Bu tür program yoluyla atanan deÄŸerlerin de türünde kuÅŸkuya kapıldığımız anlar olabilir. Bir deÄŸiÅŸkenin deÄŸerinin türü hakkında kuÅŸkunuz varsa, en emin yol bunu PHP'nin kendisine sormaktır. Bu sorgulamayı gettype() fonksiyonu ile yaparız.  

Şimdi, bir PHP programı yazalım, bir takım değişkenlere değerler atayalım ve bunların türlerini PHP'ye soralım. Bir düzyazı programı ile şu metni yazın ve turler.php adıyla kaydedin:
 
<HTML>
<HEAD>
<TITLE>PHP'de Degisken Turleri</TITLE>
<m3ta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<m3ta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<B>
<H2>
<?php
        $sayi  = 5;
        print("Birinci deÄŸiÅŸkenin adı: \$sayi
");
        print("DeÄŸeri : ");
        print "$sayi
";
        print("Türü : ");
        print gettype( $sayi ) ; //tamsayi/integer
        print "
";
        print "
";
 
        $alfanumerik  = "ReÅŸit";
        print "İkinci deÄŸiÅŸkenin adı: \$alfanumerik
";
        print "DeÄŸeri : ";
        print "$alfanumerik
";
        print("Türü : ");
        print gettype( $alfanumerik ) ; //alfanümerik/string
        print "
";
        print "
";
 
        $ondalik  = 5.1234;
        print "Üçüncü deÄŸiÅŸkenin adı: \$ondalik
";
        print "DeÄŸeri : ";
        print "$ondalik
";
        print("Türü : ");
        print gettype( $ondalik ) ; //çift,ondalık/double
        print "
";
        print "
";
 
        $mantiksal  = true;
        print "Üçüncü deÄŸiÅŸkenin adı: \$mantiksal
";
        print "DeÄŸeri : ";
        print "$mantiksal
";
        print("Türü : ");
        print gettype( $mantiksal ) ; //mantıksal/boolean
        print "
";
        print "
";
?>
</H2>
</B>
</BODY>
</HTML>
 


Bu programı çalıştığımızda karşımıza şöyle bir görüntünün gelmesi gerekir:

  

Burada mantıksal (boolean) deÄŸer olarak doÄŸru anlamına true deÄŸeri atadığımız halde, PHP'nin bu deÄŸiÅŸkenin deÄŸeri olarak 1'i gösterdiÄŸine dikkat edin. PHP'de bir fonksiyon, elde ettiÄŸi deÄŸer doÄŸru ise sonuç olarak 1 deÄŸerini verir. (Yanlış/false deÄŸerinin neye çevrildiÄŸini bulabilir misiniz?)  

Kimi zaman bir değişkene atadığımız değerin türünü değiştirmek gerekir. Bunu settype() fonksiyonu ile yaparız. Elimizde böyle bir imkan var diye, bir değişkenin alfanümerik (String) olan değerini sayıya çevirebileceğini sanmayın. PHP buna çok kızar! Şu örneği de tur_degistir.php adıyla kaydedelim:
 
<HTML>
<HEAD>
<TITLE>PHP'de Degisken Turleri</TITLE>
<m3ta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<m3ta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<B>
<H2>
<?php
        $degisken  = 5.67890;
        print("DeÄŸiÅŸkenin  deÄŸeri : ");
        print "$degisken
";
        print("Türü : ");
        print gettype( $degisken ) ; //çift,ondalık/double
        print "
";
        print "
";
 
        print "İlk deÄŸiÅŸtirme iÅŸlemi: Alfanümerik/String:
";
        settype( $degisken, string ); //alfanümerik/string
        print "DeÄŸeri : ";
        print "$degisken
";
        print("Türü : ");
        print gettype( $degisken ) ; //alfanümerik/string
        print "
";
        print "
";
 
        print "İkinci deÄŸiÅŸtirme iÅŸlemi: Tamsayı/Integer:
";
        settype( $degisken, integer ); //Tamsayı/Integer
        print "DeÄŸeri : ";
        print "$degisken
";
        print("Türü : ");
        print gettype( $degisken ) ; //Tamsayı/Integer
        print "
";
        print "
";
 
        print "Üçüncü deÄŸiÅŸtirme iÅŸlemi: Ondalık/Double:
";
        settype( $degisken, double ); //çift,ondalık/double
        print "DeÄŸeri : ";
        print "$degisken
";
        print("Türü : ");
        print gettype( $degisken ) ; //çift,ondalık/double
        print "
";
        print "
";
 
        print "Dördüncü deÄŸiÅŸtirme iÅŸlemi: Mantıksal/Boolean:
";
        settype( $degisken, boolean ); // Mantıksal/Boolean
        print "DeÄŸeri : ";
        print "$degisken
";
        print("Türü : ");
        print gettype( $degisken ) ; // Mantıksal/Boolean
        print "
";
        print "
";
?>
</H2>
</B>
</BODY>
</HTML>
 


Bu programı çalıştırdığımızda, ilk atadığımız değerin ondalık/double olarak belirlendiğine dikkat edin. Bu değerin türünü alfanümerik/string olarak değiştirdiğimizde değişmediğini görüyoruz. Fakat tamsayı/integer'a çevirdiğimizde PHP değerin tamsayı bölümünü alıyor; ondalık-kesir bölümünü atıyor. Nitekim daha sonra değişkerin türünü yeniden ondalık yaptığımız halde, atılan bu bölüm geri gelmiyor. Son olarak değişkeni mantıksal ifade olarak değiştirdiğimizde, değerin doğru/true olduğunu anlıyoruz; değer olarak bize 1 dönüyor. PHP, sıfır dışındaki tüm değerleri doğru/true'ya çevirir; sıfır'ı ise yanlış/false olarak atar ve boş/null değer verir.

Şu anda PHP'yi tam bilemediğimiz için nerede kullanılır kestiremiyoruz, ama diyelim ki burada olduğu gibi, değişkeni bir daha düzelmeyecek şekilde değişikliğe uğratmak istemeyebiliriz; fakat yine de değerinin türünü değiştirmek isteyebiliriz. Bunu da nerede kullanabiliriz, şu anda bilmiyoruz. Ama diyelim ki, böyle bir işlem yapmaya ihtiyacımız oldu! Hatırlıyor musunuz, biraz önce özel bir şekilde bir değişkene başka bir değişkenin adını değer olarak vererek, aslında bu değişkenin ilk değişkenin değerini almasını sağlamıştık. Burada da aynı tekniği kullanabiliriz. Bu kodu da tur_kopyala.php adıyla kaydedin:
 
<HTML>
<HEAD>
<TITLE>PHP'de Degisken Turleri Kopyalama (Casting)</TITLE>
<m3ta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<m3ta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<B>
<H2>
<?php
        $degisken  = 3.1418;
        print("DeÄŸiÅŸkenin  deÄŸeri : ");
        print "$degisken
";
        print("Türü : ");
        print gettype( $degisken ) ; //çift,ondalık/double
        print "
";
        print "
";
 
        print "İlk kopyalama iÅŸlemi: Alfanümerik/String:
";
        $kopya_degisken =  ( string ) $degisken; //alfanümerik/string
        print "DeÄŸeri : ";
        print "$kopya_degisken
";
        print("Türü : ");
        print gettype( $kopya_degisken ) ; //alfanümerik/string
        print "
";
        print "
";
 
        print "İkinci kopyalama iÅŸlemi: Tamsayı/Integer:
";
        $kopya_degisken =  ( integer ) $degisken; //Tamsayı/Integer
        print "DeÄŸeri : ";
        print "$kopya_degisken
";
        print("Türü : ");
        print gettype( $kopya_degisken ) ; //Tamsayı/Integer
        print "
";
        print "
";
 
        print "Üçüncü deÄŸiÅŸtirme iÅŸlemi: Ondalık/Double:
";
        $kopya_degisken =  ( double ) $degisken; //çift,ondalık/double
        print "DeÄŸeri : ";
        print "$kopya_degisken
";
        print("Türü : ");
        print gettype( $kopya_degisken ) ; //çift,ondalık/double
        print "
";
        print "
";
 
        print "Dördüncü kopyalama iÅŸlemi: Mantıksal/Boolean:
";
        $kopya_degisken =  ( boolean ) $degisken; // Mantıksal/Boolean
        print "DeÄŸeri : ";
        print "$kopya_degisken
";
        print("Türü : ");
        print gettype( $kopya_degisken ) ; // Mantıksal/Boolean
        print "
";
        print "
";
?>
</H2>
</B>
</BODY>
</HTML>
 


Bu programın can alıcı noktası örneÄŸin "$kopya_degisken =  ( boolean ) $degisken;" ÅŸeklindeki komut; burada $kopya_degisken adlı deÄŸiÅŸkene $degisken adlı deÄŸiÅŸkenin deÄŸerini (eÅŸittir iÅŸareti ile) kazandırırken, arada yeni deÄŸiÅŸkenin kazanmasını istediÄŸimiz türün adını parantez içinde yazıyoruz. Burada gerçekte, $degisken adlı deÄŸiÅŸkenin deÄŸerine hiç bir ÅŸey olmuyor. Bu programı çalıştırırsanız, ilk deÄŸerin ontalık kısmının önceki örnekte olduÄŸu gibi deÄŸiÅŸim iÅŸlemi sonunda tamamen yok olmadığını görebilirsiniz.

$degisken adlı değişkenin değeri değişmeden durduğu için üçüncü adımda yıptığımız ondalık tür olarak kopyalama sonucu yeni değişkenin değeri yine kesiri ile karşımıza çıkıyor.

Fonksiyon

PHP'nin gettype() ve  print() gibi, kendi içinde bulunan kullanılmaya hazır bir çok fonksiyonu vardır.  Daha sonra kendi fonksiyonlarımızı yazmanın yollarını da göreceÄŸiz. Programcılık dilinde ister dile ait olsun, ister kendimiz yazmış olalım, bir fonksiyonu kullanmaya "fonksiyon çağırma" denir. Fonksiyonlar da fonksiyon çağırabilirler. ÇaÄŸrılan bir fonksiyon ya kendisinden beklenen iÅŸi yapar, ya da kendisini çağıran iÅŸleme veya fonksiyonu bir deÄŸer sunar. Buna fonksiyondan dönen deÄŸer denir.

  

Escape

turler.php dosyasını yazdıysanız, şu satırdaki, ters-bölü işareti dikkatinizden kaçmamış olmalı:

    print "İkinci deÄŸiÅŸkenin adı: \$alfanumerik
";

Daha önce gördük ki, tek veya çift tırnak içine de alsak, PHP, bir değişken adını gördüğü zaman onun yerine o değişkenin tuttuğu değeri yazar. PHP bunu, değişken adının başındaki $ görerek yaparak. $ işareti gibi PHP için özel anlamı olan işaretlerin anlamlandırılmasını önlemek ve bu işaretleri düz metin saymasını sağlamak için bu işaretlerin önüne ters-bölü işareti koyarız. Buna o karakteri kurtarma veya ESCaping denir. PHP'nin anlamlı işaretleri ve bunların ESCape-yazılışı şöyledir:

\'          Tek tırnak
\"          Ã‡ift tırnak
\\          Ters-bölü
\$         Dolar iÅŸareti
\n         Yeni Satır (New Line)
\r          Satır Başı (Return)
\t          Sekme (Tab) karakteri

  

Dört yararlı fonksiyon

PHP'de değişken değer türü değiştirmekte kullanabileceğimiz kullanılmaya hazır fonksiyon vardır. ilerde döngüleri ele aldığımızda daha çok anlam kazanacak olan bu değişkenleri şimdilik bir kenara kaydedin:

isset() ve unset()

PHP, bir deÄŸiÅŸken tanımlandığı anda, sanki içinde deÄŸer varmış gibi, bilgisayarın belleÄŸinde yer ayırır. Bu bazen bilgisayarın kıt kaynaklarını zorlayabilir. isset() fnksiyonu, PHP'nin bir deÄŸiÅŸkenin içinde deÄŸer  bulunup bulunmadığını sınamasını saÄŸlar. unset() ise varolan bir deÄŸiÅŸkeni yok eder. Bu iki fonksiyonu birlikte kullanabiliriz ve boÅŸ deÄŸiÅŸkenleri yok ederek, bilgisayarın belliÄŸinde yer açabiliriz:
 
if (isset($bir_degisken)) {
         print( $bir_degisken );
}
else {
unset($bir_degisken);
}
 


Bu kod parçası, $bir_degisken isimli dğişkenin içi boş değişse, içeriğini görüntüleyecek, içi boş ise varlığına son verecektir.

empty()

isset() fonksiyonun tersi işleve sahiptir; bir değişkene değer atanmamışsa, veya değeri sıfır veya boş alfanümerik (null string) ise, doğru (True) değeri verir.
 
$bir_degisken = 123;
echo empty($bir_degisken);
$bir_degisken = "";
echo empty($bir_degisken);
 


Bu program parçası Browser penceresine sadece empty() fonksiyonun doğru sonuç verdiği birinci echo() deyiminde 1 yazdıracaktır.

is_string(),is_integer(),is_double(),    

Sınadıkları değişkenin aradıkları türden değer içermesi halinde doğru 'True) sonuç verirler.
  
<?php
        $a = 6.567;
if (is_double($a)) {
        print ("A Double'dır
");
        }
        $b = "ReÅŸit";
if (is_double($a)) {
        print ("B String'dir
");
        }
        $c = 6;
if (is_int($c)) {
        print ("C Integer'dır
");
        }
?>
 


Bu kod, Browser penceresine "A double'dır, B String'dir,  C Integer'dır" yazdıracaktır. PHP'de bu fonksiyonlara benzeyen fakat baÅŸka tür deÄŸer arayan ÅŸu fonksiyonlar da vardır: is_array(), is_object.

intval(), doubleval(), doubleval()

Bir değişkenin değerinin türünü başka bir türe çevirmeye yararlar. intval(), ortaya çıkartacağı tamsayı değişkenin 10 tabanlı (decimal) veya 16 tabanlı (hexadecimal) olmasını sağlayan ikinci bir argüman alabilir:
 
<?php
        $a = "123ABC";
        $b = inval($a, 16)
        print ($b);
?>
 

__-_ßadkurt_-__ 14.10.2008 23:47:51
PHP DEVAMI 3
İşlemciler (Operatörler)

Yukarıdaki örnekleri birlikte yaptıysak, = işaretini bol bol kullandık ve böylece PHP'nin bir çok operatöründen biriyle tanıştık. Buna PHP dilinde "atama operatörü" denir. Bu işlemci sadece yukarıda kullandığımız gibi, bir değişkenin bir değere eşitliğini ilan etmek amacıyla kullanılmaz. Örneğin:
 
print ( $sayi = 123 ) ;
 


ifadesinde olduğu gibi, bir fonksiyonun içinde de hem atama işlemi yapılabilir; hem de işlem yürütülür. PHP'nin aritmetik, birleşik-atama, birleştirme, karşılaştırma ve mantıksal sınama operatörleri vardır.

Aritmetik iÅŸlemciler:


         


Aritmetik işlemleri gerçek sayılarla yaptığımız gibi, tuttuğu değer sayı olan değişkenlerle de yapabiliriz.

Daha önce, PHP'de değişken tanımlar ve bunlara değer atarken sayı olan değişkenleri tırnak işareti kullanmadan, alfanümerik değişkenleri ise tırnak içinde yazdığımızı hatırlayacaksınız. Bu, geleneksel hale gelmiş olan bir programcılık alışkanlığıdır. PHP, tırnak kullanmasanız da bir değişkenin sayı olup olmadığını anlar; daha sonra bu değişkenlerle aritmetik işlem yapabilir. PHP ayrıca rakamla başlayan alfanümerik değişkenleri sayı olarak kullanmaya kalktığınızda, bu değerin başındaki bütün rakamları sayı olarak kabul eder. PHP açısından harf veya işaretle başlayan alfanümerik değişkenlerin sayı olarak değeri sıfırdır. Örnek:
 
$a = 6;
$b = "22/A"
print ($a + $b)
sonuç olarak 28'i verecektir; veya
$a = 6;
$b = "A/22"
print ($a + $b)
 


sonuç olarak 6 çıkacaktır.  Bu küçük deneyi yaparsanız, PHP ile program yazarken hangi deÄŸiÅŸkenin ne sonuç vermesi gerektiÄŸini dikkatle düşünmek zorunda olduÄŸunuzu görürsünüz. Bir kiÅŸinin geliri ile adresini toplamak, programcı olarak arzu ettiÄŸiniz bir iÅŸlem olmayabilir!

Bununla birlikte elimizde bir kişinin adı ve soyadı ayrı değişkenler halinde ise, bunları birbirine ekleyerek (concatenation) ortaya yeni bir alfanümerik değişken çıkartabiliriz:
 
<?php
        $adi = "ReÅŸit";
        $soyadi = "Muhtar";
        $adi_soyadi = $adi . " " . $soyadi;
        print ("
");
        print ($adi_soyadi);
        print ($adi . "'nın soyadı " . $soyadi . "'dir.")
?>
 


Bu örnekte, sadece ekleme yoluyla yeni bir değişken oluşturmakla kalmıyoruz; fakat alfanümerik değişkenleri, başka metinlerle de birbirine ekleyebildiğimizi görüyoruz. Bu işlemi nokta işaretiyle (.) yapıyoruz. Bu işlemciyle sadece değişkenlerin değerlerini değil fakat metinleri de birbirine ekleyebiliriz:
 
<?php
          print ("İyileri iyilikleri ile alkışla; " . "..." . "ve sen soluklarında daima Mesîh ol..! ")
?>
 


PHP'nin atama işlemcisinin eşittir (=) işareti olduğunu hatırlıyorsunuz birleşik-atama (combined-assignment) işlemcileri, bu işarete diğer aritmetik işlemciler eklenerek oluşturulur.


         


Bu iÅŸlemi zihnimizde, "A deÄŸiÅŸkeninin mevcut deÄŸerine 5 ekle, çıkan sonucu A deÄŸiÅŸkenin yeni deÄŸeri yap!" ÅŸeklinde canlandırabiliriz.  

PHP'nin karşılaştırma yapması için kullandığımız işlemciler ise işlem işaretinin sağı ve solundaki değerleri veya değişkenlerin değerlerini işaretin belirttiği karşılaştırmayı yaptıktan sonra ortaya ya doğru (true) ya da yanlış (false) sonucunu çıkartırlar. Söz gelimi, değeri 6 olan değişkenin 5'ten büyük olup olmadığını sınarsak, sonuç doğru; 5'ten küçük olup olmadığını sınarsak sonuç yanlış çıkacaktır. PHP'nin karşılaştırma işlemcileri şunlardır:


         


PHP'nin karşılaştırma işlemcileri hem tam ve ondalık sayı türü değerlerle, hem de alfanümerik değerlerle kullanılabilir.

Daha ileri aşamalarda, bazen değişkenlerimizin karşılaştırmasının bu kadar basit olamayacağını; kimi zaman iki grup değişkenin karşılaştırılması gerektiği durumların bulunduğu göreceğiz. Diyelim ki, bir öğrencinin başarılı sayılması için hem vize notunun, hem de yılsonu sınav notunun belirli sayılardan büyük olması gerekiyor. Bu durumu ancak karmaşık-mantıksal sınamadan geçirmemiz gerekir. Bu sınamayı iki ayrı sınama sonucu ile birlikte kullanırız. Örneğin:

vize notu yeterli  - final notu yetersiz = kalır  (yanlış/false)

vize notu yeterli - final notu yeterli = geçer (doğru/true)

PHP'de bu karşılaÅŸtırmayı iki grubun arasına koyduÄŸumuz iÅŸaretlerle yaparız İşaretin saÄŸ ve sol tarafının doÄŸruluÄŸu veya yanlışığı iÅŸarete göre nihai sonucun doÄŸru veya yanlış olmasını  saÄŸlar. Bu karşılaÅŸtırmaları yaparken ÅŸu iÅŸlemcileri kullanırız:


         


NOT:ALınTı HazırLayan ArKadaşın EmeGine SagLık

MuratbanK 15.10.2008 00:09:15
aga harbiden süper paylaşım olmuş. emeğine sağlık. bu konuya +100 rep işledi


(C)Alıntı:_-€f€ßozkurt-_ Bir Ara Demisti Ki:
<html>
<?PHP
      echo ("Merhaba Dünya!");
?>
</html>
 


sadece burdaki kodlarda
      echo ("Merhaba Dünya!");

yerine      'echo ("Merhaba Dünya!");
olmalı bir ' işareti deyip geçmemek lazım

__-_ßadkurt_-__ 15.10.2008 00:50:42
HeLaL Aga gözünDen Hiç BiÅžey KaçmıO Senin Bu HuyuNu Çok Seviom Cin GibiSin MaÅžaLLA tü tü 


Sayfa: [ 1 ]