Öğr.Gör.Şükrü KAYA
PHP, "PHP: Hypertext Preprocessor" 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ı "Personal Home Page " 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.
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, 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.
Rasmus Lerdorf, 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ı.
Rasmus Lerdorf, adına Personal Home Page (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ı. 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.
PHP yorumcusu, bugün Zend-çekirdeği adı verilen bir Scripting teknolojisine dayalı olarak, Zeev Suraski ile Andi Gutmans tarafından sıfırdan, tamamen yeniden yazılmış bulunuyor. 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.
Ü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ı) 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.
Üretilen HTML kodlarının düzenini ayarlamak için aşağıdaki özel karakterler kullanılır. \nYeni Satıra geçiş yapar (New Line) \rSatır Başı (Return) \tSekme (Tab) karakteri <?php echo "İyi olmak kolaydır, zor olan adil olmaktır. \n"; echo "\t\tAnonim Atasözü\r"; echo "Bu sözü sevdim. "; ?> İyi olmak kolaydır, zor olan adil olmaktır. Anonim Atasözü Bu sözü sevdim. HTML Kaynağı Çıktısı:
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. <?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. echo 'bazı düzenleyiciler (FrontPage gibi) işlem yönergelerini sevmezler'; 3. Bu " " için bir kısayoldur. 4. için bir kısayoldur. 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. PHP Kod bloğunun sonuna " ; " konması gerekmez. Kapanış etiketi (?>) aynı zamanda satır sonu işaretini kendisi ekler. <?php echo " Merhaba dostlar. " ; ?>
"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: <?php echo '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 ?>
Örnek
Bu önerme doğrudur. Bu önerme yanlıştır. Örnek Bu önerme doğrudur. Bu önerme yanlıştır.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " Örnek '; ?> echo 'bazı düzenleyiciler (FrontPage gibi) işlem yönergelerini sevmezler '; '; ?> Bu " " için bir kısayoldur. '; %> için bir kısayoldur.
Ö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.
$this atama yapılamayan özel bir değişkendir.
$this atama yapılamayan özel bir değişkendir.
$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ştir echo $ifade; // $adi değişkeninin değeri de değişti. echo $adi; Tarayıcı Çıktısı: 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.
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.
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() ; ?>
array() Fonksiyonu kullanarak dizi tanımlanabilir. <?php $isimler = array("ali","mehmet","ayşe","şükrü"); echo $isimler[2]." "; $aylar = array( 1 => "Ocak", 2 => "Şubat", 3 => "Mart", 4 => "Nisan"); echo $aylar[3]; ?> 0. indis1. indis2. indis3. indis 1. indis2. indis 3. indis4. indis
$dizi_degisken[] değişken adı ile dizi tanımlanabilir. <?php $dizi_isimleri[0] = "Karanfil"; $dizi_isim leri [1] = "Yasemin"; $dizi_isim leri [2] = "Nergiz"; $dizi_isim leri [3] = "Gül"; echo $dizi_isim leri [2]." "; echo $dizi_isim leri [3]." "; ?>
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; )
<?php $i = 2 + 3; echo " $i " ; # Sonuç: 5 $i = 5 – 2; echo " $i " ; # Sonuç: 3 $i = 2 * 2; echo " $i " ; # Sonuç: 4 $i = 4 / 2; echo " $i " ; # Sonuç: 2 $i = 3 % 2; echo " $i " ; # Sonuç: 1 ?> Tarayıcı Çıktısı :
Değer atama operatörü olarak ”=“ işareti kullanılır. $i = 1;$i = " bir"; Metin işlemlerinde iki ayrı metni birleştirme amaçlı “.” (nokta) operatörü kullanılır. $i = "bir"."iki"; <?php $i = 5; echo " $i " ; $i = “ bir " ; echo “ $i " ; $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 )
ve and veya &&( $a and $b, $a && $b ) veya or veya ||( $a or $b, $a || $b ) yada xor veya ^ ( $a xor $b, $a ^ $b )
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.
if (koşul) { deyim ; } elseif ( koşul2 ) { deyim ; } elseif ( koşul3 ) {. } 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.
" methot="GET"> Topla Çıkar Çarp Böl Kalan <?php echo "1. Sayı : $sayi1 "; echo "2. Sayı : $sayi2 "; if(empty($sayi1) or empty($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ı."; } } ?>
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; }
<? $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; } ?> Ö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; } ?> Örnek : Verilen sayıya göre gün adını bulan program.
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. for(ifade1;koşul; ifade2) { Deyim (işlemler); } while(koşul) { işlemler; }
<?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 ”; $i++; } ?> <?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; ?>
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; ?>
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.
gettype() : Bir değişkenin ne tür bir veri içerdiğini döndürür $ders_adi = "PHP Programlama"; echo gettype($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 = "" ; echo empty($adi); // True (1) değerini döndürür. $adi = "KAYA"; echo empty($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; ?>
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 : echo chr(65); // "A" değerini döndürür
ord(): Verilen karakterin ASCII kodunu döndürür. Örnek : echo ord("A") ; // 65 değerini döndürür. strlen() : Verilen metnin uzunluğunu tamsayı cinsinden döndürür. echo strlen("Bursa"); //5 değerini döndürür
number_format(): Sayı basamaklarını gruplamak için kullanılır. Kullanılış biçimi: number_format($degisken, ondalik_hane_sayisi, ondalik_ayrac, binler_ayraci) ); //chr(44)=virgül
getdate() : PHP’ nin kurulu olduğu sunucudan tarih ve saat bilgisini alır. $saat_tarih = getdate(); print_r($saat_tarih); //Saat ve tarih bilgisi dizisini görüntüler. echo $saat_tarih[year]; //Dizideki yıl bilgisini yazdırır.
time() : tarihinden başlayarak saniye bilgisini verir. echo time();
a -12 saat esasına dayanan Anglo-Sakson sistemlerinde öğleden önce ("am") veya öğleden sonra ("pm") işaretinin verilmesini sağlar. A -Aynı işaretlerin büyük harfle yazılmasını sağlar. d -İki haneli gün sayısı, tek haneli günlerin önüne sıfır konur: "01" - "31" D -Üç haneli gün adı kısaltması: "Cum" F -Uzun ay adı: "Ocak" h -12 saatlik sistemde saat: "01" - "12" H -24 saatlik sistemde saat: "00" - "23" g -12 saatlik sistemde tek haneli saatlerin önüne sıfır konmadan saat: "1" - "12" G -24 saatlik sistemde tek haneli saatlerin önüne sıfır konmadan saat: "0" - "23" i -Dakika: "00" - "59" j -Tek haneli sayıların önüne sıfır konmadan gün sayısı "1" - "31" l -(küçük L harfi) Uzun gün adı: "Cuma" L -Artık yıl olup olmadığına ilişkin Boolean (doğru/yanlış) değişken. Artık yıl ise 1, değilse 0. m -Tek hanelilerin önüne sıfır konarak ay sayısı: "01" - "12" n -Tek hanelilerin önüne sıfır konmadan ay sayısı: "1" - "12" M -Kısaltılmış ay adı: "Şub" s -Saniye: "00" - "59" S -İngilizce ('ncı anlamına) 2 karakter ek: "th", "nd" t -Belirtilen ayın gün sayısı; "28" - "31" w -Haftanın gün sayısı: "0" (Pazar veya Pazartesi) - "6" (Cumartesi veya Pazar) Y -Dört haneli yıl: "2000" y -İki haneli yıl "00" z -Yılın gün sayısı: "0" - "365" date() : Belirlenen biçimde Tarih ve saat yazdırmaya yarar.
echo date("d/m/Y"); // 1 8 /0 3 /200 9 echo date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm echo date("m.d.y"); // echo date("j, n, Y"); // 10, 3, 2001 echo date("Ymd"); // echo date('h-i-s, j-m-y, it is w Day'); // , , Satpm01 echo date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day. echo date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001 echo date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month echo date("H:i:s"); // 17:16:18
function fonksiyon_adi(argüman1,argüman2, ….){ deyimler; return döndürülecek_değer; } Kullanımı : fonksiyon_adi($islem, $sayi, …);
GET : Client(İstemci) tarafından gönderilen bilgiler tarayıcı adres satırında görüntülenir. Adınız : Soyadınız :....../formyolla.php?ad="Şükrü"&soyad="KAYA"&.... POST : Client(İstemci) tarafından gönderilen bilgiler tarayıcı adres satırında görüntülenmeden yollanır.
Mysql_connect(“localhost”,”root”,”sifre”); Mysql_select_db(“baslangicdb”);
mysql_query() $isimler = mysql_query(“select * from ögrenciler”); mysql_result() $ad=mysql_result($isimler,$i,”ad”); mysql_numrows() $sayi=mysql_numrows($isimler) mysql_fetch_array() $gelen = mysql_fetch_array($result)
{ $sql = "insert into ozluk (NOM, BOLUM, SINIF, ADI, SOYADI) values ('$NOM', '$BOLUM', '$SINIF', '$ADI', '$SOYADI',)"; } $result= mysql_query($sql);
$sql="delete from ozluk where NOM='$NOM‘ “; $result= mysql_query($sql); $sql = "update ozluk set BOLUM = $BOLUM', SINIF = '$SINIF', ADI = '$ADI', where NOM = $NOM"; $result= mysql_query($sql);