E N D
Öğr.Gör.Şükrü KAYA PHP’ye Giriş
PHP, "PHP: HypertextPreprocessor" sözcüklerinin baş harfleriyle temsil edilen HTML içine gömülebilir açık kaynak kodlu, genel amaçlı, özellikle site geliştirmeye uygun bir betik dilidir. (PHP ilk çıktığında adını "PersonalHomePage " kelimelerinin baş harflerinden almıştır.) Dil yapısının önemli bir kısmını C, Java ve Perl gibi dillerden almış, kendisine has özelliklerle bu yapıyı pekiştirmiştir. PHP, özellikle dinamik web sayfaları oluşturmak amacıyla kullanılan, sunucu tarafında çalışan bir programlama dilidir. PHP Nedir? 1/3
Bir ziyaretçi siteye girdiğinde, sunucu PHP komutlarını çalıştırır ve o anda sunucu bir HTML çıktısı üretir. Ziyaretçinin bütün görebileceği bu çıktı olur. PHP kodunu göremez. Bu durum; ziyaretçinin kullandığı tarayıcıya, günün saatine veya akla gelebilecek her türlü değişkene bağlı olarak farklı bir sayfa üretilip gönderilebilmesini sağlar. Dinamik web sayfası kavramı da buradan gelmektedir. Bu şekilde, tamamıyla kullanıcıya özel sayfalar oluşturmak PHP ile hiç de zor değildir. PHP Nedir? 2/3
PHP, bir Script dilidir; yani kodları düz yazı dosyaları halinde kaydedilir ve kullanılacağı ortamda bir yorumlayıcı tarafından yorumlanır. PHP ile yazılacak programları, derlemek yani ortaya bir EXE veya çalıştırılabilir başka bir dosya çıkartmaya gerek yoktur. Fakat, PHP Script'lerini çalıştırabilmek için bu dili bilen bir programa ihtiyaç 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 Sunucusu PHP’yi anlar hale getirilmelidir. PHP Nedir? 3/3
RasmusLerdorf, 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 tarafı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ı. PHP’nin Tarihçesi 1/3
RasmusLerdorf, adına PersonalHomePage (Kişisel Ana Sayfa) dediği bu programın çok tutulması üzerine bir form yoluyla ziyaretçiden gelen bilgileri işlemeyi sağlayan eklerini yazdı ve böylece programın adı PHP/FI (Form Interpreter/Form Yorumlayıcı) oldu. Kimileri programın bu sürümüne PHP2 adını taktı, bu ad, programın çok değişmesine ve gelişmesine rağmen uzun süre değişmeden kaldı. RasmusLerdorf, 1995'in ortalarında, ZeevSuraski, StigBakken, ShaneCaraveo ve JimWinstead ile bir grup kurdu ve PHP'yiPerl'den ödünç alma rutinlerle iş yapan bir paket olmaktan çıkartıp, Nesne-Yönelimli (Object-Oriented) bir programlama dili haline getirdi. PHP’nin Tarihçesi 2/3
PHP yorumcusu, bugün Zend-çekirdeği adı verilen bir Scripting teknolojisine dayalı olarak, ZeevSuraski ile AndiGutmans tarafından sıfırdan, tamamen yeniden yazılmış bulunuyor. Bugün bu dilin resmî adı "PHP: HypertextPreprocessor" (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. PHP’nin Tarihçesi 3/3
PHP’nin Avantajları • Ücretsiz • Açık kaynak kodlu • Hızlı • Kararlı (Stabil) • Platformlardan bağımsız • Derlemeye gerek duyulmaması • Çok geniş kullanım alanı • Kolay ve güçlü • Server taraflı çalışması • Sadece web için yazılmış olması • Tüm veritabanlarını kullanması
PHP betikleri ( veya dosyaları) <? php(veya<?) işaretleri ile başlar ve ?> işareti ile biter. Deyimler (Satırlar) ";" karakteri ile biter. Metinler " veya ' karakterleri arasına yazılır. Metin içindeki özel karakterlerin başına \ karakteri eklenir. Betik içine açıklama koymak için #, // veya /**/ kullanılır. Kısaca Yazım Kuralları – 1/3
Üretilen HTML kodlarının düzenini ayarlamak için aşağıdaki özel karakterler kullanılır. • \n Yeni Satıra geçiş yapar (New Line) • \r Satır Başı (Return) • \t Sekme (Tab) karakteri Kısaca Yazım Kuralları – 2/3 <?php echo "İyi olmak kolaydır, zor olan adil olmaktır. \n"; echo "\t\tAnonim Atasözü\r"; echo "Bu sözü sevdim. "; ?> HTML Kaynağı Çıktısı: İyi olmak kolaydır, zor olan adil olmaktır. Anonim Atasözü Bu sözü sevdim.
PHP Kodları içindeki metinler (yazılar, string ifadeler) " veya ' işaretleri arasına yazılır. Metin içindeki özel karakterlerin başına \ (kaçış karakteri) karakteri eklenir. Kısaca Yazım Kuralları – 3/3 <?php echo "Bu bir örnek \"PHP\" betiği. "; ?> Tarayıcı Çıktısı: Bu bir örnek "PHP" betiği.
1. <?php echo 'XHTML ya da XML belgeleri sunacaksanız, böyle yapın'; ?> • 2. <scriptlanguage="php">echo 'bazı düzenleyiciler (FrontPage gibi) işlem yönergelerini sevmezler'; </script> • 3. <? echo 'Bu en basit, SGML işlem yönergesidir'; ?> <?= ifade ?> Bu "<? echo ifade ?>" için bir kısayoldur. • 4. <% echo 'İsterseniz ASP tarzı etiketler kullanabilirsiniz'; %> <%= $degisken; # Bu "<% echo . . ." %> için bir kısayoldur. PHP Blok Yapısı - 1/2 1 Sürekli Kullanılan Yöntem 2 Az Kullanılan Yöntem 3. Ve 4. Yöntemi Kullanabilmek için php.ini dosyasında ayar yapmak gerekir (short_open_tag = on, asp_tags = on). Bu nedenle bu yöntemle yazılan kodlar taşınabilir değildir.
Satır sonlarına C ve Perl’deki gibi, her deyimin (veya satırın) ";" işareti ile bitirilmesi gerekir. • <?phpecho"Bu bir php bloğudur." ?> • PHP Kod bloğunun sonuna ";" konması gerekmez. Kapanış etiketi (?>) aynı zamanda satır sonu işaretini kendisi ekler. • <?php echo"Merhaba dostlar."; ?> PHP Blok Yapısı - 2/2
"Tek satırlık" bir açıklamalar için satır başına “ //” işareti ya da “#” işareti, birden fazla satır açıklaması için “/*” ile başlayan “*/” ile biten işaretler kullanılır. • Açıklama bu iki işaret arasına yazılır.Örnek: <?phpecho 'Bu bir denemedir'; //Bu tek satırlık c++ tarzı açıklamadır/*Bu, C tarzı çok satırlıbir açıklamadır*/echo 'Bir deneme daha';echo 'Bu da sonuncusu'; #Bu tek satırlık kabuk tarzı açıklamadır ?> Kodlara Açıklama Satırı Ekleme
<?phpif ($ifade) {?><strong>Bu önerme doğrudur.</strong><?php } else {?> <strong>Bu önerme yanlıştır.</strong><?php }?> Örnek PHP Betiği - 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <title>Örnek</title> </head> <body> <?phpif ($ifade) {?><strong>Bu önerme doğrudur.</strong><?php } else {?> <strong>Bu önerme yanlıştır.</strong><?php }?> </body></html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Örnek</title> </head> <body> <?phpecho 'XHTML ya da XML belgeleri sunacaksanız, böyle yapın<br><br>'; ?> <scriptlanguage="php"> echo 'bazı düzenleyiciler (FrontPage gibi) işlem yönergelerini sevmezler<br><br>'; </script> <? echo 'Bu en basit, SGML işlem yönergesidir<br><br>'; ?> <?= ifade ?> Bu "<? echo ifade ?>" için bir kısayoldur.<br><br> <% echo 'İsterseniz ASP tarzı etiketler kullanabilirsiniz<br><br>'; %> <%= $degisken; # Bu "<% echo . . ." %> için bir kısayoldur. </body> </html> Örnek PHP Betiği - 3
Önceden tanımlanmalarına gerek yoktur. Değişken isimlerinin önüne $işareti eklenir. Değişken isimleri, harf veya _ ile başlayabilir, sayı ile başlayamaz. Değişken isimlerinde sadece harfler, sayılar ve _ karakteri kullanılabilir. Burada kastedilen harfler a-z veya A-Z arasındaki ASCII harfler ve 127 ile 255 (0x7f-0xff) arasındaki baytlardır. Büyük-küçük harf duyarlıdır. Değişken ismi uzunluğu sınırsızdır. Değişkenler - 1/3
<?php$adi = 'Kemal';$Eylem = 'gel';echo "$adi, $Eylem"; // "Kemal, gel" yazdırır$4site = 'dene bakalım'; // geçersiz; sayı ile başlayamaz$_4site = 'dene bakalım';// geçerli; alt çizgi ile başlayabilir$diğer = 'gerekirse diye'; // g? Eçerli;ISO-8859-9'da 'ğ' harfi 127-255 // arasında, UTF-8'de ise iki baytı 127-255 // arasındadır.?> $this atama yapılamayan özel bir değişkendir. Değişkenler - 2/3
<?php$adi = 'Kemal';$Eylem = 'gel';echo "$adi, $Eylem"; // "Kemal, gel" yazdırır$4site = 'dene bakalım'; // geçersiz; sayı ile başlayamaz$_4site = 'dene bakalım';// geçerli; alt çizgi ile başlayabilir$diğer = 'gerekirse diye'; // geçerli; ISO-8859-9'da 'ğ' harfi 127-255// arasında, UTF-8'de ise iki baytı 127-255// arasındadır.?> $this atama yapılamayan özel bir değişkendir. Değişkenler - 2/3
$adi = ‘Şükrü'; //'Mustafa' değerini $adi değişkenine ata$ifade = &$adi; //$adi değişkenini $ifade değişkenine gönderimli ata$ifade = "Benim adım $ifade "; //$ifade değişkenini değiştirecho $ifade; // $adi değişkeninin değeri de değişti. echo $adi; Değişkenler – 3/3 Tarayıcı Çıktısı: Benim adım Şükrü Benim adım Şükrü
PHP çalıştırdığı herhangi bir betiğe çok sayıda önceden tanımlı değişken sağlar. Bu değişkenler; Dış kaynaklı değişkenler, Yerleşik ortam değişkenleri, Son hata iletisi, Hangi sunucunun çalıştığı, Sunucunun sürümü Sunucunun kurulumu ile ilgili değişkenler vb. Öntanımlı Değişkenler – 1/2
GLOBAL DEĞİŞKENLER php.ini dosyasında register_globals değeri on olmalıdır. Örneğin, web sunucunun ana dizinini almak için $_SERVER['DOCUMENT_ROOT‘] web sunucunun adını almak için $_SERVER['SERVER_NAME']kullanılabilir. Öntanımlı Değişkenler - 2/2
phpinfo() fonksiyonu kullanılarak tüm çevre değişkenleri görüntülenebilir. Bunlara ek olarak PHP hakkındaki kurulum, yüklenmiş eklentiler, ayarların değerleri gibi bilgilere de ulaşılabilir. <?php phpinfo(); ?> Çevre Değişkenleri
array() Fonksiyonu kullanarak dizi tanımlanabilir. <?php $isimler = array("ali","mehmet","ayşe","şükrü"); echo $isimler[2]."<br>"; $aylar = array( 1 => "Ocak", 2 => "Şubat", 3 => "Mart", 4 => "Nisan"); echo $aylar[3]; ?> Dizi Değişkenler -1/2 0. indis 1. indis 2. indis 3. indis 1. indis 2. indis 3. indis 4. indis
$dizi_degisken[] değişken adı ile dizi tanımlanabilir. Dizi Değişkenler – 2/2 <?php $dizi_isimleri[0] = "Karanfil"; • $dizi_isimleri[1] = "Yasemin"; • $dizi_isimleri[2] = "Nergiz"; • $dizi_isimleri[3] = "Gül"; • echo $dizi_isimleri[2]."<br>"; • echo $dizi_isimleri[3]."<br>"; ?>
Operatörler değişkenlere değer atama, karşılaştırma, metin işlemleri, mantıksal işlemler ve matematiksel işlemlerde kullanılır. • Matematiksel İşlemler: • Toplama+ ($i = 1 + 2; ) • Çıkarma–( $i = 5– 2; ) • Bölme / ( $i = 4 / 2; ) • Çarpma* ( $i = 2 * 2; ) • Modülüs -Kalan% ( $i = 3 % 2;) OPERATÖRLER – /
OPERATÖRLER – / Tarayıcı Çıktısı : <?php $i = 2+3; echo"$i<br>"; #Sonuç: 5 $i = 5–2; echo"$i<br>"; #Sonuç: 3 $i = 2 * 2; echo"$i<br>";#Sonuç: 4 $i = 4 / 2; echo"$i<br>";#Sonuç: 2 $i = 3 % 2; echo"$i";#Sonuç: 1 ?> 5 3 4 2 1
OPERATÖRLER – / • Değer atama operatörü olarak ”=“ işareti kullanılır. • $i = 1; $i = " bir"; • Metinişlemlerinde iki ayrı metni birleştirme amaçlı “.” (nokta) operatörü kullanılır. • $i = "bir"."iki"; <?php $i = 5; echo"$i<br>"; $i = “bir "; echo“$i<br>"; $i = "bir"."iki"; echo"$i"; ?>
Eşit == ( $a == $b ) (Değer) Eş === ( $a === $b ) (Değer ve veri tipi) Eşit değil != ( $a != $b ) Eş değil !== ( $a !== $b ) Büyük> ( $a > $b ) Küçük< ( $a < $b ) Büyük Eşit >= ( $a >= $b ) Küçük Eşit <= ( $a <= $b ) Karşılaştırma Operatörleri
ve and veya && ( $a and $b, $a && $b ) veya orveya||( $a or $b, $a || $b ) yada xorveya^( $a xor $b, $a ^ $b ) Mantıksal İşlem Operatörleri
if yapısı, kodların koşullu olarak çalıştırılabilmelerini sağlar. PHP, C dilindekine benzer bir if yapısı sunar: ifade kendi mantıksal değeri üzerinden değerlendirilir. ifade'nin sonucu TRUE ise, PHP deyim'i çalıştırır, FALSE ise deyim’i gözardı eder. Kontrol Yapıları – IF/ELSEIF/ELSE
if (koşul) { deyim ; } elseif (koşul2) { deyim ; } elseif (koşul3) { . . } else { } Kontrol Yapıları – IF/ELSEIF/ELSE if ($ay == 1) { echo “Seçilen ay OCAK’tır.”; } elseif ($ay == 2) { • echo “Seçilen ay ŞUBAT’tır.” ; } elseif($ay == 3) { . . } else { echo “Bir ay seçilmedi”; }
Örneğin, aşağıdaki kod $a değeri $b değerinden büyük olduğu takdirde "a b’den büyüktür " yazısını görüntüler ve sonrasında $a değişkeninin değerini $b değişkenine atar: <?php $a = 5; $b = 3;if ($a > $b) {echo "a b’den büyüktür "; $b = $a;}?> Sonsuz sayıda if deyimi bir başka if deyiminin içine gömülebilir. Bu, uygulamanın çeşitli bölümlerine koşullu deyimler uygulayabilmek için tam bir esneklik sağlar. Kontrol Yapıları – IF/ELSEIF/ELSE
Kontrol Yapıları – IF/ELSEIF/ELSE <form action= "<?php echo $_SERVER['PHP_SELF']?>" methot="GET"> <input type = "text" name = "sayi1"><br> <input type = "text" name = "sayi2"><br> <select name="islem"> <option value ="1">Topla</option> <option value ="2">Çıkar</option> <optionvalue ="3">Çarp</option> <option value ="4">Böl</option> <option value =“5“>Kalan</option> </select> <input type = "submit" value = "Hesapla"> </form> <?php echo "1. Sayı : $sayi1 <br>"; echo "2. Sayı : $sayi2 <br>"; if(empty($sayi1) orempty($sayi2)){ echo "Sayı girmediniz. "; }else{ if($islem == "1"){ echo "Toplamı :". ($sayi1 + $sayi2); }elseif($islem == "2"){ echo "Farkı :". ($sayi1 - $sayi2); }elseif($islem == "3"){ echo "Çarpımı :". ($sayi1 * $sayi2); }elseif($islem == "4"){ echo "Bölümü :". ($sayi1 / $sayi2) ; }elseif($islem == “5"){ echo “Kalan :". ($sayi1 / $sayi2) ; }else{ echo "Hesaplama yapılmadı."; } } ?>
Switch if (koşul) { deyim ; } elseif (koşul2) { deyim ; } elseif (koşul3) { . . } else { } SWITCH ( değişken ) { CASE koşul1 ; deyim; break; CASE koşul2 ; deyim; break; ...................... ...................... DEFAULT: deyim; }
Switch Örnek : Verilen sayıya göre gün adını bulan program. <? $gun = 1; SWITCH ( $gun ){ CASE $gun = = 1; print ("Pazartesi"); break; CASE $gun = = 2; print ("Salı"); break; CASE $gun = = 3; print ("Çarşamba"); break; DEFAULT : print ("Yanlış seçim"); break; } ?>
Switch Örnek : Verilen sayıya göre gün adını bulan program. <? $gun = 1; SWITCH ( $gun ){ CASE 1; print ("Pazartesi"); break; CASE 2; print ("Salı"); break; CASE 3; print ("Çarşamba"); break; DEFAULT : print ("Yanlış seçim"); break; } ?>
for(ifade1;koşul; ifade2) { Deyim (işlemler); } • Döngüler istenilen işlemleri belirli bir sayıda çalıştırmak için kullanılırlar. • Döngünün sonsuz olmaması için koşul verilmelidir. • Döngü içinden istenildiği zaman çıkmak için break komutu kullanılır. Döngüler – For / While • while(koşul) { • işlemler; • }
Döngüler – For / While <?php $i = 1; while ($i < 10) { echo “$i ”; $i++; }?> <?php for ($i = 1; $i < 10; $i++) { echo “$i ”; } ?> <?php for ($i = 1; $i < 10; $i++) { echo “$i ”; if ($i == 5){ break; } } ?> <?php $i = 1; while ($i < 10) { echo “$i ”; if ($i == 5){ break; $i++; } } ?>
for ( $degisken = ilk_deger ; kosul ; adim ) { Koşul doğru ise yapılacak işlere ilişkin komutlar } Örnek : 1'den 100'e kadar çift sayıların toplamını bulan program. <? for ( $sayi = 0 ; $sayi <= 100 ; ) { $ciftsayi = $ciftsayi + $sayi; $sayi = $sayi +2; } echo $cift; ?> Döngüler – For
while (koşul) { Koşul sağlanıyorsa yapılacaklar; } Örnek : 1'den 10'a kadar olan sayıların toplamını bulan program. <?php $sayac = 0; while ($sayac <= 10){ $sayac ++; $toplam = $toplam + $sayac; } echo $toplam; ?> Döngüler – While
print () : Ekrana bir değişkenin değerini veya bir metni yazdırmayı sağlar. print ("PHP Programlama"); // Ekrana "PHP Programlama" yazdırır. $gun = "Perşembe"; print ($gun); //Ekrana "Perşembe" yazdırır. Fonksiyonlar
gettype() : Bir değişkenin ne tür bir veri içerdiğini döndürür $ders_adi = "PHP Programlama"; echogettype($adi); //Ekrana "string" yazılacaktır settype() : Bir değişkenin veri türünü değiştirmek için kullanılır $sonuc = "75" ; //Karakter türdeki $sonuc//değişkenine "75" değeri atanıyor. $basari = ( integer ) $sonuc//$sonuc değişkeninin //değeri integer a dönüştürülüyor
isset() : Bir değişkene değer atanıp atanmadığı sonucunu döndürür Örnek : if (isset($sifre)) { print("Şifre girildi"); } unset() :Varolan bir değişkeni yok eder Örnek : unset ($soyadi); // $soyadi değişkeni yok edilir.
empty() :isset() fonksiyonunun tersine eğer değişkene değer atanmamışsa True sonuç döndürür. Örnek : $adi = "" ; echoempty($adi); // True (1) değerini döndürür. $adi = "KAYA"; echoempty($adi); // False (0) değerini döndürür.
is_string(), is_integer(), is_double(): Değişkenin değerinin aradıkları tür olup olmadığına göre True/False değer döndürür. Örnek : $sayi = 10; $sonuc = is_string ($sayi); // False sonuç //döndürür. $metin = “Bursa“; $sonuc = is_string ($metin); // True sonuç //döndürür.
substr() : Bir metnin içerisinden istenilen bir kısmının alınmasını sağlar Örnek : <? $metin ="Uludağ üniversitesi-Karacabey Meslek Yüksekokulu"; $okul_adi = substr($metin, 20, 9 ); echo "Okul :".$okul_adi; ?> String Fonksiyonları
trim() : Metnin başındaki ve sonundaki boşlukları siler. Örnek : $sehir = " BURSA"; trim ($sehir); print ($sehir); // Sağ ve sol boşlukları kırparak “BURSA" yazılacaktır. chr() : ASCII kodu verilen karakteri döndürür. Örnek : echochr(65); // "A" değerini döndürür