Php Nedir? - enverbagci.net
Transkript
Php Nedir? - enverbagci.net
11.10.2013 Php Nedir? PHP sunucu-taraflı, platformdan bağımsız ve HTML içine gömülebilir bir betik dilidir. Genel yapı ve yazılım kuralları yönünden C ve Perl dillerine çok yakın bir dildir. Rasmus Lerdorf tarafından hazırlanan bu dil, kendi web sitesine bağlı olan kişilerin takibini yapılması isteği ile ortaya çıktı. Rasmus Lerdorf bu dile ilk başta "Personal Home Page" adını koydu (çünkü kendi kişisel web sayfası üzerinde kullanmıştı). Şu anda ise PHP sözcüğü, "PHP: Hypertext Preprocessor" sözcüklerinin baş harflerinden oluşan kısaltmayla tanımlanmaktadır. 2 1 11.10.2013 Php’nin Avantajları Çok hızlı bir dildir. Rahat ve hızlı kodlama yapılabilir. Derlenmesine gerek yoktur. İnternette büyük bir geliştirici grubuna sahiptir. Php kodları platformdan bağımsız olduğu için Windows, Linux, MacOS gibi birbirinden farklı platformlarda çalışabilir. 3 Statik ve Dinamik Dil nedir? Statik Dil: Kaynak kodları kullanıcı tarafından görülebilen web programlama dilidir. Bu dil HTML olarak adlandırılmaktadır. Dinamik Dil: Kaynak kodları kullanıcı tarafından görülemeyen, önce sunucu tarafında çalışıp HTML koduna çevrilip kullanıcıya gönderilen dillerdir. En çok kullanılan diller PHP ve ASP.NET’dir. 4 2 11.10.2013 PHP’nin çalışması için gerekenler Apache Web Sunucusu(http://www.apache.org) MySQL (Veritabanı) (www.mysql.com) PhpmyAdmin (Veritabanı yönetimi için) PHP Kütüphaneleri Yukarıdakilerin toplu olarak kurulduğu paketler; EasyPHP WampServer Xamp Apachetriad 5 Php Editörleri PhpDesigner Notepad++ Eclipse PDT NetBeans PhpStorm 3 11.10.2013 Php Program Yapısı Php kodları şu şekilde yazılır. <? ….. ?> Bu etiketler bazen kullanılamayabilir. Bunun için php.ini dosyası içinde short_open_tag değeri «on» yapılmalıdır. Yada <?php ….. ?> Ekrana mesaj yazdırma Echo Komutu: Genel kullanımı şöyledir: Echo "mesaj"; Print komutu: Genel kullanımı şöyledir: print("Hello World"); 4 11.10.2013 Merhaba.php <?php echo “merhaba PHP”; ?> 9 Çalıştırmak için; Merhaba.php dosyasını Windows’ta Not Defteri’nde yazarak oluşturup; Wamp kullanıyorsanız ; c:\Wamp\htdocs dizinine; EasyPHP kullanıyorsanız c:\ProgramFiles\EasyPHP\htdocs klasörüne kaydediniz. NOT: Wamp ve EasyPHP’nin yeni versiyonlarında veya kurulum yaparken bu yollar değişmiş olabilir, genelde htdocs klasörüne kaydedilir. 10 5 11.10.2013 Çalıştırmak için; http://localhost/Merhaba.php ya da ; http://127.0.0.1/Merhaba.php yazılmalıdır. 11 Merhaba2.php <?php echo “İkinci PHP örneği”; ?> Çalıştırmak için Internet Explorer araç çubuğunda http://localhost/merhaba2.php 12 6 11.10.2013 Phpbilgi.php <html> <head> <title></title> </head> <body> <?php phpinfo(); ?> </body> </html> Çalıştırmak için Internet Explorer araç çubuğunda http://localhost/phpbilgi.php 13 PHP’de değişkenler Değişkenler $ işareti ile başlar. Değişken rakamla başlayamaz, değikenler içinde özel karakterler kullanılamaz. Ama alt çizgi (_) kullanabilirsiniz. Geçersiz değişken tanımları; $3not, $2x, $a(, $toplam?, Geçerli değişken tanımları; $not, $not1, $toplam, $notlar_toplami Değişkenler içinde Türkçe karakterler kullanılmaz: Örneğin; ıİ,Şş,Çç,Ğğ,Öö,Üü 14 7 11.10.2013 Değişken tipleri Tamsayı (integer) veri tipi Ör: $i=400; Kayan noktalı (real) veri tipi Ör: $i=4.02; 15 tamsayi.php Ondalık kısmı olmayan sayılardır, pozitif ve negatif olabilirler. Örnekler: 200, -929, 283838, 2 <?php $i=43; echo ($i); $x=-203; echo ($x); $y=39992; echo($y); ?> 16 8 11.10.2013 Kayan noktalı (real) veri türü Ondalıklı kısmı bulunan sayılardır. Ondalıklı sayılara çeşitli isimlerde rastlayabilirsiniz; double, float, real gibi. ondalik.php <?php $i=23.83; echo ($i); $x=-22.7; echo ($x); $y=5432.38; echo($y); ?> 17 Karakter Dizileri (string) veri türü İsminden de anlaşılacağı gibi karakterlerden (harf, rakam, işaret) oluşan veri türüdür. Rakam (0,1,2,3,4,5,6,7,8,9) Harf (a,A,b,B,c,C,d,D,e,E,f,F,g,G,……) İşaret (+,#,%,-,&,[,],(,)……….) String veri türü çift tırnak veya tek tırnak olarak tanımlanabilmektedir. Aradaki fark çok önemlidir. 18 9 11.10.2013 Karakter Dizileri (string) veri türü a) Çift tırnak ile tanımlanan karakter dizileri $okul=‘‘Ankara Ünv.’’; $okul1=‘‘$okul Bilgisayar Müh.’’; echo $okul1; // Ankara Ünv. Bilgisayar Müh. yazar. a) Tek tırnak ile tanımlanan karakter dizileri $okul=‘‘Ankara Ünv.’’; $okul1=‘$okul Bilgisayar Müh.’; echo $okul1; // $okul Bilgisayar Müh. yazar. 19 Değişken tipleri Dizi tipli (arrays) değişkenler $diziad[0]=‘‘ANKARA’’; Not: Bu konu ilerleyen bölümlerde detaylıca incelenecektir. 20 10 11.10.2013 degiskencift.php Bu tanımlamada çift tırnak içinde başka bir değişken varsa değeri ekrana basılır. Örneğin aşağıdaki örnekte ekrana Yaşasın Dünya basılacaktır. <?php $degisken1 = "Yaşasın"; $degisken2= “$degisken1 Dünya"; echo $degisken2; ?> Çalıştırmak için Internet Explorer araç çubuğunda http://localhost/degiskencift.php 21 degiskentek.php Bu tanımlamada tek tırnak içinde başka bir değişken varsa değeri ekrana basılmaz. Örneğin aşağıdaki örnekte ekrana $degisken1 Dünya basılacaktır. <?php $degisken1 = "Yaşasın"; $degisken2= ‘$degisken1 Dünya’; echo $degisken2; ?> Çalıştırmak için Internet Explorer araç çubuğunda http://localhost/degiskentek.php 22 11 11.10.2013 PHP’de Sabitler Bazen değerinin değiştirilmesini istemediğimiz durumlar olabilir. Örneği pi sayısı matematikte 3.14’e eşittir, bu değerin değişken gibi değiştirilmemesi gerekir. Kullanımı Define (Sabitin ismi, değeri) şeklindedir. Örneğin; Define (“pi”, 3.14); echo (pi); Burada dikkat ederseniz PHP’de değişken tanımlamak için kullanılan $ işareti kullanılmadı. 23 Değişken tipini öğrenme gettype() fonksiyonu: Belirtilen değişkenin türünü döndürür. $virgullu=2.11; Print (‘‘türü:’’.gettype($virgullu)); 12 11.10.2013 Değişken tipini değiştirme settype() fonksiyonu: Belirtilen değişkenin türünü değiştirir. $virgullu=2.11; settype($virgullu,string); Print (‘‘türü:’’.gettype($virgullu)); Değişkeni silme unset() fonksiyonu: Belirtilen değişkeni hafızadan siler. <?php $degisken = "Ankara Ünv."; unset($degisken); ?> 13 11.10.2013 Değişkenin değerini kontrol etme empty() fonksiyonu: Bir değişkenin değerinin olup olmadığını kontrol eder. <?php $degisken = ""; if(empty($degisken)) { echo "değişken değeri boş veya geçersiz değer"; } ?> Değişken Değerlerinde Boşluk Silme trim() fonksiyonu: Verinin sağında ve solunda yer alan tüm boşlukları temizlemek için kullanılır. <?php $veri = " www.enverbagci.net "; echo trim($veri); ?> 14 11.10.2013 Değişken Değerlerinde Boşluk Silme rtrim() fonksiyonu: Verinin sağında yer alan tüm boşlukları temizlemek için kullanılır. <?php $veri = " www.enverbagci.net "; echo rtrim($veri); ?> Değişken Değerlerinde Boşluk Silme ltrim() fonksiyonu: Verinin solunda yer alan tüm boşlukları temizlemek için kullanılır. <?php $veri = " www.enverbagci.net "; echo ltrim($veri); ?> 15 11.10.2013 Değişken Kontrol Fonksiyonları is_string() is_int() is_float() strval() intval() floatval() is_string() fonksiyonu Değişken string türünde mi diye bakar. Belirtilen değişken string türündeyse TRUE aksi takdirde FALSE döner. <?php if (is_string("23")) { echo "dizgedir\n"; } else { echo "dizge değildir\n"; } ?> 16 11.10.2013 is_int() fonksiyonu Değişken bir tamsayı mı diye bakar. Belirtilen değişkenin değeri tamsayı ise TRUE aksi takdirde FALSE döndürür. <?php if (is_int(23)) { echo "tamsayıdır\n"; } else { echo "tamsayı değildir\n"; } ?> is_float() fonksiyonu Değişken float türünde mi diye bakar. Belirtilen değişken float türündeyse TRUE aksi takdirde FALSE döner. <?php if (is_float(27.25)) { echo "float türünde\n"; } else { echo "float türünde değil\n"; } ?> 17 11.10.2013 strval() fonksiyonu Sayısal değişkeni stringe çevirir. <?php $sayi=90; echo gettype($sayi); echo gettype(strval($sayi)); // Bu şekilde de yazılabilir. <?php $sayi=90; echo gettype($sayi); $sayi=strval($sayi); echo gettype($sayi); ?> ?> Ekran çıktısı: integer string intval() fonksiyonu String (alfasayısal) bir değeri sayısal bir değere dönüştürür. <?php $deyim = "42a55bc4t"; //sol başta rakam yoksa $sayi = intval( $deyim ); echo $sayi; // 42 olacaktır. sıfır değeri olur. ?> $deyim=40.9 gibi float olsa sonuc 40 olurdu. 18 11.10.2013 floatval() fonksiyonu String (alfasayısal) bir değeri float bir değere dönüştürür. <?php $deyim = "60.34asd"; $sayi = floatval( $deyim ); echo $sayi; // 60.34 olacaktır. ?> PHP’de Operatörler (1) + Toplama Operatörü $a=2; $a=$a +2; echo $a; (Sonuç :4) - Çıkarma Operatörü $a=6; $a=$a -3; echo $a; (Sonuç :3) * Çarpma Operatörü $a=4; $a=$a *2; echo $a; (Sonuç :8) / Bölme Operatörü $a=2; $a=$a /2; echo $a; (Sonuç :1) % Mod alma Operatörü (İki sayının bölümünden kalan) $a=8; $a=$a %3; echo $a; (Sonuç :2) 38 19 11.10.2013 PHP’de Operatörler (2) += operatörünün kullanımı; $a = $a + 1; $a+=1; • -= operatörünün kullanımı; $a = $a -1; $a-=1 ; *= operatörünün kullanımı; $a = $a * 2; $a*=2; • /= operatörünün kullanımı; $a = $a / 2; $a/=2; 39 PHP’de Operatörler (3) ++ Operatörü $a=2; echo ++$a; (Sonuç:3) $a=2; echo $a++; (Sonuç:2) 40 20 11.10.2013 PHP’de Operatörler (4) -- Operatörü $a=2; echo --$a; (Sonuç:1) $a=2; echo $a--; (Sonuç:2) 41 PHP’de Operatörler (5) Atama Operatörü $ad="Ali" $a=2; $toplam=$a+$b; 42 21 11.10.2013 PHP’de Operatörler (6) String Birleştirme Operatörü $ad="Ali" $soyad="Ak"; $adsoyad=$ad.$soyad; Ekrana AliAk Yazar. 43 PHP’de Operatörler (7) Mantıksal Operatörler And Kullanımı: && Or Kullanımı: || Not Kullanımı: ! Bu operatörler genellikle Şartlı yapılarda kullanılır. Örnekleri şartlı yapılar konusunda verilecektir. 44 22 11.10.2013 PHP’de Operatörler (8) Karşılaştırma Operatörleri == Eşittir != Eşit değil < Küçüktür > Büyüktür <= Küçük eşittir >= Büyük eşittir. Bu operatörler de yine bir önceki slaytta belirtildiği gibi karşılaştırma işlemlerinde kullanılır. 45 Toplam.php <?php $sayi1=5; $sayi2=3; $toplam=$sayi1 + $sayi2; echo "Toplam sonucu:".$toplam; ?> Çalıştırmak için Internet Explorer araç çubuğunda http://localhost/toplam.php 46 23 11.10.2013 İslem.php <?php $sayi1=5; $sayi2=3; $bolsonuc=$sayi1/$sayi2; $cikarsonuc=$sayi1 - $sayi2; $modsonuc= $sayi1 % $sayi2; $carpsonuc =$sayi1 * $sayi2; printf("bölüm sonucu:%d".$bolsonuc."<br>"); printf("çıkarım sonucu:%d".$cikarsonuc."<br>"); printf("mod sonucu:%d".$modsonuc."<br>"); printf(“çarpim sonucu:%d".$carpsonuc."<br>"); ?> Çalıştırmak için Internet Explorer araç çubuğunda http://localhost/islem.php 47 24 11.10.2013 Diziler Dizi, bellekte aynı isim altında toplanmış değişkenler kümesidir. Eğer ki aynı türden veriler grubunu bellekte tutmak gerekirse diziler kullanılır. Örneğin verilerin sıralanması, ortalamasının bulunması gibi işlemlerde dizilere ihtiyaç duyulur. Diziler Aynı türden bilgilerin bir değişkenin içerisinde tutulmasıyla oluşturulur. Bir değişkenin dizi olup olmadığı "[]" simgelerinden anlaşılabilir. Kullanılış biçimi : $degisken = array(deger1, deger2,...,degerN) veya $değişken[indis_no] = değer şeklindedir. 25 11.10.2013 Diziler Bir dizinin n. inci elemanına ulaşmak için dizinin adından sonra köşeli parantez içinde dizi elemanının indis numarası yazılır. Örnek : $degisken[5] = "Ali"; Bu örnekte dizinin 6. elemanına "Ali" değeri atanmıştır. Eğer indis numarası yazılmazsa ilk eleman olan sıfırıncı sıradaki elemana ulaşılır. Daha sonra indis numarası verilmeden ulaşılan eleman bir sonraki eleman olacaktır. Örnek : print ($değişken[]); // Dizinin sıfırıncı elemanı yazılır print ($değişken[]); // Dizinin birinci elemanı yazılır Diziler Diziler tanımlanırken array komutu kullanılmayabilir. $liste = (deger1,deger2,...); veya $liste = array(deger1,deger2,...); veya $liste[] = deger1; $liste[] = deger2; $liste[] = degerN; Diziler tanımlanırken indis numarası yerine isim verilebilir. $liste[isim1] = deger1; $liste[isim2] = deger1; 26 11.10.2013 Diziler-Tanımlama Örnekleri $meyveler = array("Elma", "Armut", "Muz", "Kiraz"); $meyveler = array('bir' => 'Elma', 'iki' => 'Armut', 'üç' => 'Muz'); $meyveler[0] $meyveler[1] $meyveler[2] $meyveler[3] = = = = "Elma"; "Armut"; "Muz"; "Kiraz"; $meyveler['bir'] = 'Elma'; $meyveler['iki'] = 'Armut'; $meyveler['üç'] = 'Muz'; $misafir["isim"] = "Musa"; $misafir["yaş"] = 18; $misafir["il"] = "İstanbul"; Çok boyutlu diziler Dizi içindeki diziler olarak düşünülebilir. Yine bir örnekle açıklamak gerekirse bir otelin katları bir dizi olarak düşünülürse katlardaki odalar da bir dizi olarak düşünülebilir. Dolayısıyla burada dizi içindeki diziler söz konusudur. 27 11.10.2013 Çok boyutlu diziler <?php $otel["kat1"]["oda1"]="Ali"; $otel["kat1"]["oda2"]="Ahmet"; $otel["kat1"]["oda2"]="Ömer"; $otel["kat2"]["oda1"]="Hasan"; $otel["kat2"]["oda2"]="Kenan"; $otel["kat2"]["oda3"]="Mert"; $otel["kat3"]["oda1"]="Ayşe"; $otel["kat3"]["oda2"]="Fatma"; $otel["kat3"]["oda3"]="Hatice"; Otel Kat1 Kat2 Kat3 echo $otel["kat2"]["oda3"]; // ekrana Mert yazar ?> Oda1 Ali Oda2 Ahmet Oda3 Ömer Oda1 Hasan Oda2 Kenan Oda3 Mert Oda1 Ayşe Oda2 Fatma Oda3 Hatice Çok boyutlu diziler <?php $otel=array( "kat1"=>array("oda1"=>"Ali","oda2"=>"Ahmet","oda3"=>"Ömer"), "kat2"=>array("oda1"=>"Hasan","oda2"=>"Kenan","oda3"=>"Mert"), "kat3"=>array("oda1"=>"Ayşe","oda2"=>"Fatma","oda3"=>"Hatice") ); echo $otel["kat2"]["oda3"]; // ekrana Mert yazar ?> 28 11.10.2013 Çok boyutlu diziler $a = array(); $a['renk'] = 'kırmızı'; $a['lezzet'] = 'tatlı'; $a['şekil'] = 'yuvarlak'; $a['isim'] = 'elma'; Yerine; $a = array( 'renk' => 'kırmızı', 'lezzet' => 'tatlı', 'şekil' => 'yuvarlak', 'isim' => 'elma', ); Dizilerde Kullanılan Fonksiyonlar count(): Bir dizideki eleman sayısını döndürür. Kullanılış biçimi : count($dizi_adi); Örnek : <?php $a[0] = 1; $a[1] = 3; $a[2] = 5; $sonuç = count($a); // $sonuç == 3 ?> 29 11.10.2013 Dizilerde Kullanılan Fonksiyonlar is_array(): Dizinin elemanına ilk ulaştığımızda değer olup olmadığını araştırır. Başka bir ifadeyle değişkenin dizi olup olmadığının kontrolünü yapar. Kullanılış biçimi : is_array( $dizi_adi ); Örnek : <?php $dizi = array('bu', 'bir', 'dizidir'); echo is_array($dizi) ? 'Dizi' : 'Dizi değil'; ?> Dizilerde Kullanılan Fonksiyonlar Foreach: döngü kullanmadan dizi elemanlarına ulaşılmasını sağlar. foreach (dizi_ifadesi as $değer) deyim <?php $dizi = array(1, 2, 3, 4); foreach ($dizi as $deger) { echo "Değer: $deger<br />"; } ?> 30 11.10.2013 Dizilerde Kullanılan Fonksiyonlar array_merge(): İki dizinin elamanlarını birleştirerek yeni bir dizi oluşturur. Kullanış biçimi: $yeni_dizi = array_merge ( $ilk_dizi, $ikinci_dizi ); Örnek : <?php $ilk = "Ankara", "İstanbul"; $son = "İzmir", "Adana"; $sonuc = array_merge($ilk, $son); print_r($sonuc); ?> Çıktısı: Array ( [0] => Ankara [1] => İstanbul [2] => İzmir [3] => Adana ) Not: print_r — Ekrana bir değişkenin düzgün bir şekilde okunabilecek gösterimini basar. Dizilerde Kullanılan Fonksiyonlar array_push(): Mevcut dizinin sonuna yeni değer ekler. <?php $küme = array("elma", "armut"); array_push($küme, "muz", "portakal"); print_r($küme); ?> Çıktısı: Array ( [0] => elma [1] => armut [2] => muz [3] => portakal ) 31 11.10.2013 Dizilerde Kullanılan Fonksiyonlar array_shift(): Dizinin ilk elemanını siler. <?php $harfler = array("a", "b", "c", "d"); array_shift($harfler); print_r($harfler); ?> Çıktısı: Array ( [0] =>b [1] => c [2] => d ) Dizilerde Kullanılan Fonksiyonlar array_unshift(): Dizinin ilk başına yeni değer ekler. <?php $harfler = array("a", "b", "c", "d"); array_unshift($harfler,"e","f"); print_r($harfler); ?> Çıktısı: Array ( [0] => e [1] => f [2] => a [3] => b [4] => c [5] => d ) 32 11.10.2013 Dizilerde Kullanılan Fonksiyonlar array_sum(): Dizinin değerlerinin toplamını bulur. <?php $a = array(2, 4, 6, 8); echo "sum(a) = " . array_sum($a) . "\n"; Çıktısı: sum(a) = 20 sum(b) = 6.9 $b = array("a" => 1.2, "b" => 2.3, "c" => 3.4); echo "sum(b) = " . array_sum($b) . "\n"; ?> Dizilerde Kullanılan Fonksiyonlar in_array: Bir verinin dizi içersinde olup olmadığını kontrol eder. Varsa TRUE yoksa FALSE değeri döndürür. <?php $os = array("Mac", "NT", "Irix", "Linux"); if (in_array("Irix", $os)) { echo "Irix var"; } if (in_array("mac", $os)) { echo "Mac var"; } ?> 33 11.10.2013 Dizilerde Kullanılan Fonksiyonlar array_search(): Bir dizi içerisinde arama yapar. Aranan bilgi bulunursa index numarasını döndürür. Yoksa boş döndürür. <?php $array=array(0=>'blue',1 =>'red',2=>'green',3=>'red'); $key=array_search('green',$array); // $key = 2; echo $key; $key=array_search('red',$array); // $key = 1; echo $key; ?> Dizilerde Kullanılan Fonksiyonlar array_slice(): Dizinin içersinden belirli bir bölümü alır. Kullanımı: array_slice(dizi,başlangıç,adet) <?php $input = array("a", "b", "c", "d", "e"); $output = array_slice($input, 2); // çıktısı: "c", "d", "e" print_r($output); $output = array_slice($input, -2, 1); // çıktısı: "d" print_r($output); $output = array_slice($input, 0, 3); // çıktısı: "a", "b", "c" print_r($output); ?> 34 11.10.2013 Dizilerde Kullanılan Fonksiyonlar sort: Dizi elemanlarını küçükten büyüğe sıralar. <?php $fruits = array("lemon", "orange", "banana", "apple"); sort($fruits); foreach ($fruits as $key => $val) { Çıktısı echo "fruits[" . $key . "] = " . $val . "\n"; fruits[0] = apple } ?> fruits[1] = banana fruits[2] = lemon fruits[3] = orange Dizilerde Kullanılan Fonksiyonlar rsort(): Dizi elemanlarını büyükten küçüğe sıralar. <?php $meyveler = array("portakal", "armut", "muz", "kayısı"); rsort($meyveler); foreach ($meyveler as $indis => $meyve) { echo "$indis = $meyve\n"; } ?> Çıktısı 0 = portakal 1 = muz 2 = kayısı 3 = armut 35 11.10.2013 Program Kontrol Deyimleri Şarta başlı işlemler; IF-ELSE Yapısı, Switch-Case Yapısı, Döngüler; For, While, Do-while. foreach Kontrol Yapıları <? <? switch ( $no ) { if($user_name=="") { echo “Username girmediniz."; } case 1 ; echo ("1 nolu sınıf"); break; else if($user_name!="ugur") { echo "Yanlış username"; } case 2 ; echo ("2 nolu sınıf"); break; else { echo "Merhaba $user_name"; } default: echo ("3 nolu sınıf"); } ?> ?> 36 11.10.2013 sart.php <?php $not1=40; $not2=50; if ($not1>$not2) echo "not1 değeri not2 den büyük"; elseif ($not1<$not2) echo "not1 değeri not2 den küçük"; else echo "not1 ve not2 eşit"; ?> sart2.php <?php $yas=18; //yaş değerini 19 ve 30 olarak da deneyin if ($yas<18) echo "siteye girmeniz yasak!"; else echo "Siteye Hoş geldiniz"; ?> 37 11.10.2013 Sart3.php <?php $not1=90; (Not1=50, Not2=50 ve Not1=40, Not2=30 olarak deneyin) $not2=40; $ortalama=($not1+$not2)/2; echo “Not ortalaması=“. $ortalama; if ($ortalama>50) echo “geçtiniz”; elseif ($ortalama<50) echo “kaldınız”; else echo “Sınırdasınız”; ?> sartsayi.php <?php $i=1; if ($i == 0) { echo "i eşit 0"; } elseif ($i == 1) { echo "i eşit 1"; } elseif ($i == 2) { echo "i eşit 2"; } ?> 38 11.10.2013 sartmeyve.php <?php $i=“portakal”; //elma ve muz olarak de deneyiniz. switch ($i) { case “elma": echo "i değeri elma"; break; case “portakal": echo "i değeri portakal"; break; case “muz": echo "i değeri muz"; break; } ?> Sart5.php <?php switch ($i) { case 0: case 1: case 2: echo “i degeri 3 den kucuk ama negatif degil"; break; case 3: echo "i degeri 3"; } ?> 39 11.10.2013 Sart6.php <?php $dondurma=‘sade’; switch($dondurma) { case ‘sade'; case ‘visne'; case ‘limon'; echo ‘iyi secim'; break; default: echo ‘Lutfen yeni bir secim yapiniz...'; break; } ?> Döngüler (For Döngüsü) Döngüler bir işi daha kısa sürede ve daha az kod yazarak halletmemizi sağlayan yapılardır. Bütün programlama dillerinde döngüler vardır. PHP’de tıpkı C,Java dillerinde olduğu gibi üç tip döngü çeşidi vardır. For, Do-While ve While döngüleri. Örneğin ekrana 1’den 100’e kadar sayılarıyazmak isteyelim. Döngüler olmasa her sayıyı teker yazmamız gerekir, oysa döngüyle aşağıda görüldüğü gibi birkaç satırda bu işi halledebiliriz. <?php for ($i=1;$i<100;$i++) { printf("$i<br>"); } ?> 40 11.10.2013 While Döngüsü <?php $i=1; while ($i<100) { printf("$i<br>"); $i++; } ?> For Örneği 100’den geriye 4’er 4’er yazınız. <?php for ($i=100; $i>1; $i-=4) { printf("$i<br>"); } ?> 41 11.10.2013 Do-While Döngüsü <?php $i=1; do { printf("$i<br>"); $i++; }while ($i<100) ?> For ile İşlemler 0,2,4,6,8…100 şeklinde çift sayıları yazdırınız. <?php for ($i=0; $i<=100; $i+=2) printf("$i<br>"); ?> 42 11.10.2013 Do-While ile İşlemler 0,2,4,6,8…100 şeklinde çift sayıları yazdırınız. <?php $i=0; do { printf("$i<br>"); $i=$i+2; }while ($i<=100); ?> While ile İşlemler 0,2,4,6,8…100 şeklinde çift sayıları yazdırınız. <?php $i=0; while ($i<=100) { printf("$i<br>"); $i=$i+2; } ?> 43 11.10.2013 For ile İşlem 1+3+5…+99 toplamını bulunuz? <?php $toplam=0; for ($i=1;$i<100;$i+=2) $toplam=$toplam + $i; printf("For ile 1 den 100 e kadar Toplam:$toplam<br>"); ?> While ile İşlem 1+3+5…+99 toplamını bulunuz? <?php $toplam=0; $i=1; while ($i<100) { $toplam=$toplam + $i; $i+=2; } printf("While ile 1 den 100 e kadar Toplam:$toplam<br>"); ?> 44 11.10.2013 Do-While ile İşlem 1+3+5…+99 toplamını bulunuz? <?php $toplam=0; $i=1; do { $toplam=$toplam + $i; $i+=2; }while ($i<100); printf("DO-While ile 1 den 100 e kadar toplam:$toplam<br>"); ?> foreach(): Bir array deki bütün değerleri herhangi bir değişkeni arttırmaya gerek duymadan görüntüler. <? $dersler[] = "Matematik"; $dersler[] = "Türkçe"; $dersler[] = "Bilgisayar"; foreach($dersler as $ders_adi) { echo "$ders_adi <br>"; } ?> 45 11.10.2013 Fonksiyonlar Tarih ve Saat Fonksiyonları Matematiksel Fonksiyonlar Karakter Kümesi Fonksiyonları PHP’de Fonksiyonlar Fonksiyonlar bizi defalarca kod yazmaktan kurtaran, daha modüler iş yaparak zamandan ve emekten tasarruf sağlayan yapılardır. PHP’de fonksiyonların yazım şekli C,C++,Java, JavaScript ile hemen hemen aynıdır. 92 46 11.10.2013 PHP’de Fonksiyon Tanımlama //Parametresiz function fonksiyon_adi() { …… } //Parametreli function fonksiyon_adi(parametre1,parametre2,…) { ………… return (donus_degeri); } 93 Fonksiyonlar function yaz() { echo “yaz fonksiyonu”; } function yaz2($ad,$soyad) Fonksiyonun Çağrılması: yaz(); $isim=“Ali”; $soyisim=“Ak”; yaz2 ($isim, $soyisim); { echo “merhaba $ad $soyad”; } Yukarıda ilk yaz fonksiyonu parametre almamıştır, ikincisi ise ad ve soyad parametrelerini almıştır. 47 11.10.2013 Fonksiyonlar //Parametresiz function yaz() { echo “merhaba fonksiyon”; } //Parametreli Fonksiyonun Çağrılması: yaz(); $deger=“merhaba fonksiyon”; mesaj($deger); function mesaj($deger) { echo $deger; } Fonksiyonlar - Örnek //Aşağıdaki fonksiyon verilen sayı aralığını toplar. <?php function sayitopla($ilk,$son) { $toplam=0; for ($i=$ilk; $i<=$son ;$i++) { $toplam=$toplam + $i; } return ($toplam); } $num1=100; $num2=500; $sonuc= sayitopla($num1, $num2 ); echo "$num1-$num2 arası toplam =$sonuc"; ?> 48 11.10.2013 Fonksiyonlar - İşlemler <?php function topla($a, $b) { return ($a + $b); } function carp($a, $b) { return ($a*$b); } function mod_al($a, $b) { return ($a % $b); } $num1 = 8; $num2 = 3; $sonuctoplam = topla($num1, $num2); $sonuccarpim = carp($num1, $num2); $sonucmod = mod_al($num1, $num2); echo "Toplam sonucu: $sonuctoplam<br>"; echo "Çarpim sonucu: $sonuccarpim<br>"; echo "Mod sonucu: $sonucmod<br>"; ?> Fonksiyonlar – Harf Notu Bulma <?php function hesapla($not1, $not2, $not3) { $sonuc = ($not1 + $not2 + $not3)/3; if ($sonuc>84 && $sonuc<=100) $harf='A'; elseif ($sonuc>=70 && $sonuc<=84) $harf='B'; elseif ($sonuc>=55 && $sonuc<=69) $harf='C'; elseif ($sonuc>=45 && $sonuc<=54) $harf='D'; elseif ($sonuc>=0 && $sonuc<=44) $harf='E'; return($harf); } $n1=90; $n2=80; $n3=100; $sonucnot = hesapla($n1, $n2, $n3); echo "$n1-$n2-$n3 Harf notu =$sonucnot"; ?> 49 11.10.2013 Fonksiyonlar - Faktöriyel <?php function faktoriyel($sayi) { if ($sayi==0) return(1); $fakt=1; for ($i=1; $i<=$sayi ; $i++) { $fakt= $fakt * $i; } return ($fakt); } $num =6; $sonuc = faktoriyel ($num); echo $sonuc; ?> Dizinin Fonksiyona Gönderilmesi-Örnek <? function liste_yaz($gelendizi) { for ($i=0;$i<count($gelendizi);$i++) echo $gelendizi[$i]."<br>"; } $gelendizi=array(6,8,10,7); liste_yaz($gelendizi); ?> 50 11.10.2013 Tarih ve Saat Fonksiyonları Getdate() Date() Time() Mktime() getdate() fonksiyonu Tarih/zaman bilgisi getirir. <? $bugun=getdate(); print $bugun[mday]."-".$bugun[mon]."".$bugun[year]; //Bugünkü tarihi yazar ?> 51 11.10.2013 Getdate fonksiyonunda kullanılan parametreler "seconds" Saniyelerin sayısal gösterimi 0'dan 59'a kadar "minutes" Dakikaların sayısal gösterimi 0'dan 59'a kadar "hours" Saatlerin sayılsal gösterimi 0'dan 23'e kadar "mday" Ayın günlerinin sayısal gösterimi 1'den 31'e kadar "wday" Haftanın günlerinin sayılsal gösterimi (Pazar için) 0'dan (Cumartesi için) 6'ya kadar "mon" Ayın sayısal gösterimi 1 'den 12'ye kadar "year" Yılın 4 haneli sayısal tam gösterimi Örnek: 1999 ya da 2003 gibi "yday" Yılın gününün sayısal gösterimi 0'dan 365'e kadar "weekday" Haftanın gününün metinsel tam gösterimi Sunday'dan Saturday'ye "month" Ayın metinsel tam gösterimi, Ocak ya da Mart gibi January'dan December'a kadar date() fonksiyonu Yerel tarihi/saati biçimlendirir. biçim karakteri Gün Açıklama Örnek sonuç --- --- d Ay günlerinin sıfır dolgulu iki 01'den 31'e haneli gösterimi D Ay günlerinin üç harfli metinsel gösterimi Pzt'den Paz'a j Ay günlerinin sıfır dolgusuz gösterimi 1'den 31'e l (küçük 'L' harfi) Hafta günlerinin tam metinsel gösterimi Pazar'dan Cumartesi'ye N Hafta günlerinin ISO-8601 standardında sayısal gösterimi (PHP 5.1.0'da eklenmiştir) 1'den (Pazartesi için) 7'ye (Pazar için) S Ay günleri için 2 karakterli İngilizce sıralama ekleri st, nd, rd ya da th. j ile uyumlu çalışmaktadır. w Hafta günlerinin sayısal gösterimi 0'dan (Pazar için) 6'ya (Cumartesi için) z Yılın günleri (0'dan başlar) 0'dan 365'e 52 11.10.2013 date() fonksiyonu Hafta --- --- ISO-8601 standartına göre yılın hafta numarası, hafta başlangıcı Pazartesi'dir Örneğin: 42 (Yılın 42'inci haftası) --- --- F Ayın tam metinsel gösterimi, Ocak ya da Mart gibi January'den December'a m Ayın sıfır dolgulu sayısal gösterimi 01'den 12'ye M Ayın üç karakterli, metinsel kısa gösterimi Jan'dan Dec'e kadar n Ayın sıfır dolgusuz sayısal gösterimi 1'den 12'ye kadar t Belirtilen ayın gün sayısı 28'den 31'e W Ay date() fonksiyonu Yıl --- --- L Artık yıl olduğunda Eğer artık yılsa 1, değilse 0. o ISO-8601 standardı yıl numarası. ISO hafta numaralarının (W) ait olduğu yılın gösterilmesi dışında Y ile aynı değere sahiptir. Örnekler: 1999 ya da 2003 gibi Y Yılın 4 haneli sayısal, tam gösterimi Örnekler: 1999 ya da 2003 gibi y Yılın iki haneli gösterimi Örnekler: 99 ya da 03 gibi 53 11.10.2013 date() fonksiyonu Saat --- --- a Küçük harfli öğleden önce am ya da pm ve öğleden sonra A Büyük harfli öğleden önce AM ya da PM ve öğleden sonra B Swatch İnternet saati 000'dan 999'a g Saatin, 12-saatlik sıfır dolgusuz gösterimi 1'den 12'ye G Saatin, 24-saatlik sıfır dolgusuz gösterimi 0'dan 23'e h Saatin, 12-saatlik sıfır dolgulu gösterimi 01'den 12'ye H Saatin, 24-saatlik sıfır dolgulu gösterimi 00'dan 23'e i Sıfır dolgulu dakika gösterimi 00 ile 59 arasında s Sıfır dolgulu saniye gösterimi 00 ile 59 arasında u Mikrosaniye (PHP 5.2.2 sürümüyle eklenmiştir) Örneğin: 654321 date() fonksiyonu Zaman dilimi --- --- e Zaman dilimi belirteci Örnekler: UTC, GMT, Europe/Istanbul I (büyük ı) Yaz saati uygulaması var mı? Varsa 1, yoksa 0. O Saat olarak Greenwich zamanı (GMT) farkı Örneğin: +0200 P Saat ve dakika olarak Greenwich zamanı (GMT) farkı Örneğin: +02:00 T Zaman dilimi kısaltması Örnekler: EST, EET gibi Z Saniye cinsinden saat farkı. UTC'nin batısı -43200'den 50400'e daima negatif, doğusu ise daima pozitif değerlidir. 54 11.10.2013 date() fonksiyonu <? print date("d-m-Y"); //13-03-2011 gibi sistem tarihini yazar. ?> time() fonksiyonu Sunucunun o anki zaman bilgisini saniye olarak döndürür. (1 Ocak 1970 den başlayarak) <?php $gelecekHafta = time() + (7 * 24 * 60 * 60); // 7 gün; 24 saat; 60 dakida; 60 saniye echo 'Şimdi: '. date('d-m-Y') ."\n"; echo 'Gelecek Hafta: '. date('d-m- Y', $gelecekHafta) ."\n"; ?> 55 11.10.2013 mktime() fonksiyonu mktime() fonksiyonu, kendisine verilen verilen tarih ile 1 Ocak 1970 arasındaki farkı hesaplar. Örnek olarak 1 Ocak 1970 ile 22 Kasım 2008 saat 08:00 arasındaki farkı şu şekilde bir sayı ile geri döndürür: 1227340850 Burda görüldüğü üzere 1 Ocak 1970den bu yana ne kadar saniye geçtiğidir! mktime() fonksiyonu Genel kullanımı; $saat = 08; $dakika = 0; saniye = 0; $ay = 11; $gun = 22; $yil = 2008; $sonuc = mktime($saat, $dakika, $saniye, $ay, $gun, $yil); echo $sonuc; //1227340850 56 11.10.2013 mktime() fonksiyonu <?php echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997)); echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997)); echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998)); echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98)); ?> "Jan-01-1998" tarihini yazar. Matematiksel Fonksiyonlar floor() ceil() round() pow() sqrt() max() min() 57 11.10.2013 floor() fonksiyonu Ondalık sayıların küçük sayıya yuvarlanması için kullanılır. <?php echo floor(4.3); // 4 echo floor(9.999); // 9 echo floor(-3.14); // -4 ?> ceil() fonksiyonu Ondalık sayıların büyük sayıya yuvarlanması için kullanılır. <?php echo ceil(4.3); // 5 echo ceil(9.999); // 10 echo ceil(-3.14); // -3 ?> 58 11.10.2013 round() fonksiyonu Ondalık sayıların yuvarlanması için kullanılır. Kullanım Şekli round(yuvarlanacak sayı,noktadan sonra kaç basamak kullanılacak) <?php echo round(3.4); // 3 echo round(3.5); // 4 echo round(3.6, 0); // 4 echo round(1.95583, 2); // 1.96 ?> pow() fonksiyonu Bir sayının üstel değerlerini bulmak için kullanılır. Kullanım Şekli pow(sayı,kuvvet değeri) <?php echo pow(2, 8); // 256 echo pow(-1, 20); // 1 echo pow(0, 0); // 1 ?> 59 11.10.2013 max() fonksiyonu Verilen değerler içinde en büyüğünü bulur echo max(1, 3, 5, 6, 7); // 7 echo max(array(2, 4, 5)); // 5 // Farklı arraylarda uzun olanı bulur $val = max(array(2, 2, 2), array(1, 1, 1, 1)); // array(1, 1, 1, 1) // Aynı uzunluktaki arraylarde elemanlarına bakılır. Örnek: 2 == 2, fakat 4 < 5 $val = max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7) ?> min() fonksiyonu Verilen değerler içinde en küçük olanı bulur. <?php echo min(2, 3, 1, 6, 7); // 1 echo min(array(2, 4, 5)); // 2 ?> 60 11.10.2013 Karakter Kümesi Fonksiyonları explode() ltrim() rtrim() trim() number_format() printf() sprintf() str_pad() str_repeat() str_replace() strcmp() strlen() strtolower() strtoupper() substr() substr_replace() wordwrap() explode() fonksiyonu Bir dizgeyi bir ayraca göre bölüp bir dizi haline getirir. <?php $pizza = "dilim1 dilim2 dilim3 dilim4 dilim5 dilim6"; $dilimler = explode(" ", $pizza); echo $dilimler[0]; // dilim1 echo $dilimler[1]; // dilim2 ?> 61 11.10.2013 ltrim() fonksiyonu Dizgenin başındaki boşlukları (veya diğer karakterleri) budar. Aşağıdaki karakterleri budar. " " (ASCII 32 (0x20)), sıradan boşluk. "\t" (ASCII 9 (0x09)), sekme. "\n" (ASCII 10 (0x0A)), satırsonu. "\r" (ASCII 13 (0x0D)), satırbaşı. "\0" (ASCII 0 (0x00)), NUL-bayt. "\x0B" (ASCII 11 (0x0B)), dikey sekme. <?php $metin = "\t\tBir kaç kelam :) ... "; print "\n"; $kirpik = ltrim($metin); echo $kirpik $kirpik = ltrim($metin, " \t."); echo $kirpik; ?> rtrim() fonksiyonu Dizgenin sonundaki boşlukları (veya diğer karakterleri) budar. Aşağıdaki karakterleri budar. " " (ASCII 32 (0x20)), sıradan boşluk. "\t" (ASCII 9 (0x09)), sekme. "\n" (ASCII 10 (0x0A)), satırsonu. "\r" (ASCII 13 (0x0D)), satırbaşı. "\0" (ASCII 0 (0x00)), NUL-bayt. "\x0B" (ASCII 11 (0x0B)), dikey sekme. <?php $metin="Bir kaç kelam :) ... "; echo rtrim($metin); ?> 62 11.10.2013 trim() fonksiyonu Dizgenin başındaki ve sonundaki boşlukları (veya diğer karakterleri) budar. Aşağıdaki karakterleri budayacaktır. " " (ASCII 32 (0x20)), sıradan boşluk. "\t" (ASCII 9 (0x09)), sekme. "\n" (ASCII 10 (0x0A)), satırsonu. "\r" (ASCII 13 (0x0D)), satırbaşı. "\0" (ASCII 0 (0x00)), NUL-bayt. "\x0B" (ASCII 11 (0x0B)), dikey sekme. <?php $metin=" Bir kaç kelam :) ... echo trim($metin); ?> "; number_format() Sayıyı binlik bölümlere ayırır. Kullanımı: number_format (sayı , ondalık_hane, ondalık_ayracı, binlik_ayracı ) <?php $sayi = 1234.56; $trformat = number_format($sayi, 2, ',', '.'); echo $trformat; // 1.234,56 ?> 63 11.10.2013 printf() fonksiyonu Biçimli bir dizgi çıkartır. <?php $num=1000; $kelime="emyo"; printf('Sayı:%d',$num); printf('Sayı:%s',$kelime); ?> sprintf() fonksiyonu Biçimli bir dizge çıkartır. <?php $num=1000; $kelime="emyo"; echo sprintf('Sayı:%d',$num); echo sprintf('Sayı:%s',$kelime); ?> 64 11.10.2013 str_pad fonksiyonu Bir dizgeyi belli bir uzunlukta diğer dizgeyle doldurur. Kullanımı: str_pad (girdi , dolgulu_uzunluk [, dolgu_dizgesi = " " [, dolgu_türü = STR_PAD_RIGHT ]] ) dolgu_türü: Seçimlik dolgu_türü olarak STR_PAD_RIGHT (sağ), STR_PAD_LEFT (sol) veya STR_PAD_BOTH sabiti (her iki taraf) belirtilebilir. dolgu_türü belirtilmezse STR_PAD_RIGHT değeri öntanımlıdır. str_pad fonksiyonu-örnek <?php $input = "Ayran"; echo str_pad($input, 10); echo str_pad($input, 10, "-=", STR_PAD_LEFT); echo str_pad($input, 10, "_", STR_PAD_BOTH); echo str_pad($input, 6 , "___"); ?> // "Ayran " üretilir // "-=-=-Ayran" üretilir // "__Ayran___" üretilir // "Ayran_" üretilir 65 11.10.2013 str_repeat fonksiyonu Bir dizgeyi yineler. <?php echo str_repeat("-=", 10); ?> Çıktısı: -=-=-=-=-=-=-=-=-=-= str_replace fonksiyonu str_replace() fonksiyonu istediğimiz karakterleri farklı bir karaktere dönüştürmemizi sağlar. Kullanımı: str_replace(bul, değiştir, değişken) <?php $veri = "İstanbul güzel bir şehir?"; echo str_replace("güzel","pahalı",$veri); ?> 66 11.10.2013 strcmp() fonksiyonu İkili olarak dizge karşılaştırması yapar. <?php $isim1="Ali"; $isim2="Ahmet"; if(strcmp($isim1,$isim2)==0) print "iki isim aynıdır"; elseif(strcmp($isim1,$isim2)>0) print "Birinci isim büyük"; else print "ikinci isim büyük"; ?> strlen() fonksiyonu Dizge uzunluğunu döndürür. <?php $str = 'abcdef'; echo strlen($str); // 6 $str = ' ab cd '; echo strlen($str); // 7 ?> 67 11.10.2013 strtolower fonksiyonu Bir dizgenin harflerini küçük harfe çevirir. <?php $str = "Mini MİNİ bir KUŞ uçmuştu PENCEREME konmuştu."; $str = strtolower($str); echo $str; // Çıktı: mini mini bir kuş uçmuştu pencereme konmuştu. ?> strtoupper Bir dizgenin harflerini büyük harfe çevirir. <?php $str = "Mini MİNİ bir KUŞ uçmuştu PENCEREME konmuştu."; $str = strtoupper($str); echo $str; // Çıktısı: MINI MINI BIR KUS UÇMUSTU PENCEREME KONMUSTU. ?> 68 11.10.2013 substr() fonksiyonu Dizgenin bir kısmını döndürür. Kullanımı: substr (dizge , başlangıç [, uzunluk ] ) <?php echo substr('abcdef', 1); // bcdef döndürür. echo substr('abcdef', 1, 3); // bcd döndürür. echo substr("abcdef", -1); // "f" döndürür. echo substr("abcdef", -2); // "ef" döndürür. echo substr("abcdef", -3, 1); // "d" döndürür. ?> substr_replace() fonksiyonu Bir dizgenin belli bir bölümünü değiştirir. Kullanımı: substr_replace (dizge, yenisi , başlangıç [, uzunluk ] ) <? $metin = "En Faydalı Türkçe Kaynak"; echo substr_replace($metin, 'Yararlı', 3,7); //En Yararlı Türkçe Kaynak ?> 69 11.10.2013 wordwrap() fonksiyonu Bir dizgeyi istenilen yerden alt satıra geçirir. Kullanımı: wordwrap ( dizge [, genişlik [, satırsonu [, kes = false/true ]]] ) <?php $metin = "Dağ başını duman almış, gümüş dere durmaz ak ar."; $yenisi = wordwrap($metin, 4, "<br />"); echo $yenisi; wordwrap($metin, 4, "<br />",true ); Yukarıdaki gibi sona true eklersek kelimelere ?> dikkate almadan böler. Server Fonksiyonları <?php echo $_SERVER['SERVER_ADDR']; ?> Sunucunun IP adresi alınır. <?php echo $_SERVER['SERVER_NAME']; ?> Sunucu ismi öğrenilir. <?php echo $_SERVER['SERVER_SOFTWARE']; ?> Sunucunun işletim sistemi öğrenilir. 70 11.10.2013 Server Fonksiyonları <?php echo $_SERVER['QUERY_STRING']; ?> adres çubuğundaki querystringler alınır. Örnek adres cubuğunuzdaki adresin sonuna localhost/deneme.php?degisken1 yazdığınızda çıktı degisken1 olacak Server Fonksiyonları <?php echo $_SERVER['DOCUMENT_ROOT']; ?> Php dosyalarının çalıştığı klasörün adı //localhost çıktısı C:/wamp/www/ <?php echo $_SERVER['HTTP_USER_AGENT']; ?> Ziyaretçinin tarayıcısıyla ilgili bilgiler öğrenilir. 71 11.10.2013 Server Fonksiyonları <?php echo $_SERVER['REMOTE_ADDR']; ?> Ziyaretçinin ip adresini alır. <?php echo $_SERVER['SERVER_PORT']; ?> Severin portu öğrenilir. <?php echo $_SERVER['SCRIPT_NAME']; ?> Çalışan dosyanın adı öğrenilir. 72 11.10.2013 Php Yardımıyla mail gönderme Mail() Fonksiyonu: PHP'de Mail göndermemize yarayan fonksiyondur. Kullanımı aşağıdaki gibidir. mail ( "mailadresi" , "mailkonusu" , "mailiçeriği" , "Mailbaşlık" ) mailadresi kısmı;mail yollanacak Kişi mailkonusu;Mailin konusu mailiçeriği;Mailin içeriği Mailbaşlık;Mail başlığı Php Yardımıyla mail gönderme Bir mailin php ile yollanması aşağıdaki gibidir. <? $adres = "deneme@hotmail.com"; $konu = "Mail konusu"; $mesaj = "PHP Mail() Fonksiyonu"; mail("$adres","$konu","$mesaj"); echo "mail gönderildi"; ?> 73 11.10.2013 Form elemanları Formdan veri gönderme Veri alma Form İşlemleri Bütün programlama dillerinde kullanıcının girmiş olduğu bilgiler üzerinde işlem yapılır. Php'de kullanıcı tarafından bilgileri alabilmek için formlar kullanılır. Örnek olarak ziyaretçi defteri, kayıt formu ,anket vs.. diğer işlemlerde formlar kullanılır. Form elemanları sayfa içerisine HTML yardımıyla yerleştirilir ama içerikleri HTML yardımıyla okunamaz. Bu form elemanları üzerinde javascript yardımıyla çeşitli kontroller sağlanabilir ama bilgiyi sunucuya gönderemez. Formdan alınan bilgiler sunucuya gönderilecekse PHP gibi dinamik bir dil kullanımı zorunludur. 74 11.10.2013 Form Elemanları form input textarea select <form> etiketi Formlar yoluyla ziyaretçiden bilgi alabilir, aldığımız bilgi doğrultusunda birçok işlemi gerçekleştirebiliriz. Bir form <form> </form> etiketleri ile yazılır. Form etiketi yardımcı elemanları Girilecek Kod action = "dosya ismi" method = "yöntem" Görevi Formdan girilecek bilgilerin değerlendirileceği dosyanın tam yolu. Formdan girilecek bilgilerin değerlendirici dosyaya gönderilme yöntemi 75 11.10.2013 <input> etiketi Genel amaçlı bir form etiketidir. Sonlandırıcı etiketi yoktur. Girdi türü type öğesinde belirtilerek farklı girdilerin alınmasını sağlar. <input> etiketi type = "eleman türü" name = "isim" value = "değer" Eleman türü belirtilir. text, password, checkbox, radio, submit, reset, file, hidden, image, button değerlerinden biri kullanılır. Etiketin bu değerlerle nasıl kullanıldığını aşağıda örnekleriyle açıklamaya çalıştım. Girilen verinin hangi değişken ismi altında değerlendirileceğini belirtmek için kullanılır. Mutlaka belirtilmelidir. "radio" ve "checkbox" dışında bu parametrenin kullanımı isteğe bağlıdır. Belirtilecek "değer" eleman türüne göre değişir. size = "değer" "text" ve "password" elemanlarında karakter sayısını, diğerlerinde ise piksel cinsinden genişliği belirtmek için kullanılır. maxlength = "değer" "text" ve "password" elemanlarında girilebilecek en çok karakter sayısını belirtmek için kullanılır. Öntanımlı değeri sınırsızdır. checked = "değer" Sadece "radio" ve "checkbox" elemanlarında seçili elemanı "on" olarak belirtmek için kullanılır. Diğerlerinde yoksayılır. src = "dosya ismi" "image" elemanında resim dosyasını belirtmek için kullanılır. alt = "metin" readonly Fare eleman üzerindeyken balon içinde görünecek açıklama metni için kullanılır. Elemanın form üzerinde nasıl konumlanacağını belirtmek için kullanılır. Veri girme amacıyla kullanılmayacak elemanlar içindir. disabled Veri girişi engellenecek elemanlar içindir. align = "left|center|right" 76 11.10.2013 <input> etiketi type parametresi ile aşağıdaki elemanlar tanımlanabilir. Text Password Checkbox Radio Submit Reset Button text Forma tek satırlık yazı yazılabilecek alan eklemek için kullanılır. Adı: <input type="text" name="firstname"><br> Soyadı: <input type="text" name="lastname"> 77 11.10.2013 password Forma parola yazılabilecek alan eklemek için kullanılır. "text" elemanından farklı olarak bu alana girilen her karakter * ile gösterilir. Kullanıcı: <input type="text" name="username"><br> Parola: <input type="password" name="password"> checkbox Forma onay kutuları eklemek için kullanılır. <input type="checkbox" name="kutu1" checked="on"> HTML<br> <input type="checkbox" name="kutu2"> PHP<br> <input type="checkbox" name="kutu3"> MySQL 78 11.10.2013 radio Forma radyo düğmeleri eklemek için kullanılır. <input type="radio" name="cinsiyet" value="erkek" checked="on"> Erkek<br> <input type="radio" name="cinsiyet" value="disi"> Dişi submit, reset, button Formda belirtilen bilgileri ilgili dosyaya yollamak için kullanılacak düğmeler yerleştirmek için kullanılır. submit formu kabul eder ve yollar, reset ise girilen bilgileri sıfırlar(siler). button herhangi bir amaçla kullanmak içindir. Diğer ikisi gibi öntanımlı bir davranışı yoktur. 79 11.10.2013 submit, reset, button Adınız: <input type="text" name="firstname"><br> Soyadınız: <input type="text" name="lastname"><br> Eposta adresiniz: <input type="text" name="email"><br> <input type="radio" name="cinsiyet" value="erkek" checked="on"> Erkek<br> <input type="radio" name="cinsiyet" value="disi"> Dişi<br> <input type="submit" value="Send"> <input type="reset" value="Sıfırla"> Düğmeye resim ekleme <button name="reset" type="reset" value="reset"> <img width="20" height="21" src="resim.jpg"/>Sıfırla </button> <textarea> etiketi İngilizce “metin alanı” anlamına gelen bu kelime forma yazı yazılabilecek alan eklemek için kullanılır. Yardımcı öğeler olarak rows ve cols kullanılır. 80 11.10.2013 <select> etiketi Seçim listesi oluşturmakta kullanılır. <option> etiketi ile liste öğeleri belirtilir. <optgroup> etiketi ise bu liste elemanlarını konularına göre gruplamakta kullanılır. Bir select etiketi en azından bir option etiketi içermeli ve optgroup etiketleri iç içe olmamalıdır. Tek veya çok seçimli (multiple parametresi ile), sabit (size parametresi ile) veya aşağıya açılan listeler oluşturulabilir. <select> etiketi <select name="os_type"> <option value="win">Windows 9x</option> <option value="winnt">Windows NT</option> <option value="linux">Linux</option> <option value="unix">UNIX</option> <option value="os2">OS/2</option> <option value="macos">MacOS</option> </select> 81 11.10.2013 <select> etiketi <select name="menu" multiple> <option selected="" value="none">Hiçbiri</option> <optgroup label="Çorbalar"> <option value="c1">Tarhana</option> <option value="c2">Ezogelin</option> <option value="c3">İşkembe</option> </optgroup> <optgroup label="Yemekler"> <option value="y1">İmambayıldı</option> <option value="y2">Sultanbeğendi</option> <option value="y3">Kadınbudu</option> </optgroup> <optgroup label="Tatlılar"> <option value="t1">Kazandibi</option> <option value="t2">Tavukgöğsü</option> <option value="t3">Keşkül</option> </optgroup> </select> Formdan Veri Gönderme Formdan veri göndermek için method parametresi kullanılır. Method parametresi iki değer alır GET ve POST <form action="test.php" method="GET"> ......... </form> <form action="test.php" method="POST"> ......... </form> 82 11.10.2013 Get metoduyla bilgi gönderme GET metodunda formlara girilen bilgiler adres çubuğunda gönderilirken görünürler. Formlara girilen bilgiler, sayfa adresinin sonuna şu şekilde eklenir. http://www.site.com/sayfa.php?form1=değer1&form2= değer2&... Burada form1, form2,... ile gösterilen ifadeler sayfada formlara verilen isimler yani name değerleridir. değer1, değer2,... ise kullanıcının bu formlara girdiği değerleri ifade etmektedir. Dikkat ederseniz tüm bunlar sayfa adresinden ? ile ayrılmaktadır, her form ve değerinin arasında & işareti bulunmaktadır. Get metoduyla bilgi gönderme Bu yöntemde; Gönderilen bilgiler adres çubuğunda göründüğü için güvenlik düşüktür. Özellikle şifre girişlerinde kullanılmamalıdır. Adres çubuğundan gönderilebilecek veri miktarı sınırlı olduğunda fazla miktardaki veriler gönderilemez. 83 11.10.2013 Get metoduyla bilgi alma <form>...</form> etiketinin action özelliğinde belirtilen sayfada GET metoduyla yani URL'ye eklenerek gönderilen değişkeleri almak için $_GET dizisi kullanılır. $_GET dizisinde indis olarak değişken adları yada form adları kullanılır. Örneğin; http://www.site.com/index.php?konu=selam&mesaj=Merhaba şeklinde GET ile gönderilen konu ve mesaj bilgilerini şu şekilde alırız. <?php $gelen_konu=$_GET["konu"]; $gelen_mesaj=$_GET["mesaj"]; ?> Örnek GET metodu ile gönderilen ad ve soyad bilgilerini alıp ekrana yazdıralım. 84 11.10.2013 Örnek Devam <!--index.php--> <html> <body> <form name="form1" method="get" action="yaz.php"> Adı: <input type="text" name="adi"><br> Soyadı: <input type="text" name="soyadi"><br> <input type="submit" name="gönder" value="Gönder"> </form> </body> </html> Örnek Devam <!--yaz.php--> <html> <body> <?php echo "<b>Adınız:</b> ",$_GET["adi"],"<br>"; echo "<b>Soyadınız:</b> ",$_GET["soyadi"],"<br>"; ?> </body> </html> 85 11.10.2013 Örneğin Açıklaması Burada iki sayfamız vardır. İlk sayfamız olan index.php sayfasında formlarımız var. Bu formlara girilen bilgilerin yaz.php sayfasına gönderileceği action="yaz.php" ile belirtilmiştir. method="get" ifadesiyle bilgilerin GET metodu ile gönderileceği belirtilmiştir. Unutmayınız form yapılarında çoğu zaman POST metodu kullanılır. GET metodu pek kullanılmaz. Burada sadece GET metodu ile bilgi göndermeye ve almaya örnek vermekteyiz. Bilindiği gibi GET metodu daha çok <a>...</a> etiketi ile oluşturulan linkler ile bilgi göndermede kullanılır. İkinci sayfamız olan yaz.php sayfasında formlardan gelen bilgiler alınıyor. Daha sonra sayfaya yazdırılması için echo fonksiyonuna veriliyor. Bu bilgileri değişkenlere atayarak da işlem yapabilirsiniz. Not: index.php ile yaz.php sayfalarının aynı dizinde olduğu kabul edilerek action kısmında yaz.php sayfasının yolu belirtilmemiştir. Aksi halde dosyanın tam yolu yada göreceli yolu yazılmalıdır. Örnek2 Rastgele üretilen iki sayıyı yaz.php sayfasına bir link ile (GET metodu ile) gönderip ekrana yazdıralım. 86 11.10.2013 Örnek2 (Devam) <!--index.php--> <html> <body> <?php $s1=rand(1,100); $s2=rand(1,100); echo "<b>Bulunan sayılar:</b><br>"; echo "Sayı 1=$s1<br>Sayı 2=$s2<br>"; echo "<a href='yaz.php?sayi1=$s1&sayi2=$s2'>Bu linke tıklayarak sayıları gönderebilirsiniz</a>"; ?> </body> </html> Örnek2 Devam <!--yaz.php--> <html> <body> <?php echo "<b>Sayı 1:</b> ",$_GET["sayi1"],"<br>"; echo "<b>Sayı 2:</b> ",$_GET["sayi2"],"<br>"; ?> </body> </html> 87 11.10.2013 Post metoduyla bilgi gönderme Bu metodda formlara girilen bilgiler gönderilirken görünmemektedir. Bundan dolayı daha güvenilir. Ayrıca büyük miktardaki veriler de bu yöntemle gönderilmektedir. Örneğin dosya yüklemede kullanılan ve fazla miktarda verilerin bulunduğu formlarda POST metodu kullanılmaktadır. Post metoduyla bilgi gönderme HTML dosyası: <form action="yaz.php" method="post"> Adınız : <input type="text" name="adiniz"> <br> Soyadınız : <input type="text" name="soyadiniz"> <br> <input type="submit" value="Gönder"> <form/> <?php Yaz.php $adi = $_POST[adiniz]; $soyad = $_POST[soyadiniz]; echo $adi."<br>"; echo $soyad."<br>"; ?> Formlardan POST metodu ile gönderilen bilgileri almak için $_POST dizisi kullanılır. 88 11.10.2013 Örnek Formlara girilen iki sayının toplamını topla.php sayfasında ekrana yazdıralım. (Örnek çalışmada Metin Kutusu + Gönder Düğmesi kullanınız.) Örnek Devam <!--index.php--> <html> <body> <form name="form1" method="post" action="topla.php"> Birinci Sayı: <input type="text" name="sayi1"><br> İkinci Sayı: <input type="text" name="sayi2"><br> <input type="submit" name="topla" value="topla"> </form> </body> </html> 89 11.10.2013 Örnek Devam <!--topla.php--> <html> <body> <?php $s1=$_POST["sayi1"]; $s2=$_POST["sayi2"]; $toplam=$s1+$s2; echo "Sayıların toplamı: $s1+$s2=$toplam"; ?> </body> </html> Örnek2 Kullanıcının girdiği iki sayıyı yine kullanıcının açılır listeden seçtiği işleme göre hesapla.php sayfasında işleme alıp sonucu ekranda gösterelim. (Örnekte Metin Kutusu + Açılır Liste + Gönder Düğmesi kullanınız.) 90 11.10.2013 Örnek2 Devam <!--index.php--> <html> <body> <form name="form1" method="post" action="hesapla.php"> Birinci Sayı: <input type="text" name="sayi1"><br> İkinci Sayı: <input type="text" name="sayi2"><br> İşleminizi seçiniz: <select name="islem"> <option value="+">Topla</option> <option value="-">Çıkar</option> <option value="*">Çarp</option> <option value="/">Böl</option> </select> <input type="submit" name="hesapla" value="Hesapla"> </form> </body> </html> Örnek2 Devam <!--hesapla.php--> <html> <body> <?php $s1=$_POST["sayi1"]; $s2=$_POST["sayi2"]; $islem=$_POST["islem"]; // Bu kısımda switch-case yapısı da kullanılabilirdi. if($islem=="+") $sonuc=$s1+$s2; elseif($islem=="-") $sonuc=$s1-$s2; elseif($islem=="*") $sonuc=$s1*$s2; else $sonuc=$s1/$s2; echo "İşlemin Sonucu:<br>$s1$islem$s2=$sonuc"; ?> </body> </html> 91 11.10.2013 Örnek3 Kullanıcının girmiş olduğu kullanıcı adı ve şifreye göre giris.php sayfasında giriş izni veren yada vermeyen php kodunu yazalım. (Örnekte Metin Kutusu + Şifre Kutusu + Gönder Düğmesi kullanınız.) Örnek3 Devam <!--index.php--> <html> <body> <form name="form1" method="post" action="giris.php"> Kullanıcı Adınız: <input type="text" name="k_adi"><br> Şifreniz:<input type="password" name="sifre"><br> <input type="submit" name="giris" value="Giriş"> </form> </body> </html> 92 11.10.2013 Örnek3 Devam <!--giris.php--> <html> <body> <?php // İstenen kullanıcı adını ve şifreyi sabit değişkenler olarak tanımlayalım. define("username","emyo"); define("password","au"); if($_POST["k_adi"]==username and $_POST["sifre"]==password) echo "Giriş izni verildi. Hoşgeldiniz."; else{ echo "Kullanıcı adını yada şifreyi yanlış girdiniz. Tekrar deneyiniz!<br>"; echo "<a href='index.php'>Geri</a>"; } ?> </body> </html> 93 11.10.2013 Çerez Kullanımı Girilen sitelerin tarayıcılar(browserlar) üzerinde bıraktığı izlere cookie, Türkçesiyle de çerez denir. Bu izler siteye tekrar ziyaret edildiğinde yeniden gönderilerek bazı şeylerin yeniden hatırlanmasını sağlar. Mesela giriş formlarında kullanıcının şifresini ve kullanıcı adını cookieler sayesinde tarayıcıya kaydederek bir sonraki gelişinde bilgilerini yeniden girmek zorunda kalmadan direkt giriş yapabilir. Temel olarak kullanıcı bilgilerini hatırlanmasında kullanılan çerezleri hayal gücünüzün el verdiği kadar bir çok alanda da kullanmak mümkün. Cookie Oluşturma Cookie oluşturma işlemi setcookie() fonksiyonu ile yapılır. Genel kullanımı şöyledir; setcookie("isim", "değer","zaman aşımı"); 94 11.10.2013 Cookie Oluşturma setcookie("çerezim", "selam dünya"); Yukarıdaki örnekte çerezim adında bir cookie oluşturduk ve değerinide selam dünya yaptık. Ve 3. parametre olarak hiç bir şey girmediğimiz için varsayılan olarak tarayıcı kapatıldığında çerez silinecek. Cookie Oluşturma Eğer çerezin bizim istediğimiz bir gelecek tarihte silinmesini istiyorsakta 3. parametreyi devreye sokacağız. setcookie("çerezim", "selam dünya", time() + (60*60*24)); Şimdi 3. olarak girdiğimiz time() + (60*60*24) bu parametre şu anki zamana saniye cinsinden 60*60*24 tam olarak 24 saat yani 1 gün eklemiş olduk. Bu oluşturduğumuz çerezin son kullanma tarihi şuandan itibaren + 24 saat sonra demek oluyor. 1 gün sonrasında bu çerez siteye girildiğinde gönderilmiyor olacak. 95 11.10.2013 Cookie Okuma Oluşturulmuş cookie yi görüntülemek için $_COOKIE komutu kullanılır. Kullanımı şu şekildedir: echo $_COOKIE["çerez adı"]; Cookie Oluşturma ve Okuma Alttaki örnekte setcookie komutu ile emyo isimli bir cookie oluşturduk. Cookie’nin değerini 1234 olarak tanımladık. Zaman aşımı olarak time() fonksiyonunu kullandık ve 3600 sn. yani 1 saat geçerli olacak şekilde belirttik. Son olarak echo komutu ile emyo isimli cookie’nin değerini ekrana yazdırdık. Bu örneği test ettiğimizde ekrandaki çıktı 1234 olacaktır. <?php setcookie("emyo","1234",time()+3600); echo $_COOKIE["emyo"]; ?> Bu değişkenler internet explorer tarayıcısında şu klasörde C:/Documents and Settings/isminiz/Cookies içerisinde bir yazı dosyasında tutulur. 96 11.10.2013 Cookie Silme Oluşturduğumuz bir çerezi silmek için yine normal bir çerez tanımlarmış gibi setcookie() fonksiyonunu kullanıyoruz. Tek fark 3. son kullanma tarihi paramtremize geçmiş bir zaman giriyoruz. Bu sayede çerezin tarihi dolmuş varsayılıp hemen siliniyor. Örnek olarak bu çereze time() – 3600 diyerek 1 saat öncesini göstereceğiz ve çerez silinmiş olacak: setcookie("çerezim", "selam dünya", time() - 3600); Cookie Değerini Değiştirme Çerezleri oluşturmakta ve silmekte olduğu gibi değerini değiştirmekte de setcookie() fonksiyonunu kullanıyoruz. Ve oluşturmakta olduğu gibi değerini değiştirmekte aynıdır. Sadece çerez adına önceden tanımladığımız adı yazmamız yeterli. Eğer çerez yoksa oluşturulur varsa değeri değiştirilir. setcookie("çerezim", "selam dünya"); setcookie("çerezim", "merhaba dünya"); echo $_COOKIE['çerezim']; 97 11.10.2013 Cookie Kontrolü Cookie’nin tanımlı olup olmadığını kontrol etmek için isset() fonksiyonunu kullanabilirsiniz. <?php if(isset($_COOKIE["çerezim"])) { echo "cookie tanımlanmış"; } else { echo "cookie tanımlanmamış!"; } ?> 98 11.10.2013 Oturum Yönetimi Internet üzerinde SESSION olarak bildiğimiz terimin Türkçe karışılığı oturumdur. Siz, kullanıcı olarak bir web sitesine girdiğinizde, o domain üzerinde sizin için bir oturum açılmış olur. Oturumun açıldığı sayfadan itibaren sizin bir session id'niz yani oturum numaranız olur ve sunucu sizi bu numara ile tanır. Sitenin programatik altyapısını hazırlayan kişi de sizin siteye verdiğiniz bazı bilgileri session'a kaydederek bu bilgileri sayfalar arasında aktarır. Buna en güzel örnek olarak bu sitedeki kullanıcı adını gösterebiliriz. Gördüğünüz gibi her sayafada sağ üstte kullanıcı adınız session yardımıyla sayfalara taşı ve sitenin üyesi olarak bu sayede işlem yaparsınız. Session için yapabileceğimiz 3 işlem var. 1- Session'ı başlatmak 2- Session kaydetmek 3- Session'ı bitirmek Session oluşturma Session kullanımına ya da oluşturulmasına başlamadan önce bir kere her sayfanın en başında session_start() fonksiyonunu yazmalıyız, bu fonksiyon session olayını kullanıma hazırlar ve olmazsa olmazdır. Bazı sunucularda session kullanımı otomatik olarak hep açıktır, açık olan sunucularda session_start() yazmaya çalışırsanız hata verir. Bu durumda bu fonksiyonu kullanmaya gerek yoktur. 99 11.10.2013 Session_start() <?php session_start() ; $_SESSION['mesaj'] = 'Selam dünya!'; ?> Yukarıda ilk önce session kullanımını başlattık ve ardından aynı bir dizi tanımlarmış gibi $_SESSION global dizisine mesaj anahtarına Selam dünya! değerini verdik. Yani mesaj adında bir session oluşturduk ve değerini Selam dünya! yaptık. Bu oluşturduğumuz değer giren kişinin tarayıcısı kapatılmadığı sürece gezdiği her sayfaya tekrar geri gönderilecek ve bir önceki sayfada yaptığı işlemleri, kullanıcı adı ya da şifre gibi verileri bu şekilde yeniden hatırlanmasını sağlayacak. Session silme Session silme işleminde unset() fonksiyonunu kullanıyoruz. session_start(); $_SESSION['gezegen'] = 'dünya'; unset($_SESSION['gezegen']); Yukarıda önce bir session oluşturduk ve hemen ardından da onu sildik. 100 11.10.2013 Tüm sessionları silmek Bu işlem için session_destroy() fonksiyonunu kullanılır. Bu fonksiyon tanımlanmış tüm sessionları yok eder. session_start(); session_destroy(); Session var mı diye kontrol etmek Yine diğer çalışmalarda varlığını kontrol etmekte kullandığımız isset() fonksiyonunu kullanacağız. Bu fonksiyon eğer içine yazdığımız session varsa olumlu yoksa olumsuz döner. session_start(); echo isset($_SESSION['deneme']); 101 11.10.2013 Örnek Öncelikle ilk.php adında bir php dosyası oluşturalım ve içinde bir session oluşturup bir başka php sayfasında o veriyi okutmayı deneyelim. İlk.php <?php session_start(); $_SESSION['isim'] = 'emyo'; echo 'Sessionumuzu oluşturduk.'; ?> Örnek-Devam Bu sayfayı oluşturup çalıştırdıktan sonra 2. php sayfamızıda yapalım. Bunun adıda son.php olsun Son.php <?php session_start(); echo 'Daha önceden kaydedilmiş isim: ' . $_SESSION['isim']; ?> ilk.php yi ziyaret ettikten sonra bu sayfaya geldiğimizde ekranda Daha önceden kaydedilmiş isim: emyo yazacaktır. Eğer ilk.php ye uğramadan yani sessionumuzu oluşturmadan son.php ye girmeye çalışırsak böyle bir session oluşturulmadığı için kod hata verecektir. 102 11.10.2013 Örnek Üyelik Sistemi Giriş bilgilerini içinde tutacağımız ayarlar.php dosyamızı oluşturuyoruz. Ayarlar.php <?php $kullanici = "admin"; $parola = "1234"; ?> Örnek Üyelik Sistemi Şimdi de ziyaretçinin giriş yapacağı index.php dosyamızı oluşturalım. Ziyaretçi bu sayfadan giriş yapacak. <form action="denetim.php" method="POST"> Kullanıcı Adı: <input type="text" name="kullanici"><br /> Parola: <input type="password" name="parola"><br /> <input type="submit" value="Giriş Yap"> </form> 103 11.10.2013 Örnek Üyelik Sistemi Şimdi de giriş bilgilerinin denetleneceği ve sonucuna göre işlem yapacağımız denetim.php dosyasını oluşturuyoruz. <?php include("ayarlar.php"); session_start(); if(($_POST["kullanici"]==$kullanici) and ($_POST["parola"]==$parola)) { $_SESSION["giris"] = true; $_SESSION["kullanici"] = $kullanici; $_SESSION["parola"] = $parola; header("Location:yonetim.php"); } else { echo "Kullanıcı adı veya Şifre Yanlış.<br>"; echo "<a href=index.php>Geri dön</a>"; } ?> Örnek Üyelik Sistemi denetim.php dosyasında $_SESSION özelliğini kullanarak 3 yeni session tanımladık. Bunlardan giris isimli olan true değerini taşır ve diğer sayfalarda bu değişken yardımıyla giriş yapılıp yapılmadığını kontrol ederiz. kullanici ve parola session’ları da giriş yapan ziyaretçinin kullanıcı adı ve şifre bilgisini tutacak, gerektiğinde yine bu bilgiler kullanılabilecek. 104 11.10.2013 Örnek Üyelik Sistemi Şimdi yonetim.php isimli yönetim sayfasını oluşturalım <?php include("ayarlar.php"); session_start(); if(!isset($_SESSION["giris"])) { echo "Bu sayfayı görüntüleme yetkiniz yoktur.<br>"; echo "<a href=index.php>Giriş sayfası</a>"; } else { echo "Admin Paneli<br>"; echo "<a href=\"cikis.php\">Çıkış Yap</a>"; } ?> Örnek Üyelik Sistemi yonetim.php dosyasında kullandığımız isset() fonksiyonu, içerisine gönderilen değişkenlerin var olup olmadığını kontrol eder. Yani bir değişken daha önceden tanımlanmışsa TRUE tanımlanmamışsa FALSE değerini döndürür. Biz giriş yapan ziyaretçi için giris isimli bir session tanımlamıştık, bu sayfada onun var olup olmadığını kontrol ettik. 105 11.10.2013 Örnek Üyelik Sistemi Şimdi giriş yapan kullanıcının çıkış yapması için cikis.php dosyasını oluşturalım <?php session_start(); session_destroy(); echo "Çıkış işlemi tamamlandı."; echo "<br><a href=index.php>Anasayfa</a>"; ?> cikis.php dosyasında kullandığımız session_destroy() komutu açılmış olan oturumun tüm bilgilerini silmek için kullanılır. 106 11.10.2013 Aktif Dosyaya Harici Dosya Ekleme include(); Belirtilen dosyayı başka bir dosyaya ekler ve içeriğini değerlendirir. d2.php <?php echo "Bir $renk $meyve"; // -> Bir include ‘d1.php'; echo "Bir $renk $meyve"; // > Bir yeşil elma d1.php <?php $renk = 'yeşil'; $meyve = 'elma'; ?> ?> Dosya Kontrolü file_exists(); Bir dosya veya dizinin mevcut olup olmadığına bakar. <?php $dosya = '/bir/yol/dosya.txt'; if (file_exists($dosya)) { echo "$dosya diye bir dosya var"; } else { echo "$dosya diye bir dosya yok"; } ?> 107 11.10.2013 Dosya ve Dizin Kontrolü is_file(); Verilen ismin bir dosya olup olmadığını döndürür. if (is_file("dosya.txt")) { echo "Bu Bir Dosyadır"; } else{ echo "Bu Bir Dosya Değildir."; } Dosya ve Dizin Kontrolü is_dir(); Verilen ismin bir klasör olup olmadığını döndürür. if (is_dir("dosya.txt")) { echo "Bu Bir Klasördür"; } else{ echo "Bu Bir Klasör Değildir."; } 108 11.10.2013 Dosya Özelliklerini Öğrenme is_readable(); Bir dosyanın mevcut ve okunabilir olup olmadığını döndürür. <?php $dosya = 'dnm.txt'; if (is_readable($dosya)) { echo 'Dosya okunabilir'; } else { echo 'Dosya okunamaz'; } ?> Dosya Özelliklerini Öğrenme is_writable(); Bir dosyanın yazılabilir olup olmadığını döndürür. <?php $dosya = 'dnm.txt'; if (is_writable($dosya)) { echo 'Dosyaya yazılabilir'; } else { echo 'Dosyaya yazılamaz'; } ?> 109 11.10.2013 Dosya Özelliklerini Öğrenme is_executable(); Bir dosyanın çalıştırılabilir bir dosya olup olmadığını döndürür. <?php $dosya = '/home/vincent/somefile.sh'; if (is_executable($dosya)) { echo $dosya.' çalıştırılabilir'; } else { echo $dosya.' çalıştırılamaz'; } ?> Dosya Özelliklerini Öğrenme filesize(); Dosya uzunluğunu döndürür. <?php // çıktısı: // somefile.txt: 1024 bytes $filename = 'somefile.txt'; echo $filename . ': ' . filesize($filename) . ' bytes'; ?> 110 11.10.2013 Dosya Özelliklerini Öğrenme fileatime(); Dosyaya son erişim zamanını döndürür. <?php // Çıktı şöyle bir şey olur: // birdosya.txt dosyasının son erişim zamanı: Decemb er 29 2008 22:16:23. $dosya = 'birdosya.txt'; if (file_exists($dosya)) { echo "$dosya dosyasının son değişiklik zamanı: " . date ("F d Y H:i:s.", fileatime($dosya)); } ?> Dosya Özelliklerini Öğrenme filemtime(); Dosyanın değişiklik zamanını döndürür. <?php // Çıktı şöyle bir şey olur: // birdosya.txt dosyasının son değişiklik zamanı: Dece mber 29 2008 22:16:23. $dosya = 'birdosya.txt'; if (file_exists($dosya)) { echo "$dosya dosyasının son değişiklik zamanı: " . date ("F d Y H:i:s.", filemtime($dosya)); } ?> 111 11.10.2013 Dosya Oluşturma • touch(); Dosyanın erişim ve değişiklik zamanını ayarlar. Dosya mevcut değilse oluşturulur. • Kullanımı: • touch (dosyaismi [,zaman [, ezamanı ]] ) • dosyaismi Erişilecek dosyanın ismi. • zaman Değişiklik zamanı. Eğer zaman belirtilmemişse, o anki zaman kullanılır. • ezamanı Belirtilmişse dosyanın erişim zamanı ezamanı değerine ayarlanır. Aksi takdirde zaman değerine ayarlanır. touch() örnekleri <?php $dosyaismi="dnm.txt" if (touch($dosyaismi)) { echo "$dosyaismi için değişiklik zamanı şimdiye ayarlandı"; } else { echo "$dosyaismi için değişiklik zamanı değiştirilemedi"; } ?> <?php /* * Dosyanın değişiklik zamanını bir saat önceye ayarlayalım */ $zaman = time() - 3600; /* Dosyaya erişelim */ if(!touch('bir_dosya.txt', $zaman)) { echo 'Hoop, bir şeyler yanlış oldu...'; } else { echo 'Dosyaya başarıyla erişildi'; } ?> 112 11.10.2013 Dosya Silme unlink(); Bir dosyayı siler. <?php $fh = fopen('deneme.html', 'a'); fwrite($fh, '<h1>Merhaba Dünya!</h1>'); fclose($fh); mkdir('dnmdizini', 0777); unlink('deneme.html'); unlink('dnmdizini'); ?> Dosya Açma fopen(); Bir dosya veya URL'yi açar. Kullanımı: değişken=fopen(dosyaadı, açma türü) Eğer açma dosya adı "http://…." gibi başlıyorsa URL açılıyor demektir. Açma türleri şunlardır: 113 11.10.2013 Dosya Açma Türleri Açma Türü Açıklama 'r' Sadece okumak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir. 'r+' Hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir. 'w' Sadece yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir ve dosya uzunluğu sıfır yapılır. Dosya mevcut değilse oluşturulmaya çalışılır. 'w+' Hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir ve dosya uzunluğu sıfır yapılır. Dosya mevcut değilse oluşturulmaya çalışılır. 'a' Sadece yazmak için açılır; dosya konumlayıcı dosyanın sonuna yerleştirilir. Dosya mevcut değilse oluşturulmaya çalışılır. 'a+' Hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın sonuna yerleştirilir. Dosya mevcut değilse oluşturulmaya çalışılır. 'x' Dosya oluşturulur ve sadece yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir. Dosya zaten mevcutsa fopen() FALSE döndürürek başarısız olur. Dosya mevcut değilse oluşturulmaya çalışılır. 'x+' Dosya oluşturulur ve hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir. Dosya zaten mevcutsa fopen() FALSE döndürürek başarısız olur . Dosya mevcut değilse oluşturulmaya çalışılır. b Dosyayı binary tipte açar yada oluşturur. Dosya Açma Örnekleri <?php $dt = fopen("/home/rasmus/file.txt", "r"); $dt = fopen("/home/rasmus/file.gif", "wb"); $dt = fopen("http://www.example.com/", "r"); $dt = fopen("ftp://user:password@example.com/some file.txt", "w"); ?> 114 11.10.2013 Dosya Kapatma fclose(); Açık bir dosya tanıtıcısını kapatır. <?php $dt = fopen('birdosya.txt', 'r'); fclose($dt); ?> Dosya İçeriğini Okuma fgets(); Dosya tanıtıcısından bir satır döndürür. Kullanımı: fgets ( dosya değişkeni [, uzunluk ] ) Uzunluk belirtilmez ise satır sonuna kadar olan bilgi okunur. <?php $dt = fopen("/tmp/inputfile.txt", "r"); if ($dt) { while (!feof($dt)) { $tampon = fgets($dt, 4096); echo $tampon; } fclose($dt); } ?> 115 11.10.2013 Dosya İçeriğini Okuma feof(); Bir dosya tanıtıcısı üzerinde konum dosya sonunda mı diye bakar. <?php $dt = fopen("/tmp/inputfile.txt", "r"); if ($dt) { while (!feof($dt)) { $tampon = fgets($dt, 4096); echo $tampon; } fclose($dt); } ?> Dosya İçeriğini Okuma fread(); Dosyayı satır satır değil de belirli uzunlukta okumak için kullanılır. Kullanımı: fread ( dosya değişkeni, uzunluk ) <?php // bir dosyanın içeriğini bir dizge olarak okuyalım $dosya = "/usr/local/birmetin.txt"; $dt = fopen($dosya, "r"); $içerik = fread($dt, filesize($dosya)); fclose($dt); ?> 116 11.10.2013 Dosya İçeriğini Okuma fgetc(); Dosya içeriğini karakter karakter okur. <?php $dt = fopen('birdosya.txt', 'r'); if (!$dt) { echo 'birdosya.txt dosyası açılamadı'; } while (false !== ($kar = fgetc($dt))) { echo "$kar\n"; } ?> Dosya İçeriğini Okuma fseek(); Dosya içeriğinin belirli bir bölümden sonrasını okumak amacıyla dosya içersinde istenilen yere konumlandırma yapar. Kullanımı: fseek ( dosya değişkeni, nereye [, nereden ] ) Dosya değişkeni Bir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur. nereye Yeni konum. Konumu dosya sonunun öncesine taşımak için bu değiştirgeyle negatif bir değer, nereye değiştirgesiyle de SEEK_END aktarın. nereye Mevcut konumun nasıl yorumlanacağı belirtilir: SEEK_SET - nereye konumunun dosya başlangıcına göre belirtildiği varsayılır. SEEK_CUR - nereye konumunun mevcut dosya konumuna göre bayt sayısı olarak belirtildiği varsayılır. Bu miktar pozitif veya negatif olabilir. SEEK_END - nereye konumunun dosya sonuna göre belirtildiği varsayılır. Eğer nereden belirtilmezse, SEEK_SET öntanımlıdır. 117 11.10.2013 fseek() örneği <?php $fp = fopen('dosya.txt', 'r'); // Biraz veri okuyalım $data = fgets($fp, 4096); // rewind($fp) çağrısı yapmış gibi // dosyanın başına dönelim; fseek($fp, 0); ?> Dosyaya Bilgi Yazma fwrite(); fputs(); Her iki komut dosyaya bilgi yazmak için kullanılır. Kullanımı: fwrite ( dosya değişkeni, dizge [, uzunluk ] ) <?php $dosya = 'dnm.txt'; $veri = "Bunu dosyaya ekleyelim\n"; // Önce dosya mevcut mu ve yazılabilir mi, bakalım. if (is_writable($dosya)) { // Örneğimizde $dosya'yı ekleme kipinde açıyoruz. // Konumlayıcı dosyanın sonunda olduğundan fwrite() // $veri dizgesini dosyanın sonuna ekleyecektir. if (!$dt = fopen($dosya, 'a')) { echo "$dosya dosyası açılamadı"; exit; } // $veri'yi açılan dosyaya yazalım. if (fwrite($dt, $veri) == FALSE) { echo "$dosya dosyasına yazılamıyor"; exit; } echo "$dosya dosyasına '$veri' başarıyla yazıldı"; fclose($dt); } else { echo "$dosya dosyası yazılabilir değil"; } ?> 118 11.10.2013 Dosya Kilitleme flock(); Bir dosyaya aynı anda bir erişim yapılabilmesini sağlar. Aynı anda dosyaya birden çok kişinin erişebilmesini engeller. Kullanımı:flock ( dosya değişkeni, işlem ) işlem şunlardan biri olabilir: Paylaşımlı bir kilit (okuyucu) edinmek için LOCK_SH. Ayrıcalıklı bir kilit (yazıcı) edinmek için LOCK_EX. Bir kilidi (paylaşımlı veya ayrıcalıklı) serbest bırakmak için LOCK_UN. flock() örneği <?php $dt = fopen("/tmp/lock.txt", "w"); if (flock($dt, LOCK_EX)) { // ayrıcalıklı bir kilit oluşturalı m fwrite($dt, "Buraya bir şeyler yazalım\n"); flock($dt, LOCK_UN); // kilidi serbest bırakalım } else { echo "Kilit edinilemedi!"; } fclose($dt); ?> 119 11.10.2013 Klasör İçeriğini Listeleme opendir(); Bir klasör açar. readdir(); Açılmış bir klasörün içini okur. <?php $dizin = "/etc/apache2/"; // Dizin aç ve içeriğin oku if (is_dir($dizin)) { if ($dit = opendir($dizin)) { while (($dosya = readdir($dit)) !== false) { echo "dosya adı: $dosya - dosya türü: " . ((filetype($dizin . $dosya) == "dir") ? "dizin" : "dosya") . "\n"; } closedir($dit); } } ?> 120 11.10.2013 Klasör Oluşturma mkdir(); Dizin oluşturur. Kullanımı: mkdir([yol]/dizinadı,izin) İzinler: 0600: Sahibinden başkası okuyup yazamasın. 0644: Sahibi okuyup yazsın diğerleri sadece okusun 0777: Herkes okuyup yazabilsin. 0755:Sahibi herşeyi yapsın, diğerleri sadece okuyup çalıştırabilsin 0750: Sahibi herşeyi yapsın, grup üyeleri okuyup çalıştırabilsin, diğerleri hiçbir şey yapamasın. <?php mkdir("/dizinim/icin/bir/yol", 0777); ?> Klasör Silme rmdir(); Dizin siler. <?php if (!is_dir('misaller')) { mkdir('misaller'); } rmdir('misaller'); ?> 121