AÖF Soru Bankası

İnternet Tabanlı ProgramlamaÜnite 2 Özeti

PHP’ye Giriş

WTK290U-İNTERNET TABANLI PROGRAMLAMA

Ünite 2: PHP’ye Giriş

Giriş

Web teknolojisi, Tim Berners Lee tarafından ortaya çıkarılmıştır. HTML üzerinde yapılan ve günümüzde de sürmekte olan iyileştirmeler, 1992 yılında bir milyon, 1995 yılında da on milyon Web sunucusuna ulaşılmasını sağladığında, Web’in önemi artık gözler önüne serilmişti. Web sayfaları, ortaya çıktığı ilk yıllarda sabit bir içerik sunumunun ötesinde bir işleve sahip değildi. Yayıncı tarafından üzerinde değişiklik yapılmadığı sürece değişmeyen bu sayfalar, statik Web sayfaları olarak anılmaktaydılar. Günümüzde “sunucu taraflı” olarak sınıflandırılan diller ise, bu ihtiyacı karşılamak için ortaya çıkmıştır.

Sunucu Taraflı Programlama Dilleri

Statik Web sayfalarının iyileştirilmesine yönelik olarak ortaya çıkan sunucu taraflı programlama dilleri, aynı zamanda Web 2.0 olarak anılan teknolojinin temelini oluşturmuştur. Sunucu taraflı programlama dillerinin ortaya çıkması, Web içeriği oluşturan programların yazılmasını sağlayarak dinamik Web sayfalarına kapı açmıştır. Statik bir Web sayfası ziyaret edildiğinde Web sunucu yazılımı, ziyaret edilen sayfayı içeriğine bakmaksızın karşı tarafa göndermektedir. Sunucu taraflı dil ile kodlanmış olan ve dinamik olarak adlandırılabilecek bir Web sayfası ziyaret edildiğinde ise Web sunucu yazılımı söz konusu sayfayı doğrudan istemciye göndermez. İstenen sayfa öncellikle sunucu üzerinde çalışan bir derleyici tarafından derlenir ve çalıştırılır. İstemciye gönderilecek olan içerik ise bu süreçte ortaya çıkar. İstemciye, derlenen sayfanın ürettiği içerik gönderilir. Derleme süreci sunucu üzerinde yapıldığı için istemci, sunucu taraflı kodları göremez.

Derleme kavramı, programlama diliyle yazılmış kodların bilgisayar tarafından işlenebilecek hale dönüştürülmesi sürecini ifade eder.

Günümüzde, çok sayıda sunucu taraflı dil mevcuttur. Bunlardan bazıları PHP, ASP, JSP, Perl, Python, Ruby ve ColdFusion’dır.

JSP: Açılımı JavaScript pages (JavaScript sayfaları) olan bu dil, Java’ya dayalıdır. Ayrıca JSP, Java tarafından sağlanan geniş bir kod kütüphanesi ile destekleniyor olduğu için, projelerin hızlıca tamamlanmasını sağlayabilmektedir.

ASP: Açılımı Active server pages (aktif sunucu sayfaları) ifadesidir. 1997 yılında Microsoft tarafından ortaya çıkarılmış oldukça eski bir dil olduğu söylenebilir. BASIC dili üzerinde birtakım değişiklikler yapılarak oluşturulmuş olan VBScript diline çok yakın bir yapısı vardır.

Perl: Ortaya çıkan ilk sunucu taraflı dillerdendir. Diğer dillere göre daha zor öğrenilebildiği söylenebilir. Ortaya çıkışının 1990’lı yıllara dayanması, köklü bir kod kütüphanesine sahip olmasını sağlamıştır.

Python: Kökleri 1980’lere uzanan genel amaçlı bir programlama dili olan Python, günümüzde genellikle

dinamik Web sayfalarının oluşturulması için kullanılmaktadır. Hızlı kod yazımı sağlaması nedeniyle popülerleştiği gözlenen Python, önemli modül ve çatılarla desteklendiği için kolay uygulama geliştirme olanağı da sağlamaktadır.

Ruby: Nesne tabanlı yapısı sayesinden modülerlik ve kodların yeniden kullanılabilmesi anlamında kolaylık sağladığı için, projelerin görece hızlı tamamlanmasına olanak vermektedir.

ColdFusion: 1990’lara dayanan oldukça eski bir geçmişi vardır. Öğrenilmesi kolay olmakla birlikte, özellikle veritabanı yönetimi gerektiren projelerde son derece hızlı bir şekilde sonuca ulaşılmasını sağlar ancak, çok esnek bir programlama dili olmadığı söylenebilir.

PHP: [Personel Home Page (Kişisel Ana Sayfa)] PHP’nin geliştirilmesi, Rasmus Lerdorf’un 1995 yılında C dili üzerinden gerçekleştirdiği çalışmalarla başlamıştır. PHP, tamamen ücretsiz bir şekilde kullanılmakla beraber hemen her sunucu tarafından destekleniyor olmasıyla, en yaygın sunucu taraflı dillerden biridir. Ayrıca PHP’nin güncel sürümü, kısmen de olsa nesne yönelimli programlamayı desteklemektedir. PHP, genel amaçlı bir programlama dili olarak da kullanılmaktadır.

Php Destekli Web Sunucu Kurulumu

Bilgi işlem kapasiteli hemen her cihazın kolayca bir Web sunucusu haline dönüştürülebilmesi mümkündür. Bunun için üzerine bir Web sunucu yazılımının yüklenmesi yeterli olacaktır.

İnternette en çok kullanılan Web sunucu yazılımının tamamen ücretsiz, hızlı çalışan ve esnek bir kullanım sunan Apache adlı yazılım olduğu söylenebilir. Apache, Unix, Linux, Solaris, Windows, MacOS X ve OS/2 gibi yaygın işletim sistemlerinin hepsini desteklemektedir. Çok gelişmiş bir HTTP sunucu olsa da Apache, yalnızca Web istemlerini kabul edip, istenen Web sayfalarını teslim etmekle sınırlı bir göreve sahiptir. Sunucu üzerinde PHP kodlarının derlenip çalıştırılması ise, Apache’den bağımsız olarak geliştirilmiş olan PHP derleyicisinin işidir.

HTTP, Türkçe karşılığı Hipermetin Transfer Protokolü olan HyperText Transfer Protokol ifadesinin kısaltmasıdır ve Web sayfalarının iletimi için oluşturulmuştur

Halihazırda Apache kurulu bir bilgisayara PHP derleyicisi kurmak, statik Web sayfası sunumuyla sınırlı becerilere sahip söz konusu bilgisayarın, dinamik Web sayfaları sunabilen bir Web sunucuya dönüşmesini sağlar. PHP sayfalarını destekleyen bir Web sunucunun üzerinde çalıştırması beklenen diğer bir uygulamanın veritabanı yönetim sistemi olduğu söylenebilir. Hemen her PHP Web projesinde kendini gösteren veri yönetim ihtiyacı, bu şekilde karşılanmış olacaktır. Bu noktada, küçük ve orta ölçekli projelerde yıllardır kullanılmış olmasıyla kendini ispatlayan MySQL adlı veritabanı yönetim sisteminin kullanılması önerebilir. MySQL, hemen her işletim sistemi üzerinde çalışabilecek şekilde sürümlendirilmiş bir


veritabanı yönetim sistemidir. Bir Web sunucunun güncel ihtiyaçları asgari düzeyde de olsa karşılayabilmesi için Web sunucu yazılımına, sunucu taraflı bir derleyiciye ve veritabanı yönetim sistemine ihtiyacı vardır. Sırasıyla Apache, PHP ve MySQL’in bu ihtiyaçları karşılama anlamında ön planda oldukları söylenebilir. Aynı bilgisayara kurulmuş olan söz konusu öğelerin, birbirleriyle kitabınız sayfa 29’da bulunan Resim 2.1’de görüldüğü gibi etkileşerek, uyum içinde çalışacağı söylenebilir. Süreçten de anlaşılacağı üzere PHP ile oluşturulan sayfalar, Web sayfası olmanın ötesinde, Web sayfalarını oluşturmaktadırlar. Bu anlamda PHP sayfası, sayfa üreten sayfa olarak değerlendirilebilir.

Web istem ve sunumunun yapılması sırasında varsayılan olarak 80 numaralı port kullanılır. Özel durumlar için, yapılandırma ayarları üzerinden söz konusu port numarası değiştirilebilir.

Apache, PHP ve MySQL yazılımlarını üçü birden içeren yazılım paketleri ortaya çıkmıştır. Bu paketlerinin en çok bilinenlerinden birinin Wamp adlı paket olduğu söylenebilir. WampServer, www.wampserver.com adresinden ücretsiz olarak indirilebilir.

WWW klasörü, sunumu yapılacak olan Web sayfalarının ve diğer dosyaların yerleştirileceği klasördür. WampServer’in www klasöründe çok sayıda dosya bulunabilir. Bir Web sitesi ziyareti sırasında, istenen dosya adres satırı üzerinden belirtildiyse, bu dosya doğrudan karşı tarafa gönderilir. Bu noktada Apache, istenen Web sayfasını www klasöründe bulursa, istemi yapan tarayıcıya gönderir. İstenen isme sahip bir dosya yok ise, 404 numaralı “sayfa bulunamadı” hatasını üretir. Eğer internet kullanıcısı, yalnızca alan adı yazıp, herhangi bir sayfa eklemezse, varsayılan olarak “index”, “default” veya “main” ismine sahip dosyalar gönderilir. Bu nedenle çoğunlukla, Web sitelerinin ana sayfalarının adı index olarak belirlenmiştir. Bu sayfalar, diğer sayfaları çağırmak ya da diğer sayfalara yönlendirmek gibi görevlere sahiptirler. WampServer’in ana klasöründeki “Wampmanager.exe” adlı dosyanın çalıştırılması, Windows işletim sisteminin görev çubuğuna bir ikon yerleştirir. Bu ikonun rengi Web hizmetlerinin durumuna ilişkin de fikir vermektedir. İkonun kırmızı renkte olması, söz konusu hizmetlerin kapalı olduğunu, sarı renkte olması başlatılmakta olduğunu, yeşil renkte olması ise servislerin çalışıyor olduğunu gösterir. WampServer ikonunun üzerine sağ tıklanarak panel görüntülenebilir. WampServer servisleri bu panel üzerinden yönetilebilmektedir. Panelin ilk arayüzünde about, refresh, help, language, settings, tools ve exit gibi komut ve alt menüleri bulunmaktadır.

Görev çubuğundaki WampServer ikonunun üzerine sol tıklanması ise, başka bir panelin açılmasını sağlar. Söz konusu panelin açılması için “tek tıklama” eyleminin gerekliliğine dikkat edilmelidir. İkonun çift tıklanması, panelin yerine “hakkında” penceresinin görüntülenmesini sağlayacaktır. Görüntülenen panel, Web sunucunun yönetimi için oldukça önemli komut ve alt menüleri sunar.

Panelde Localhost, phpMyAdmin, Your Aliases, www klasörü, Apach, PHP, MySQL, Bütün Servisleri Başlat, Bütün Servisleri Durdur, Bütün ServisleriYeniden Başlat işlevleri bulunmaktadır.

WampServer kurulduğunda “www” adlı özel klasör, içinde birtakım dosyalarla birlikte gelir. www klasöründe yer alan ve Apache tarafından sunulan içeriği görüntülemek için Web tarayıcıya sunucunun adresinin yazılması yeterlidir. “127.0.0.1” şeklindeki ip adresi ve “localhost” şeklindeki alanadı her zaman ve her platformda, kullanıldığı cihazın kendisini gösterir. Bu nedenle Web tarayıcının adres kısmına bu iki ifadeden biri yazılıp Apache tarafından sunulan Web içeriği ziyaret edilebilir.

Local host ifadesi Türkçe’de “yerel sunucu” anlamına gelmektedir.

Bir Web sunumuna başka bir bilgisayardan erişim sağlanmak isteniyorsa, Web tarayıcının adres satırına söz konusu sunucunun ip adresi veya alan adı girilmelidir. Windows tabanlı bir bilgisayarda ip adresini öğrenmenin en hızlı yolu, komut satırına ipconfig komutunu girmektir. Bunun için klavyedeki “Windows” tuşuyla birlikte “R” karakterine basılır. Görüntülenen “Çalıştır” penceresine “cmd” yazılıp tamam butonu tıklanır ve açılan komut satırı ekranına “ipconfig” komutu yazılıp enter tuşuna basılır. “IPv4 Adresi” etiketinin karşısındaki adres, bilgisayarın IP adresidir.

Php’nin Temel Kodlama Özellikleri

İlk PHP Sayfası: Merhaba Dünya!

Boşaltılmış olan www klasörünün içerisine aşağıda sunulan kodları içeren ”index.php” adlı dosyanın yerleştirilmesi, ortalanmış bir şekilde “Merhaba Dünya” metnini içeren bir Web sitesi sunulmasını sağlayacaktır.

Windows işletim sistemi dosya uzantılarını gizleyecek şekilde yapılandırılmış ise, dosya adı yanlışlıkla “index.php” yerine “index.php.txt” şeklinde bırakılabilmektedir. Bu hata, sayfanın görüntülenmemesine neden olacaktır.

<?php echo “<center>Merhaba Dünya!</center>”; ?>

“<?php” ifadesinden, “?>” ifadesine kadar olan her şey, PHP kodu olarak algılanıp derlenecektir. “echo” deyimi ise, istemciye gönderilecek olan Web sayfasına metin yazılmasını sağlar. “<center>” ve “</center>” ifadelerini HTML etiketi olarak algılayıp, aralarında yazan ifadeyi, ortalanmış bir şekilde gösterecektir. Bu noktada, HTML kodlarının da aslında PHP dili ile yazdırılmış olduğuna dikkat edilmesi önemlidir.

PHP derleyici, <?php…?> ifadelerinin arasında kalmayan hiçbir satırı derlemez. Bu ifadelerin dışındaki her şey, doğrudan çıktı olarak üretilir. Bu özellik sayesinde özellikle Web sayfası oluşturmak üzere yazılacak olan PHP kodları,


sayfayı oluşturan içeriğin içine bir anlamda “serpiştirilebilir”.

PHP’de Değişken Kullanımı

PHP’nin sağladığı kodlama kolaylıklarından birisi de değişkenlerin kullanımı noktasındadır. Birçok programlama platformunda bulunan “değişken türü” tanımlaması, PHP’de üzerinde düşünülmesi gereken bir konu değildir. Kodlama sırasında istenen noktada “$” işareti kullanımı ile değişken oluşturulup, içine doğrudan herhangi bir tipteki değer yüklenebilir. Aşağıdaki kod, bu kullanımı örneklendirmektedir.

<?php $test=10; $test=$test+5; echo “$test”; $test=”Ahmet”; echo “$test”; ?>

Yukarıdaki kodun iki numaralı satırında “test” adlı bir değişken oluşturulmuş ve içine 10 sayı değeri yüklenmiştir. Üç numaralı satırdaki “$test=$test+5;” ifadesi de bu değişkenin değerini kendisinin 5 fazlası olacak şekilde değiştirmektedir ki bu işlem, içindeki değerin sayı değeri olmaması durumunda mümkün olmazdı. Bu kodlar ile değişken değerini Web sayfasına 15 olarak yazılır. Beş numaralı satırda, PHP’nin önemli kodlama özelliklerinden biri görülmektedir. Bu satırda, üzerinde tamsayı (integer) tipinde değer taşıyan değişkene metin (string) tipinde değer atanmaya çalışılmıştır. Birçok programlama dilinde buna benzer bir satır, hata mesajıyla karşılaşılmasını sağlamaktadır. Ancak PHP, bu noktadaki tip dönüşümünü otomatik olarak gerçekleştirir.

Bir programlama dilinin en önemli öğelerinden biri olan değişkenlerin PHP’deki kullanımı iç içe de geçebilmektedir. PHP’de “değişken değişkeni” şeklinde ifade edilebilecek yapılar da mümkündür. Aşağıdaki PHP kodunu dikkatlice incelemek, bu kullanımın anlaşılmasını sağlayacaktır.

<?php $deneme=”sayi”; $sayi=15; echo $$deneme; ?>

Yukarıda, bir değişkenin değerinin başka bir değişkenin ismini tanımlamak için kullanımı örneklendirilmektedir. Resimdeki $deneme adlı değişkenin içindeki “sayi” metni, “$$deneme” şeklindeki tanımın “$sayi” anlamına gelmesini sağlamıştır. Dolayısıyla bu kodun ürettiği sayfada “15” yazacaktır.

PHP’de Sabit Kullanımı

Adından anlaşılacağı üzere sabitler, sahip olduğu değeri değiştirmeyen yapılardır. Genellikle kodların başında tanımlanır ve kod boyunca isimleriyle çağrılarak kullanılırlar.

<?php (“MAKSIMUM”, 100); define(“MINIMUM”, 0); define(“PI”,3.14159); ?>

Anlaşılacağı üzere yukarıdaki kodda, define() adlı fonksiyonun kullanımıyla üç adet sabit tanımlanmıştır. Bu tanımlamalardan sonra gelen kodlar için “MAKSIMUM” ifadesinin anlamı 100, MINIMUM ifadesinin anlamı 0, PI ifadesinin anlamı da 3.14159 olacaktır.

PHP de yerleşik olarak bulunan “pi()” adlı fonksiyon ve M_PI adlı ön tanımlı sabit, pi sayısını yüksek hassasiyetle sunmaktadır.

PHP Kodlarına Yorum Satırlarının Eklenmesi

Özellikle PHP ile gerçekleştirilen büyük projelerde, kodların arasına yalnızca geliştiriciler tarafından görülebilecek notların alınması gerekmektedir. PHP’de “//” işaretli bir satırda işaretin sağında kalan metin, geliştirici notu olarak değerlendirilir ve derleyici tarafından göz ardı edilir. Birden fazla yorum satırı eklemek istendiğinde, her satırın başına “//” işaretini koymak yerine “/*” işareti kullanılabilir. Derleyici, “/*” işareti ile “*/” işareti arasında kalan metnin tamamını göz ardı edecektir.

Php’nin Yapılandırılması

PHP, Web ya da Web harici projeleri kapsayan pek çok amaca göre yapılandırılabilmektedir. Ayrıca PHP, varolan yapılandırmanın listelenmesini sağlayan “phpinfo()” adlı bir fonksiyon barındırır. Aşağıda bu fonksiyonun basitçe kullanımı görülmektedir.

<?php phpinfo(); ?>

Yukarıdaki kodun oluşturduğu sayfanın ziyaret edilmesi, kitabınız sayfa 38’de yer alan Resim 2.12’de sunulan görüntüyü oluşturacaktır. Sol taraftaki kaydırma çubuğunun boyutundan da anlaşılacağı üzere bu sayfa, halihazırdaki PHP yapılandırmasına ilişkin hemen her veriyi içeren oldukça dolu bir içeriğe sahiptir. Herhangi bir yapılandırma değişkeninin değeri, bileşenlerin versiyon numaraları veya bir modülün yüklü olup olmadığı gibi bilgilere bu sayfa aracılığıyla ulaşılabilir.

PHP’nin, phpinfo sayfası üzerinde görüntülenen yapılandırma ayarlarının değiştirilmesi için, yapılandırma dosyasına ulaşmak ve gerekli değişiklikleri yapmak yeterlidir. “php. ini” adıyla kayıtlı olan bu dosya, PHP’nin çalışma amacına göre özelleştirilebilmesi açısından oldukça önemlidir. Sunucu üzerinde yapılabilecek basit bir aramayla ulaşılabilecek olan “php.ini” dosyasına, görev çubuğunda yer alan WampServer ikonu üzerinden de ulaşılabilir. Kitabınız sayfa 39’da yer alan Resim 2.14’te örnek bir görünümü verilen php.ini dosyası üzerindeki satırları değiştirerek veya yeni satırlar ekleyerek PHP derleyicisinin çalışma yapılandırılması önemli ölçüde değiştirilebilir. Ancak bu dosya, yapılandırma satırları içerdiği gibi yapılandırma satırlarına ilişkin açıklamalar da


içerebilmektedir. “;” karakteri ile başlayan satırlar, PHP yapılandırmasının okunması sırasında dikkate alınmazlar. Ancak Resim 2.14’deki örneğin son satırında da görüldüğü gibi, ; ile başlamayan satırlar yapılandırma değişkenlerini ve bu değişkenlerin değerlerini içerirler.

Yapılandırma dosyasında değişiklikler yapılarak PHP’ye ilişkin yüzlerce özellik değiştirilebilir.

PHP kodlarının başladığını ve bittiğini belirtmek üzere “<?php” ve “?>” etiketleri kullanılmaktadır.

php.ini adlı dosyaya yer alacak “short_open_tag = On” ifadesi, “<?” etiketinin de PHP kodlarının başlangıcını belirtmesini sağlayacaktır. Bu ifadede yer alan “On” değerinin “Off” olarak değiştirilmesi ise, anlaşılacağı üzere “<?php” ifadesini zorunlu kılacaktır.

PHP derleyicisinin derlediği kodları çalıştırma anlamındaki zaman sınırı da php.ini dosyası üzerinden değiştirilebilir. Bunun için “max_execution_time” ifadesinin değeri değiştirilmelidir. Bu ifadenin karşısında yazan değer, saniye cinsinden maksimum çalışma süresini ifade eder. Örneğin “max_execution_time=60” şeklindeki kullanım, derlenmiş bir PHP kodunun en fazla 60 saniye çalışmasını sağlar.

Söz konusu sürenin dolması durumunda, kod kendi çalışmasını henüz sonlandırmamış bile olsa, sistem tarafından sonlandırılır.

PHP tarafından verilen hata mesajlarına ilişkin yapılandırma için en sık kullanılan değişken “error_reporting” adlı olanıdır. Bu değişkenin karşısına yazılan ifade, PHP derleyicisinin derleme sırasında oluşturduğu hataların, uyarıların ya da bildirimlerin görüntülenme durumunu değiştirecektir. Örneğin “error_reporting = E_ALL” şeklindeki kullanım hata, uyarı ve bildirimlerin görüntülenmesini sağlar. “error_reporting = E_ALL & ~E_NOTICE” şeklindeki kullanım ise, bildirimlerin (notice) dışındaki mesajların, yani yalnızca hata ve uyarıların görüntülenmesini sağlar.

“file_uploads” değişkeninin karşısına yazılacak “On” değeri, PHP ile sunucuya dosya yükleme olanağı sağlanmış olur. Söz konusu değişkenin “Off” değerini alması ise, PHP ile dosya alımının engellenmiş olması anlamına gelir.

PHP ile oluşturan sayfayı ziyaret eden kullanıcıların tarayıcılarındaki durma butonuna basması, farklı bir adrese yönlenmesi veya tarayıcısını kapatması gibi durumlarda, henüz derlenip çalıştırılmakta olan PHP kodlarının çalıştırılmaya devam edip etmemesine yönelik bir yapılandırma da söz konusudur. php.ini adlı dosyaya eklenecek “ignore_user_abort” ifadesinin karşısına yazılacak değer, bunun ifade edilmesini sağlayacaktır. “ignore_user_abort=On” şeklindeki kullanım, kullanıcı ziyaretini sonlandırsa bile PHP kodunun çalışmaya devam etmesini sağlayacaktır. “ignore_user_abort=Off” ifadesi ise, kullanıcının ziyaretini sonlandırması durumunda PHP kodunun derlenmesini de sonlandıracaktır.

Bu ünitenin sorularını uygulamada çözŞıklar, doğru cevaplar ve süreli sınav modu AÖF Soru Bankası uygulamasında