Basit bir eğitmen Bu bölümde PHP ile ilgili en temel bilgilerdan bahsedilecek, kısa ve basit bir eğitmenden yararlanılacaktır. Bu eğitmen yalnızca PHP ile etkileşimli site sayfaları geliştirmeyi ele alır, ancak PHP'nin yeteneği yalnızca site sayfaları oluşturmakla sınırlı değildir. Daha fazla bilgi için PHP'nin yapabildikleri bölümü incelenebilir. PHP tarafından etkinleştirilen site sayfaları normal HTML sayfaları gibidir ve bu sayfaları normal HTML sayfaları için kullanılan yöntemlerle oluşturulabilir ve düzenlenebilir.
Neye ihtiyaç var? Bu eğitmen süresince HTTP sunucusunda PHP desteğinin etkinleştirilmiş olduğu ve tüm .php uzantılı dosyaların PHP tarafından yorumlandığı varsayılacaktır. Çoğu sunucuda, bu uzantı PHP dosyaları için öntanımlı dosya uzantısıdır, ancak emin olmak için sunucunun yöneticisinden doğru bilgi edinilebilir. Kullanılan sunucu PHP'yi destekliyorsa, başka hiçbir şeye ihtiyaç yok demektir. Yalnızca .php uzantılı dosyaları oluşturup sunucunun belge dizinlerine koymak, sunucunun bu dosyayı otomatik olarak işleme koyması için yeterli olacaktır. Herhangi bir şeyi derlemek ya da fazladan bir araç kurulumu yapmak gerekmemektedir. PHP tarafından etkinleştirilen dosyalar yeni bir tür HTML dosyası olarak düşünülebilir. Öyle ki, artık HTML dosyasının içine sihirli birtakım etiketler konabilir ve bu etiketler sayesinde istenen her tür işlem gerçekleştirilebilir. Çok değerli olan band genişliği boşa harcanmadan yerel olarak geliştirme yapılmak isteniyor olsun. Bu durumda, Apache gibi bir HTTP sunucusunun ve elbette PHP'nin indirilmesi ve kurulması gerekecektir. Bu ikilinin yanında, MySQL gibi bir veritabanının da indirilip kurulması iyi olacaktır. Bu üçlüyü tek tek kurmak yerine daha basit bir yol izlenebilir. Bu kılavuz PHP için kurulum bilgileri (HTTP sunucunuzun halihazırda kurulu olduğunu varsayılır) bölümüne sahiptir. PHP'yi kurmakta sorun yaşanırsa, sorunların çözümü için kurulum posta listesi'ne başvurulabilir. Daha basit bir yoldan gitmek istenirse, işletim sistemine uygun olan ön yapılandırmalı paketler seçilebilir ve tüm bu araçlar bir kaç fare tıklamasıyla otomatik olarak yüklenebilir. MacOSX, Linux ve Windows dahil olmak üzere birçok işletim sistemine PHP destekli bir HTTP sunucusu kurmak oldukça kolaydır. Linux üzerinde, rpmfind ve PBone gibi araçlar RPM dosyalarını bulmakta yardımcı olacaktır. Debian için ise apt-get sayfası ziyaret edilebilir.
İlk PHP-etkin sayfa merhaba.php isimli bir dosya oluşturulup HTTP sunucusunun belge kök dizinine (DOCUMENT_ROOT) aşağıdaki içerikle kaydedilebilir: - İlk PHP betiği: <filename>merhaba.php</filename> ]]> Tarayıcı kullanılarak HTTP sunucusunun adresine erişilebilir, bunun için sunucu alan adının sonuna /merhaba.php eklemek yeterli olacaktır. Yerel olarak geliştirme yaparken bu URL http://localhost/merhaba.php veya http://127.0.0.1/merhaba.php ya da http://[::1]/merhaba.php gibi bir şey olacaktır, ancak bu HTTP sunucusunun yapılandırma ayarlarına bağlıdır. PHP normal bir HTML sayfasına gömülebilir. Bu, HTML belgesinin içine aşağıdaki örnekte gösterildiği gibi PHP ifadelerinin yazılabileceği anlamına gelir: PHP Denemesi Merhaba Dünya

'; ?> ]]>
Eğer her şey düzgün yapılandırılmışsa, bu dosya PHP tarafından işlenecek ve tarayıcıya aşağıdaki çıktı gönderilecektir: PHP Denemesi

Merhaba Dünya

]]>
Bu kod gördüğünüz gibi son derece basittir ve esasında böyle bir sayfa oluşturmak için PHP'ye gereksinim yoktur. Görüntülenen: PHP'nin echo deyimi kullanılarak elde edilen Merhaba Dünya cümlesidir. Bu dosyanın hiçbir şekilde çalıştırılabilir olmasına ya da özel bir türde olmasına ihtiyaç duyulmaz. Sunucu, bu dosyanın PHP tarafından işlenmesi gerektiğini bilir, çünkü dosyaya ".php" uzantısı tanımlanmıştır. Sunucu bu uzantıya sahip dosyaları PHP'ye aktaracak biçimde yapılandırılmıştır. Bu dosya birtakım özel etiketlerle birçok ilginç işlem yapılmasını sağlayan bir tür HTML dosyası olarak düşünülebilir. Bu örnek denendiği halde hiçbir çıktı alınamazsa, dosyanın indirilmesi istendiyse ya da dosyanın tüm içeriği metin olarak ekranda görünüyorsa, büyük ihtimalle sunucunun PHP desteği etkinleştirilmemiştir ya da sunucu doğru yapılandırılmamıştır. Sistem yöneticisinden kılavuzdaki Kurulum bölümünü kullanarak PHP'yi etkinleştirmesi istenebilir. Yerel olarak geliştirme yapılıyorsa, kurulum bölümü okunarak herşeyin doğru yapılandırılması sağlanabilir. Çıktıyı sağlayan sunucudaki dosyaya http:// üzerinden erişilmelidir. Dosya file:// üzerinden isteniyorsa, PHP tarafından işlenmeyecektir. Sorun her şeye rağmen devam ediyorsa, PHP desteği alma yöntemleri kullanılabilir. Bu örneğin amacı özel PHP etiketi biçemini göstermektir. Örnekte <?php ile PHP başlangıç etiketi belirtilmektedir. Sonra PHP komutu yazılmış ve kapanış etiketi ?> kullanarak PHP kipinden çıkılmıştır. Bir HTML dosyasında bu yöntem kullanılarak gereken yerde PHP kipine girip çıkılabilir. Daha fazla bilgi için, kılavuzun temel PHP sözdimi bölümünü okunabilir. Satır-sonları hakkında Satır-sonu karakterlerinin HTML içinde bir önemi yoktur, bununla birlikte HTML kodunun göze hoş görünmesi için satır-sonu karakterlerini kullanmak gerekir. ?> kapama etiketinin hemen ardından gelen satır-sonu karakterini PHP silecektir. Dosyanın içine çok sayıda PHP kodu konulması veya hiçbir şey çıktılamayan betiklerin dosyaya dahil edilmesi durumunda bu çok işe yarar. Ancak bu biraz kafa karıştırıcı olabilir. ?> kapama etiketinden sonra bir satır-sonu karakterinin çıktılanması istenirse, ya kapama etiketinden sonra bir boşluk bırakıp onun ardına satır-sonu karakteri konulmalı ya da PHP kodunun son echo/print deyiminin sonuna bir satır-sonu karakteri eklenmelidir. Metin Düzenleyiciler Hakkında PHP dosyalarını oluşturmak, düzenlemek ve yönetmek için birçok metin düzenleyici ve Bütünleşik Geliştirme Ortamı (BGO) bulunmaktadır. Bu araçların bir kısmı PHP Düzenleyicileri Listesi bölümünde listelenmiştir. Önerilmesi istenen bir düzenleyici varsa, yukarıdaki sayfayı ziyaret edilip sayfa idarecisinden önerilmek istenen düzenleyicinin bu listeye eklemesi rica edilmelidir. Söz dizimi vurgulaması olan bir düzenleyicinin büyük yardımı olur. Kelime İşlemciler Hakkında StarOffice Writer, Microsoft Word ve Abiword gibi kelime işlemciler PHP dosyalarını düzenlemek için uygun değildir. Eğer bu deneme betiği için bunlardan biri kullanılmak istenirse, dosyanın salt metin olarak kaydedildiğinden emin olunmalıdır, aksi takdirde PHP'nin betiği okuması ve çalıştırması mümkün olmayacaktır. Artık çalışır bir PHP betiği başarıyla oluşturulduğuna göre, PHP betiklerinin en ünlüsünü oluşturma zamanı geldi demektir! phpinfo işlevi çalıştırılıp sistem ve yapılandırma ilgili öntanımlı değişkenler, yüklü PHP modülleri ve yapılandırma ayarları gibi konularda faydalı birçok bilgiye ulaşılabilir. Bu önemli bilgiler için biraz vakit ayrılması ve bunların incelenmesi önerilir. - PHP ile sistem bilgisine ulaşmak ]]>
İşe yarar bir şey Bu kez kod daha işe yarar bir şey yapsın. Ziyaretçinin hangi tarayıcıyı kullandığı tespit edilebilir. Bunun için, ziyaretçinin tarayıcısı tarafından HTTP isteği ile birlikte gönderilen kullanıcı aracısı dizgesine bakılır. Bu bilgi bir değişkende saklanır. Değişkenler PHP'de her zaman dolar imi ile başlar. Şu an için ilgilenilen değişken $_SERVER['HTTP_USER_AGENT']'tir. $_SERVER PHP kullanımına ayrılmış özel bir değişken olup HTTP sunucusunun tüm bilgilerini içerir. Bu tür değişkenlere süper küreseller denir. Bu konuda daha ayrıntılı bilgi Süper Küreseller bölümünde bulunabilir. Bu değişkenin değerinin görüntülenmesi için yapılacaklar: - Bir değişkeni (dizi öğesini) yazdırmak ]]> Bu betiğin çıktısı şöyle bir dizge olabilirdi: PHP'de birçok farklı değişken türü mevcuttur. Yukardaki örnekte bir diziye ait bir öğe yazdırıldı. Diziler çok daha kullanışlı olabilir. $_SERVER PHP tarafından kullanıma otomatik olarak sunulan bir değişkendir. Kullanım kılavuzunun Öntanımlı Değişkenler bölümünden tümünün listesine ulaşılabilir ya da önceki örnekte kullanılan phpinfo işlevi ile üretilen çıktıya bakarak bütün listeye ulaşılabilir. PHP etiketinin içine birden çok PHP komutu konabilir ve tek bir echo komutundan daha fazlasını yapan küçük kodlar oluşturulabilir. Örneğin, ziyaretçin Firefox kullanıp kullanmadığı şöyle saptanabilir: - <link linkend="language.control-structures">Denetim yapılarının </link> ve <link linkend="language.functions">işlevlerin</link> kullanım örneği ]]> Bu betiğin çıktısı şöyle olabilirdi: Burada birkaç yeni kavram devreye sokuldu. Örneğin, if deyimi; C dilinde kullanılan temel sözdizimine aşinalık varsa, bu kullanım tanıdık gelecektir. Aksi takdirde, giriş düzeyinde bir PHP kitabı edinilmesi ve ilk birkaç bölümünün okunması ya da kılavuzun Dil Başvuru Kılavuzu bölümünün okunması faydalı olacaktır. Devreye sokulan ikinci kavram, str_contains işlevi ile yapılan çağrı oldu. str_contains, bir dizgeyi başka bir dizgenin içinde arayan yerleşik bir PHP işlevidir. Burada $_SERVER['HTTP_USER_AGENT'] içinde (samanlık) 'Firefox' dizgesi (iğne) aranıyor. İğne samanlıkta bulunursa &true;, aksi takdirde &false; döner. if ifadesinin sonucu &true; olduğu takdirde kaşlı ayraçlar arasındaki kod çalıştırılır. Aksi takdirde kod çalıştırılmaz. If, else gibi denetim yapıları ile strtoupper ve strlen gibi işlevler kullanılarak benzer örnekler yazılabilir. İlgili her kılavuz sayfası aynı zamanda örnekler de içermektedir. Bu işlevlerin nasıl kullanması gerektiğinden emin olunamıyorsa, kılavuzdaki bir işlev tanımı nasıl okunur ve PHP işlevleri bölümleri okunabilir. Bu bir adım öteye taşınabilir ve bir PHP kodunun tam ortasındayken bile HTML kipine nasıl girilip çıkılabileceği gösterilebilir: - HTML ve PHP kiplerini karıştırmak

str_contains() false döndürmemiş olmalı

Firefox kullanıldığı saptandı.

str_contains() false döndürmüş olmalı

Firefox kullanılmadığı saptandı.

]]>
Bu betikten elde edilebilecek sonuçlardan biri: str_contains() false döndürmemiş olmalı

Firefox kullanıldığı saptandı.

]]>
Bir çıktı üretmek için PHP echo komutunu kullanmak yerine, PHP kipinden çıkıldı ve düz HTML gönderildi. Burada dikkat edilmesi gereken önemli nokta, betiğin mantıksal akışının değişmiyor olmasıdır. str_contains işlevinden edinilen sonuca göre HTML kod çiftlerinden yalnızca biri görüntüleyiciye gönderilmektedir. Başka bir deyişle, bu işleyiş Firefox dizgesinin bulunup bulunmamasına bağlıdır.
Form Kullanımı PHP'nin en güçlü özelliklerinden biri HTML formlarına yaklaşım biçimidir. Bilinmesi gereken ilk önemli durum, form içindeki tüm elemanların PHP tarafından otomatik olarak kullanılabilir olacağıdır. PHP ile formların kullanımı ve daha ayrıntılı bilgi için Dış kaynaklı değişkenler bölümü okunabilir. Örnek HTML formu: - Örnek HTML formu ]]> Bu formda özel hiçbir şey yoktur. Hiçbir özel etiket içermeyen düz bir HTML formudur. Kullanıcı formu doldurup 'Gönder' tuşuna bastığında, action.php sayfası çağrılır. Bu dosyaya aşağıdakiler yazılabilir: - Formdan veri yazdırmak . Siz yaşındasınız. ]]> Bu betikten elde edilecek örnek çıktı: htmlspecialchars ve (int) kısımları haricinde yapılan iş oldukça açıktır. htmlspecialchars işlevi HTML'ye özel karakterlerin doğru şekilde kodlandığından emin olunmasını sağlar, dolayısıyla başkaları sayfanıza dışardan HTML etiketleri veya Javascript yerleştiremez. Yaş alanınında ise değerin bir tamsayı olması gerektiği bilindiğinden değerin int türüne dönüştürülmesiyle otomatik olarak bu alana girilmesi olası başı boş karakterlerden de kurtulmuş olunmaktadır. Ayrıca, bunun PHP'de otomatik olarak yapılmasını sağlamak için süzgeç eklentisi de kullanılabilirdi. $_POST['isim'] değişkeni ve $_POST['yaş'] değişkenleri PHP tarafından otomatik olarak oluşturulur. Daha önce $_SERVER süper küresel değişkeni kullanılmıştı, yukarıda ise tüm POST verisini içeren $_POST süper küresel değişkeni tanıtıldı. Formda tanımlı yöntemin POST oluşuna dikkat edilmelidir. GET yöntemi kullanılmış olsaydı, form bilgileri $_GET süper küresel değişkenine atanmış olacaktı. Bunların haricinde, istemciden gelen verinin hangi kaynaktan geldiği önemli değilse $_REQUEST süper küreseli de kullanılabilirdi. Bu değişken GET, POST ve COOKIE verilerinin birleşiminden oluşur.
Sonraki adım nedir? Edinilen yeni bilgilerle kılavuzun birçok bölümünün daha kolay anlaşılabilmesi ve okuyucunun örnek arşivinde bulunan birçok betiği kolayca okuyabilir duruma gelmesi amaçlanmıştır. PHP ile neler yapabileceği ile ilgili sunumlara ulaşmak için, &url.php.talks; adresindeki PHP Konferans Malzemeleri Sitesi ziyaret edilebilir.