PHP dosyaları temelde Web sunucusunda yer alan metin dosyalann-dan başka bir şey değildir. Web sunucusunun ayanna bağlı olarak .php3, .phtmi ya da .php uzamasıyla tanımlanırlar. Bu metin dosyasında PHP komutları ve HTML yer alır. Web sunucusu PHP olarak tanım¬lanmış örneğin .php3 uzantılı bir dosya çağrıldığı zaman bu dosyayı önce PHP derleyicisine gönderir. PHP derleyicisi aslında metin dosya-sı olan .php3 dosyasındaki komutları çalışürarak HTML’e dönüştürür. Ortaya çıkan HTML kodu da, isteği gönderen kullanıcıya Web sunu¬cusu aracılığıyla iletilerek işlem tamamlanmış olur.
PHP derleyicisi, kendisine ulaşan metin dosyasında ya da ‘ya kadar olan bölümü işleterek çıkan sonuçları, ki bunlar HTML komutları yerine düz metin de olabilir, Web sunucusu¬na iletir, îstenirse PHP dosyası ASP’de kullanılan <% ve %> notas-yonunu kullanarak da yazılabilir. Bir PHP dosyası sadece HTML’den, hem HTML hem PHP komutlanndan, ya da sadece PHP komutla-nndan oluşabilir. PHP’nin esnekliği, aslında hem HTML hem de PHP komutlannın aynı dosyada kullanılabilmesinden de gelir.
Bu bölümde anlatılanların, kitaptan okunurken aynı zamanda bilgi¬sayar karşısında tekrarlanması, yeni başlayanlar için oldukça önem¬lidir. Komudarın hemen pratiğe dökülmesi öğrenme sürecini hız¬landıracağı gibi çoğu profesyonel PHP yazıhmcısının bile gözden kaçırdığı hatalı kodlama alışkanlıklarının da düzeltilmesini sağlar.
Aşağıda anlatılan örnek komutlar, Apache’nin doküman dizininde yer alan index.php dosyasını bir metin editörüyle düzenleyerek aynen ya¬zılmalıdır. Yazılan komutları test etmek için, Web tarayıcısının adres saünna http://localhosVindex.php yazmak ve her yeni değişiklikte Web
açısındaki sayfayı yenileyerek (refresh) dosyayı tekrar çağırmak eterlidir. Aşağıdaki örneklerde anlatılan bilgiler ekrana doğru şekilde oelmiyorsa, ya kurulumda hata vardır, ya da index.php dosyası yoktur. Bu durumda kurulum bölümüne tekrar göz atılmalıdır.
PHP nin Yazım Kuralları
pHP temel olarak C dilinin sözdizimi üzerine inşa edilmiştir. Tüm PHP komutları; (noktah virgül) işaretiyle sonlandırılmalıdır. PHP’de yaygın olarak ekrana bilgi basmak için echo komutu kulla¬nılır. Aynı işlem için print ya da printf de kullanılabilir. PHP’de de¬ğişken ve komudar küçük/büyük harf duyarlıdır.
<?PHP echo ("Merhaba PHP Dünyası"); ?>
Yukandaki komut ekrana Merhaba PHP Dünyası kelimelerim yazar. PHP’nin yazılım kurallarınm esnekliği aynı komutun
<?PHP echo "Merhaba PHP Dünyası"; ?>
yada
<?PHP echo 'Merhaba PHP Dünyası'; ?>
şeklinde yazılmasma da izin verir. Genelde en üstteki parantez ve çift tırnaklı yazım şekli tercih edilir. PHP dosyalanna açıklayıcı bilgiler eklemek için tek satırlık açıklamalarda //, birden çok satırı kapsayacak açıklamalarda /* ve */ işaretleri kullanılır. Örneğin
// Bu ilk PHP yazılımım ve bu sadece bir başlangıç echo (“Merhaba PHP Dünyası”) ;
?>
şeklindeki bir PHP kodunda yer alan. Bu ilk PHP yazılımım ve bu sadece bir başlangıç kelimeleri PHP komutu değil¬dir ve PHP yorumlayıcısı bu kelimeleri basında // işareü yer aldığı için dikkate almaz. Bazı durumlarda PHP komutlarım silmek yeri¬ne başlarına // koymak da tercih edilebilir. Açıklama satırlarının birden çok satırda olması gereken durumlarda
<?PHP /* Bu ilk PHP yazılımım ve bu sadece bir başlangıç */ echo ("Merhaba PHP Dünyası"); ?>
/* ve */ arasına yazılan tüm bilgiler PHP komutları banndınyor olsa bile dikkate alınmaz. Ekrana basılacak bilgi metninin içinde tek ya da çift ümak işaretinin bulunması durumunda, ümak işaretinden önce \ işareü kullanılmalıdır. Aksi takdirde echo komutunun metin ayracı olan çift ya da tek tırnakla, basılacak bilgideki tırnaklar karışabilir.
<?PHP echo ("Merhaba \"PHP\" Dünyası"); ?>
Yukandaki PHP komutları ekrana Merhaba “PHP” Dünyası ya¬zacaktır. Çift tırnakların önündeki \ işareti, PHP’ye çift tırnağı ko¬mut olarak değil de, ekrana basılacak bilgi olarak görmesin! söyler.
Ekrana basılacak olan metin ya da HTML kodlarında C’de olduğu gibi \n belirteci yeni bir saüra geçmek için, \t belirteci sekme (tab) boşluğu vermek için kullanılır.
echo (“Deneme seee seeeee bir kiii
\n”); // Açıklamalar gerekirse PHP komutlarından sonra da yapılabilir.
?>
PHP komudarı, ağırlıklı olarak HTML komudarını Web sunucusu aracılığıyla Web tarayıcısına göndermek için kullanıldıklarından, echo komutunun içine HTML komutu yazmak da mümkündür. Ashnda HTML’de yeni bir saüra geçme etiketi olan
kullanı-larak tarayıcıya Deneme seee seeeee bir kiii
saün gönderilir. Gönderilecek bilgi içinde yer alan \n, tarayıcı tarafından yeni bir saür olarak yorumlanır. HTML’de yeni satır açmakla, me¬tin dosyasında yeni satır açmak arasında fark vardır. Yukandaki echo’dan \n parçasını çıkartarak tekrar deneme yapıldığında, tara¬yıcıda aynı görünüm elde edilir; ancak tarayıcıdaki dosyanın kaynak koduna bakıldığında aradaki fark anlaşılacaktır.
Değişken Türleri
Metin ve Sayı Değişkenleri
Değişken tanımlarken değişkenin barındıracağı bilginin metin ya da sayı olmasının çok fazla önemi yoktur. Metin olarak tanımlanan ama sayı içeren bir değişkende, daha sonra matematiksel işlem ya¬pabilmek mümkündür. Tüm diğer dillerde olduğu gibi PHP’de de sayı, uzun sayı, metin, dizi ve nesne tipi değişken tanımları yapıla¬bilir. Bu değişkenlerin tiplerinin önceden tanımlanarak PHP’ye bildirilmesi gerekmez.
PHP’de kullanılacak olan değişkenlerin harflerle başlaması ve için¬de sayı ve harfin dışında karakter barındırmaması gerekiyor. Her değişkenin $ işaretiyle başlaması şart. Değişkenlerin sayı içermesi durumunda, değişkene doğrudan sayı değeri atanırken, metin (yani string) atanacağı durumda çift ya da tek tırnakla bilgilerin ayrılması gerekir. Değişkenlerin birbirleriyle etkileşimleri de değişkenin türü-ne göre değişir. Bir metin değişkeniyle diğer bir metin değişkenim birleştirmek için . işareti kullanılır. Sayısal içerik barındıran değiş¬kenler için işlemler, tamamen matematiksel işaretlerle yapılır. De-ğişkenlere önceden değer atanmak istendiğinde = işareti kullanılır. Aşağıdaki örnekteld değişken4, içinde sayısal değişken barındır-masına rağmen arak bir metin değişkenidir.
$degiskenl = “Her balık “;
$degisken2 ° 31415;
$degisken3 = “turşu yemez”;
$değisken4 = “4564”;
Yukandaki listede değişkeni, degisken2 ve değişken4 metin değeri barındıran değişkenlerdir. Sayısal değer barındıran değişken sadece degisken2’dir. Metin değişkenleri, istenirse birbiriyle birleş¬tirilebilir. Bu birleştirme metinlerin ardarda sıralanmasıyla oluşur.
$degisken5 = $degiskenl.$degisken3.$degisken4;
Birleştirme işlemi sonunda yeni oluşturulan degisken5 aslında Her balık turşu yemez4564 değerim barındırıyor.
Değişkenler kıyaslanmak istendiğinde kullanılan işaretler de == ve o’dir. Eğer bir değişkenin değerinin, diğer bir değişkenin değerine eşit olduğunun denetlenmesi gerekiyorsa ==, eğer farklı olduğunun j denetlenmesi gerekiyorsa != kullanılır. Ünlem işareti her zaman doğru değeri yanlış, yanlış değeri doğruya çevirir. Eğer değişkenler
birbirine eşitse l yani doğru, değilse O yani yanlış sonucu oluşur. Aşağıdaki ilk satırda değişken l ve 2 birbirlerine eşit olmadı-jhndan O, yani yanlış sonucunu verirken, ikinci satır l yani doğru sonucunu verir.
echo $degiskenl == $degisken2 echo $degiskenl <> $degisken2
Değişkenleri tarayıcıya göndermek için echo komutu birkaç farklı yöntemde kullanılabilir.
$ad = “Yücel”; // Ad değişkenine Yücel değeri
atanıyor. $soyad = “Komçez”; // Soyad değişkenine Komçez
değeri atanıyor.
Örneğin yukandaki ad ve soyad bilgilerinin depolandığı değişkenle¬ri tarayıcıya göndermek için
echo $ad.$soyad;
komutu kullanılabilir. Bu komut ekrana YücelKomçez yazar. Ara-ya boşluk koymak için
echo $ad.” “.$soyad;
bir çift tırnak alanı içinde boşluk karakteri gönderilir. Bu durumda ekrana Yücel Komçez yazılacaktır. Bilgiyi belli bir formatta bas¬mak gerektiği zaman
echo “Ad: “.$ad.” Soyad: “.$soyad;
şeklinde yazım da mümkündür. Bu yazımda ekrana Ad : Yücel Soyad: Komçez yazılacaktır. Çift tırnakla yazımı değişkenden ayırmak bazen akıl karıştırıcı olabileceği için genelde
echo (“Ad: $ad Soyad: $soyad”);
yöntemiyle fbrmat ve değişken değerleri bir arada gönderilebilir. Bu durumda ekrana yazılacak olan bilgiyle bir önceki örnekte bası¬lan bilgi birebir aynıdır.
Metin ve sayısal değişkenler üzerinde yapılabilecek birçok işlem ilerleyen bölümlerde ayrıntılarıyla anlatılıyor.
Dizi Değişkenleri
PHP ve diğer yazılım dillerinde dizi değişkenleri olan array’leı ol¬dukça önemlidir. Dizi değişkenlerin en güzel örnek olarak, kişi ve yaş değişkenim barındıran bir dizi değişkeni verilebilir, a kişisinin yaşı 22, b kişisinin yaşı 18, c kişisinin yaşı 24 olsun. Bu durumda bu kişilerin isimlerim ve yaşlarım barındıran dizi değişkeni,
$yaslar[“a”] = 22;
$yaslar[“b”] = 18;
$yaslar[“c”] = 24;
şeklinde tanımlanabilir. Dizi değişkenleri tekil ve çoklu dizi olarak tanımlanabilirler. Bir dizi değişkenine sonradan yeni bir değer ekle-nerek, dizideki değişkenlerin sayışı artırılabilir. Dizi değişkeni dizile-rindeki değişken sayışı count komutuyla öğrenilebilir. Dizi değişken¬leri üzerinde kullanılabilecek birçok fonksiyon vardır. Dizi değişkeni fonksiyonlanna kitabın ilerleyen bölümlerinde değineceğiz.
Mantıksal Denetleme ve Döngüler
Hemen her bilgisayar dilindeki en önemli komutlar mantıksal dön¬gü komutlarıdır. Bu komutlar eğer, iken, değilse ve hepsi için keli-melerinin bilgisayardaki karşılıklarıdır. “Bir işlem sonucu doğru
lirse” diys başlayan mantıksal döngüler, bir sonuç için belli sayı-A tekrarlanarak bilgisayar programlarım oluştururlar. En çok kul-1 nilan mantıksal kıyaslama türü if türüdür. Bu komutla belli bir 1 .u-urnun doğruluğu denetlenir ve istenen durumda farklı bir ko¬mut çağrılır. Eğer mantıksal denetlemeden yanlış sonucu dönerse else komutuyla yanlış duruma göre istenen komut çağrılır. Çağrılan komut bir ya da birden çok olabilir. Komut dizilerim birbirinden ayırmak için matematik parantezi kullanılır.
<?PHP if (Çdegiskeni == $degisken2) ( echo ("Değişkenler birbirine eşit."); ) else ( echo ("Değişkenler birbirine eşit değil."); } Bazı durumlarda bir değişkenin alacağı birkaç farklı duruma göre işlem yapılması gerekir. Svvitch kalıbıyla bunu yapmak en kolayıdır. Örneğin ks adında bir değişkenin alacağı değerler k ve s olsun. If kalıbıyla yazmak yerine svvitch kalıbı kullanılırsa switch ($ks) { case "k": $metin = "Kiralık"; break; case "s": $metin = "Satılık"; break; case "": $hata = l; break; ) ?>
şeklinde kullanım gerekir. Her durum case kelimesiyle ayrı ayn belirtilir. Eğer ks değişkeni k harfıyse, metin adındaki değişkene Kiralık değeri atanır. Eğer ks değişkeni s değerin! taşıyorsa, metin değişkenine Satılık değeri atanır. Her bir durumdan sonra mantıksal döngüden çıkmak için break komutunun kulla-nılması zaman kazancı sağlar, ks değişkeninin boş gelme ihtimali de göz önünde bulundurulduğunda, hata adında bir değişkene l değeri atanarak hata kontrolü de gerçekleştirilmiş olur. hata de¬ğişkeninin değeri daha sonra ayrı bir mantıksal döngüde denetlene-rek, hata’nın değerine göre bir hata mesajı ekrana basılabilir.
Mantıksal döngüler de belli bir sonuç için sürekli tekrarlanan iş¬lemlerde kullanılırlar. En yaygın olarak tercih edilenleri vvhile-do ve for döngüleridir. Bu döngüler genelde aynı işlemin belli bir sayıda tekrar edilmesi durumunda oldukça kullanışlıdırlar. Birden 10’a kadar sayıların ekrana basılması için gereken döngüde bir sayaç kullanılarak, sayacın değeri her ekrana basma işlemi sonucunda bir artırılır. Sayaç değeri while komutuyla kontrol edilerek, 10 sayı-sından küçük ve eşitse döngüye tekrar girilir. Sayaç 10’dan büyük bir değer aldığında döngüden çıkılarak işlem bitirilir.
<?PHP $s = l; while ($s <= 10) { print $s++; ) ?>
For komutuyla yapılan mantıksal döngüler de vvhile-do döngülerine oldukça benzer. Diğer döngü ve denetleme komutlannda olduğu gibi, belli bir koşul gerçekleştikçe işlemin yapılmasına devam eder. Aşağıdaki for döngüsü de l’den 10’a kadar olan sayıları ekrana basıyor. For döngüsünün noktalı virgüle kadar olan ilk kısmı, döngü
öncesinde çağırılan komut, ikinci kısım döngünün devam etme şartı, üçüncü kısım da döngü sonunda çağırılması gereken komut olarak kullanılır. For döngüsünden sonra gelen, matematiksel pa¬rantezler içinde kalan kısımda döngü boyunca çalıştırılan komutlar bulunur.
<?PHP for ($s = l; $s <= 10; $s++) { print $s; }
Döngünün bitirilmesi gereken durumlarda break komutu kullanı¬lır. Bazı durumlarda döngünün acilen sona erdirilmesi gerekir. Örneğin l’den 100’e kadar ekrana sayıların basılacağı durumda eğer sayının hem 2’ye hem 3’e hem de 11’e bölünmesi durumun¬da döngüden çıkılması isteniyorsa, break komutu kullanılmalıdır. Bunun için sayacın o anda aldığı sayı değerinin 2’ye 3’e ve 11’e bölününce kalanın O olması gerekmektedir. Eğer bu üç bölümden de sonuç O gelirse, bunların tümünün aynı anda O olduğu durum¬da doğru olan mantıksal ifade !($s % 2) and ! ($s%3) and î ($s%ll) olacaktır. Yüzde işareti, PHP’de matematiksel mod işlemi için kullanılır.
<?PHP for ($s = l; $s <= 100; $s++) { print $s; if (!($s % 2) and !($s%3) and !($s%ll)) ( break; } }
Fonksiyonlar
Kullanıcının belli işlemleri sık yapmaya başladığı durumlarda bunların fonksiyonlarda toplanarak gruplanması faydalı olabilir. Örneğin bazı sayıların belli koşulları sürekli sağlaması durumunda bu sayıların 10 eksiltilmesi gerekiyorsa bir fonksiyon tanımlanarak bu işlem otomatize edilebilir. Aşağıdaki fonksiyon, sayının 2, 3 ve 11’e bölünebildiği du¬rumlarda sayıdan 10 eksiltiyor. Eğer sayı bu rakamlara bölünemiyorsa fonksiyona giren sayı aynen geri döndürülüyor. Fonksiyonun çağrd-ması için isminin ve gönderilecek olan değişkenin yazılması yeterli. Fonksiyonu tanımlarken kullanılan değişken isminin fonksiyonun içinde de aynen yer almaşı önemlidir. Fonksiyonun sonucunda üreti¬lecek değişkenin retum kullanılarak geriye gönderilmesi gerekiyor.
<?PHP function eksiltici ($sayi) {if (!($sayi % 2) and !($sayi%3) and !($sayi%ll)) { $sayi = $sayi - 10; } echo $sayi; } eksiltici(15);
Fonksiyonlara birden fazla sayıda değişken gönderebilmek de mümkündür. Tüm değişkenler virgülle aynlarak fonksiyona gönde¬rilir:
<?PHP function topla($x, $y) { $toplam = $x + $y; return $toplam } echo topla(15,20);
Yukarıdaki fonksiyona gönderilen x ve y değerleri sırasıyla 15 ve 20’dir. Bu değerlere fonksiyon içinde uygulanan toplama işlemin-den sonra aldıkları değer return komutuyla PHP’ye geri gönde¬riliyor. Daha sonra fonksiyonun çağrılmasıyla ekrana 35 sayışı ba¬sılacaktır. Bazı durumlarda fonksiyona değer gönderilmesi klasik yolla yapılmaz. Yani fonksiyon adından sonra parantez açılarak değişken isimlerinin virgülle aynlarak gönderme yöntemi kullanıl¬maz. Bu yöntemde fonksiyon adından sonra sadece parantez aça-rak kapatmak yeterli olur.
<?PHP function topla() { global $x, $y; $x = $x + $y; -} ?>
Fonksiyon içinden çağırılan global komutuyla, fonksiyon dışında daha önce tanımlanmış olan değişken değerleri alınır veya fonksi¬yon içinde oluşturulan ve global komutuyla belirlenen değiş¬kenler dışarıya değerleriyle birlikte çıkartılır. Normalde fonksiyon¬larda kullanılan değişken adları sadece fonksiyon içinde geçerlidir. Yukarıdaki fonksiyondan sonra x değişkeninin değeri y değeriyle toplanarak değişmiştir. Eğer x’in değeri 10 ve y’nin değeri 15 ise, fonksiyonun çağırılmasından sonra x’in değeri 25 olacaktır.
PHP’ye Dış Kaynaklardan Bilgi Alma
Tüm programlama dillerinde yazılan programlar, bazı değişkenleri kullanıcıdan alarak, bu değişkenler üzerinde mantıksal denetleme ve döngüler sonucunda kullanıcıya belli bir tepkiyi verir. PHP bir Web yazıhmı geliştirme dili olduğundan, kullanıcıdan gelecek de¬ğişkenler üç şekilde alınabilir:
1. Kullanıcı tarayıcıdaki bir formu doldurarak PHP’ye Post ya da Get metoduyla gönderir
2. Kullanıcının bilgisayarında daha önceden depolanmış bir cookie’dea değişken alınır.
3. Kullanıcı tarayıcının adres satırına değişkeni ya2arak Query String yoluyla değişkeni gönderir.
Adres Saiırından Bilgi Almak
En az kullanılan yöntem olmasına rağmen, en kolay bilgi alma yöntemi Query String denilen adres satirından bilgi alma yöntemidir. internet’te dolaşırken oldukça sık rastlanılan uzun ve karmaşık adreslerde hep bu yöntem kullanılmaktadır. Örneğin
http://www.baslangic.netyazigoster.php3?yaziid=14
adresinde www.baslangic.net adresi sunucunun adresi, yazigoster.php3 PHP dosyasının kendisidir. PHP dosyasın! izleyen soru işaretinden sonra gelen tüm bilgiler, PHP’de değişken olarak tanımlanır. Yuka-rıdaki örnekte tanımlanan değişkenin adı yaziid ve değeri de 14’tür. Birden çok değişkenin bir PHP dosyasma gönderilmesi gerektiğin-de değişkenlerin arasına & işareti konulması gerekir. PHP’ye dışar¬dan adres satirından bilgi alırken genel sıralama
http://sunucuadı/Phpdosyasıadı?değişken1=değeri&değişken2= değeri&değişken3 =değeri&…
şeklinde olacaktır. Örnek olarak sistemde hazırlanabilecek index.php adındaki bir PHP dosyası eğer,
<?PHP echo ("Dışardan gönderilen değer = $gonderilen"); ?>
şeklindeyse bu dosyaya, dışarıdan başlangıç kelimesi adres satırına yazilarak gönderilebilir:
http://localhost/index.php?gonderilen=başlangıç Bu durumda index.php dosyası ekrana şunu yazar:
Dışardan gönderilen değer = başlangıç
Benzer şekilde birden çok değer örneğin ad ve soyad değerlerim hazırlanacak başka bir index.php dosyasında denenebilir.
<?PHP echo ("Merhaba... Adınız : $ad, soyadınız da : $soyad"); ?>
Bu PHP dosyasına http://localhost/index.php?ad=Ali&soyad=Halaç
adresi tarayıciya yazilarak ad ve soyad bilgisi olarak Ali Halaç gön¬derilir. Bu durumda PHP ekrana,
Merhaba… Adınız : Ali, soyadınız da : Halaç
yazacaktır. Dışardan bilgi alış yöntemlerinden en basiti olan adres satınndan bilgi alma özelliği karmaşık Web uygulamalannda olduk¬ça yoğun bir şekilde kullanılır.
Formdan Bilgi Alma
Web yazılımları, ilk önceleri bazı bilgileri kullanıcılardan Web su-nucusu üzerinden almak üzere geliştirildiler. Günümüzde ziyaret¬çilerin yorumlannın toplanacağı öneri formları, dileklerin alındığı
misafir defterleri, anketler ya da iş başvuru formları, ziyaretçilerin belirlediği değişkenlerin Web yazılımı aracılığıyla ahnmasmdan başka bir şey değildir. Web yazılımı, kullanıcının doldurduğu HTML formunda gönderme işlemi gerçekleştiği zaman bilgileri alarak bir adrese e-posta olarak atabilir, bir dosyaya yazabilir ya da veritabanında depolayabilir.
Bir önceki yöntemde adres satınndan ad ve soyad bilgilerim ekrana yazan bir PHP dosyası hazırlanmışti. Aynı işlevi gören bir PHP dosyası hazırlamadan önce bilgi girişinin yapılacağı HTML formu-nun hazırlanması gerekmektedir.
<form action="form.php" method="post"> Ad :<input type="text" name="ad" size="6" maxlength="16"> Soyad :<input type="text" name="soyad" size="6" maxlength=="16"> <input type="submit" name="gonderim" value="'Gönder" </form>
Yukandaki HTML komutları form.htm adında bir dosya içine kaydedi¬lir. Bu dosya kullanıcıların karşısına gelecek olan bilgi formundan baş¬ka bir şey değildir. Formda ad ve soyad bilgileri için iki tane metin alanı ve bir gönder tuşu vardır. HTML’de hazırlanan bu formda, her bilgi alanına bir ad verilmesi gerekmektedir. Bu adlar bilgilerin gönde¬rileceği PHP dosyasında değişken olarak alınarak işlem görecektir.
komutuyla ad adında en fazla 16 harf alabilen 6 harf uzunluğunda bir metin alanı açıhr. Buraya ziyaretçi tarafından yazılacak olan bilgiler $ad adındaki PHP değişkeni tarafından taşınacaktır.
Benzer bir alan da soyad bilgisi için yukandaki formda bulunuyor. Kullanıcıdan alınan bilgilerin gönderileceği hedef form.php dosyası için HTML komutlarından form komutu,
<form action="form.php" method="post">
şeklinde kullanılır. Gönderim metodu olarak post yöntemi, bilgi¬lerin PHP dosyasına gönderümesi için gereklidir. Kullanıcı bilgi formunu doldurduktan sonra Gönder tuşuna bastiğında form.php dosyası $ad, $soyad şeklinde iki değişkeni formun bulunduğu HTML dosyasından alacaktır.
<?PHP echo ("Merhaba... Adınız : $ad, soyadınız da : $soyad") ; ?>
Az önceki örnekte kullanılan PHP komutları, hiçbir değişikliğe ihtiyaç duyulmadan bu yöntemle de kullanılabilir. PHP komutları için bilginin nasıl gönderildiği önemli değildir. Bilginin gönderiliş yöntemi ve aralarındaki sıralama öncelikleri, daha ilerde anlatılacak. Yukandaki PHP dosyasına formdan gönderilen değerler, ad olarak “Mehmet” soyad olarak da “Sakin” ise ekrana
Merhaba… Adınız : Mehmet, soyadınız da : Sakin
şeklinde bir bilgi dönecektir. PHP’yi güçlü kılan özelliklerinden biri, PHP komutlanyla HTML komutlarının bir arada kullanılabil-mesidir. Form ve bilgiyi işleyecek ayn bir PHP dosyası yerine, hem formu hem de bilgi işleme komudarını barındıran bir PHP dosya-sını hazırlamak mümkündür. Bu yöntemde dikkatli gözlerden kaçmaması gereken önemli ve sık kullanılan bir püf bulunmaktadır.
Formun bulunduğu HTML bölümünün, formda gönderme işlemi yapıldıktan sonra gösterilmemesini sağlamak için Gönder tuşuna bir ad vermek gerekmektedir. Formda
<input type="submit" name="gonderim" value="Gönder">
satırıyla Gönder tuşuna gönderim adı zaten verilmiştir. Gönderme tuşlarına bir ad vermek, iki ayrı dosya halinde kullanımlarda çok gerekli olmamakla birlikte tek bir dosya hazırlanacaksa Gönder tuşuna mutlaka bir ad verilmelidir.
<form action="form.php" method="post"> Ad :<input type="text" name="ad" size="6" maxlength="16"> Soyad :<input type="text" name='"soyad" size="6" nıaxlength="16"> <input type="submit" name="gonderim" value°"Gönder"> </form> <? if ($gonderim) { echo ("Merhaba... Adınız : $ad, soyadınız da : $soyad") ; } ?>
Yukandaki tüm komutlar form.php dosyasına yazılır. Bu dosya tara¬yıcıda çağrıldığı zaman, ekrana en üstte yer alan HTML komutları bire bir olarak gönderilecektir. PHP yorumlayıcısı işaretine rastladığı zaman PHP komutlarının başladığım anlar ve ?> işaredne kadar yorumlamaya başlar. Çağırılan form.php dosyası ekrana bilgi formundan başka bir şey dökmeyecektir. Form doldurularak
ŞEKİL3.1
Ekrana gelen görüntünün üzerinde HTML’le daha fazla düzenleme yapabilmek mümkün. Yukandaki PHP kodu basit bir formu oluşturup ekrana basacaktır.
gönderildiği zaman aynı dosya tekrar çağırılacaktır. Gönder tuşunun adı olan gönderim değişkeni form.php dosyası içerisinde yer alan PHP komudannın çağırılmasını sağlar.
PHP komutlannın ilki olan if ($gonderim) komutu gönderim adında bir değişkenin var olup olmadığı hakkında karar verir. Eğer PHP dosyasına gönderim adında bir değişken gönderildiyse, matematiksel parantezler içindeki döngüye başlar, eğer gönderim adında bir değişken yoksa döngüye girmez ve PHP yorumlayıcısı Yukan daki örnekte başka PHP komutu çalıştırmadan görevini tamamlar. gönderim adındaki değişken sadece kullanıcı formdaki Gönder tuşu na basınca oluşur. Dolayısıyla ziyaretçi forma bilgi girse de girmese de Gönder tuşuna bastıysa, PHP komutlan çalışmaya başlar. Forma l girilen ad ve soyad bilgileri bir önceki örnekteki gibi Mehmet Sakin olsun. Bu durumda ekrana bilgi giriş formu ve hemen altında
Merhaba… Adınız : Mehmet, soyadınız da : Sakin
yazan bir sayfa gelecektir. Normalde Web formlannda bilgi tama men alındıysa, bilgi formunu ziyaretçiye göstermek gerekli değildir. Dolayısıyla formun ekrana çıkmaması sağlanmalıdır. Bunun için gönderim adındaki değişkene bağlı ikinci bir mantık döngüsü kurulur.
<?PHP if ($gonderim) { echo ("Merhaba... Adınız : $ad, soyadınız da : $soyad"); } else { ?> <form action="form.php" method="post"> Ad :<input type="text" name="ad" size="6" maxlength="16"> Soyad :<input type="text" name="soyad" size="6" maxlength="16"> <input type="submit" name="gonderim" value="Gönder"> </form> <? } ?>
PHP dosyasının içinde HTML komutşarı mutlaka ve ?> işa-rederinin dışında kullanılmalıdır. Yukandaki kod sayesinde gönderim adında bir değişken tanımlanmamışken if döngüsünde HTML formun ekrana gönderilmesi sağlanır. HTML komutlarıysa PHP komutlarının iç içe geçmiş olarak kullanılmasında herhangi bir engel yoktur. PHP kodu gönderim adında bir değişken varsa sadece
Merhaba… Adınız ; Mehmet, soyadınız da : Sakin şeldinde bir sonuç üretir. Ekrana bilgi alma formunu basmaz.
Cookie den Bilgi Alma
Cookie’ler (çerez de denir) Web sunucuları tarafından ziyaretçilerin tarayıcılarına gönderilen ufak bilgi depolama araçlarıdır. Ziyaretçiler tarayıcılarının ayarlarım değiştirmedikleri sürece, ziyaret ettikleri sitelerin onlara cookie gönderip göndermediği hakkında bilgi sahibi olamazlar. Cookie’ler ziyaretçinin bilgisayannda gönderen Web sunucusu tarafından belirlenen süre boyunca kalırlar. Bu süre bir¬kaç saat olabileceği gibi aylar ya da yıl cinsinden de olabilir. Cookie’lerin kullanımına en güzel örnek Yahoo, Hotmail ya da Egroups’un şifre denetleme uygulamalarıdır. Bu sitelerin kullanıcıları isterlerse kendilerine sunulan ek özellik sayesinde belirli bir süre boyunca bir daha şifre sorulmadan siteyi kullanabilirler. Bu yöntemde şifre ya da denedeme bilgisi bu sitelerin Web sunucuları tarafından kullanıcının bilgisayarına cookie olarak atılır ve ziyaretçinin siteye her gelişinde Web sunucusunda çalışan uygulama tarafından tanınır.
PHP’de cookie’ler dışardan bilgi almakta ve ona göre hareket etmekte kullanılır. Örneğin ziyaretçinin bilgisayarına ad adında bir Cookie atıldıysa bu PHP’de $ad değişkeni tarafından çağrılabilir. PHP’yle cookie atma yöntemleri ilerideki örnek uygulamalarda anlatılacak.
<?PHP echo ("Merhaba... Adınız : $ad, soyadınız da : $soyad"); ?>
Daha önceki örnektekiyle aynı komudan içeren PHP dosyası ziyaretçinin bilgisayannda yer alan ad ve soyad adındaki cookie’lere depolanmış bilgileri alarak ekrana yazar. Eğer cookie’lerde ad, soyad olarak Mehmet Sakin depolandıysa ekrana
Merhaba… Adınız : Mehmet, soyadınız da : Sakin
yazılacaktır. Bir cookie sadece atıldığı Web sunucusu tarafından çağrılabilir. Yani Yahoo’nun attığı cookie, Hotmail tarafından bilinemez.
ŞEKİL 3.2
Windows’ta cookie’ler Windows dizininin altında yer alır. Kullanıcının ziyaret ettiği sitelerin gönderdiği cookie’ler bu dizinde toplanır.
Çevre Değişkenlerinden Bilgi Alma
Daha önce anlatılan üç farklı yöntemde, site ziyaretçilerinden bilgi alma yolları anlatıldı. PHP’nin çalıştığı bilgisayara ait bazı değişkenler de zaman zaman PHP içinde kullanılabilir. Web sunucusunun ayarlı olduğu saat ve tarih bilgileri de aslında PHP’ye dışarıdan alınan bilgi türleri arasındadır. Web sunucusu ve bilgisayarın çalışırken kullandığı bazı değişkenler, PHP’de getenv() komutuyla alınır. Çevre değişkenlerin tümünü listelemek için phpinfo() komutu kullanılır. Bu komut hem PHP’yi test amaçlı hem de genel versiyon ve diğer birçok bilgiyi almakta oldukça sık başvurulan bir komuttur.
<?PHP phpinfoO ; ?> Sistemde bilgi.php adında bir dosya hazırlayarak her zaman PHP ve çevre değerleri hakkında bilgi almak için Yukarıdaki metin aynen bilgi.php içine yazılmalıdır. Ekranda Environment başlığı altında yer alan tüm liste getenv() komutuyla birlikte kullanılabilir. Örneğin kullanılan Web sunucusu hakkında bilgi almak için <?PHP getenv(SERVER_SIGNATURE) ; ?>
kullanılabilir.
Fonksiyon Kütüphaneleri
PHP kullanarak site geliştirirken, belli fonksiyonlar sitede her PHP dosyasında kullanılıyor olabilir. Her PHP dosyasında tekrar tekrar o fonksiyonun tanımlanması yerine, bu fonksiyonun bir ortak dosyada tutularak diğer PHP dosyaları tarafından çağrılması tercih edilebilir. Bu sayede, bir fonksiyonda yapılacak değişiklik için, tüm PHP dosyalarının açılarak gereken düzeltmelerin yapılması gerekliliği ortadan kalkar. PHP’de ortak dosya kullanımı için indude ya da require komutu kullanılır. Bu komutlar sayesinde, PHP dosyalarına dışarıdan fonksiyon kütüphanesi dosyaları ya da başka ortak bilgiler içeren dosyalar katılabilir. Örneğin bir sitede kullanılan 15 farklı PHP dosyasının ilk satırında
include(“potortakkoy.php”);
komutu çağırılıyor olsun. Bu sayede tüm PHP dosyalarında kullanılan ortak fonksiyonlar, potortakkoy.php dosyasında değişiklik yapılarak düzeltilmiş olur.
Benzer şekilde Web siteleri de belli HTML kalıplarının tekrarından oluşurlar. Tarzı oturmuş sitelerde genelde 3 ya da 4 farklı görünüm kalıbında HTML dosyası vardır. Bu sayı bazı portal ve daha gelişmiş sitelerde 10’a kadar çıkabilir ancak ziyaretçilerin siteyi yabancılaşmaması için farklı görünümde olan sayfa sayısının az tutulmasında fayda vardır. PHP’nin include komutu sitenin HTML kısımlarında da kullanışlı olabilir. Genelde sitelerin tüm sayfalarında sabit olarak kullanılan menü ve navigasyon bağlarının bir dosyada toplanması, siteye daha sonra eklenebilecek yeni bölümlerin sadece bir ya da iki dosyada değişiklik yaparak düzeltilmesine olanak sağlar. Aynı şekilde sitelerdeki sayfaların alt bölümlerinde yer alan copyright, tarih ve firma bilgilerinin de bir PHP dosyasına konarak include komutuyla diğer dosyalara yerleştirilmesi, sitenin yönetiminde büyük kolaylıklar sağlar. Aksi taktirde, örneğin tarihin 2000’den 2001’e değiştirilmesi gereken bir durumda, tüm sitedeki
dosyaların içine girilerek tarihin değiştirilmesi oldukça zahmetli ve zor olabilir.
Hata Mesajlarım Denetleme
PHP komutları bazı durumlarda kullanıcı hatasından dolayı yanlış yazılabilir. Ya da yanlış kullanılan bir PHP komutu kullanıcıya uyan göndermek isteyebilir. Bu durumda ekrana basılan uyan mesajları oluşturulacak HTML sayfasını etkileyebilir. Hata mesajlarının çıkmasını engellemek için fonksiyon komutlarının basma @ işareti konabilir.
PHP Çalışma Süresinin Belirlenmesi
PHP dosyaları normal kurulumla en fazla 30 saniye sürecek şekilde ayarlıdır. Bu süreyi php.ini dosyası içinde artırabilmek mümkündür. Konfigürasyon dosyası olan php.ini’yi açmadan da istenilen PHP dosyalarının çalışma süreleri belirlenebilir. Bunun için set_time_limit() komutu kullanılır. Bu komutta parantez içine O yazılırsa, PHP dosyasının çalışma süresi sonsuz yapılmış olur. Genelde PHP dosyalarım sonsuz sürede çalıştırmak yerine, bir süre belirtmek tercih edilir. Örneğin en fazla iki dakika sürmesi beklenen bir PHP dosyası için, 120 saniye
set_time_limit(120) ;
şeklinde yazılır. Bu satırın PHP dosyasının en üstlerinde yer alma-
sının faydası vardır.
PHP Dosyasnı Durdurma
Bazı durumlarda PHP dosyalarının çalışması engellenmek istenebilir. Sonsuz döngüye girdiği anlaşılan bir durumda PHP dosyasına kendisin! durdurması söylenebilir. Bunun için iki temel komut vardır ; exit ve die. Bu komutlar PHP yorumlayıcısı tarafından yorumlandıkları anda, PHP dosyasının çalıştırılması sona erer. exit komutu hiçbir mesaj vermeden PHP dosyasını durdururken, die komutu bir mesajla birlikte dosyayı çalıştırmayı bitirebilir. Bir hata oluşması durumunda
die “Hata Oluştu”;
satırı ekrana Hata Oluştu yazar ve PHP dosyasının çalıştırılmasını durdurur.
İyi Kod Yazma Alışkanlıkları
İlk defa bilgisayar programlama dili öğrenen okuyucuların bazı temel alışkanlıklar hakkında bilgi eksiği olabilir. Başka yazılım dillerim bilen yazılımcıların da dikkat etmesi gereken verimli ve iyi Web yazılım geliştirme alışkanlıkları, bazı PHP komutlarım doğru ve yerinde kullanmaktan geçer. Herhangi bir programlama dili için sağlam ve çalışan bir yazılım iyi kodlanmış olmak zorunda değildir.
Özellikle Internet’in doğası gereği geliştirilen PHP uygulamalarına sürekli yeni bir şeyler eklemek ve değiştirmek gerekir. Başından doğru planlanmamış bir yazılım uygulamasında yeni eklemeler gerektiğinde, ‘sil baştan’ yapar gibi kod yazmak zorunda kalınabilir. Ya da uzunca bir süre sonra daha önce hazırlanan bir kodun düzenlenmesi ve yenilenmesi gerektiğinde kodu tekrar hatırlamak için gereken sürenin kısa tutulması için PHP yazılımcısının kendi tarzında tutarlı ve disiplinli olması önem kazanır. Uygulama geliştirilirken açıklayıcı metinlerin // ve /*, */ işaretlerinin kullanılarak girilmesi, hem programcının kendi kodlarım daha rahat takip etmesini hem de başka geliştiricilerin daha kolay anlamasını sağlar.
Leave a Reply