Metro.press
  • You can't cross the sea merely by standing and staring at the water.

  • Darkness reigns at the foot of the lighthouse.

  • Round the cape of a sudden came the sea.

december-10-snowy_december__75-nocal-2560x1600

Lorem ipsum dolor sit amet. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Lorem ipsum dolor sit amet. At vero eos et accusam et justo duo dolores et ea rebum. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. At vero eos et accusam et justo duo dolores et ea rebum. Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

Lorem ipsum dolor sit amet. At vero eos et accusam et justo duo dolores et ea rebum. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. At vero eos et accusam et justo duo dolores et ea rebum. Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

july-10-my-beach-nocal-2560x1600

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.

Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.

august-10-summers-freedom-nocal-2560x1600

At vero eos et accusam et justo duo dolores et ea rebum. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Play with me

At vero eos et accusam et justo duo dolores et ea rebum. At vero eos et accusam et justo duo dolores et ea rebum.. Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.

Read More ___

On a field in september

Integer adipiscing felis non quam pretium dignissim. Suspendisse id sapien massa, at tristique nisi. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat facilisis.

Read More ___

My chilly beach

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at. Consetetur elitr, eirmod tempor invidunt ut labore et dolore magna.

Read More ___

bilim kültür dergisi

php dersleri

PHP Dersleri (Temel)

PHP ,sunucu tarafli calisan,dinamik ve interaktif website hazirlama konusunda cok guclu bir dildir.PHP cok yaygin olarak kullanilan,ucretsiz ve MICROSOFT’un ASP sine alternatif olabilen bir teknolojidir.Web uygulamalari icin tam uyumludur ve HTML Kodlarinin icine direkt olarak adabte edilebilir.
PHP yazim dizini(syntax) bakimindan Perl ve C dilleriyle buyuk benzerliklere sahiptir.Cogunlukla PHP Apache(web sunucusu) ile birlikte bircok farkli isletim sisteminde kullanilabilir.PHP ayni zamanda ISAPI ve MICROSOFT IIS destekleyerek Windows ortaminda da kullanilabilir.Bir PHP dosyasi text,HTML taglari ve scriptler icerebilir.Dosyadaki scriptler server da yorumlanir.
Ne Ogrenmeniz Gerekiyor?


Baslamadan once asagidaki konulara hakim olmanizi oneririz.
  • HTML / XHTML
  • Script Bilgisi
PHP Nedir?
  • PHP (Personel Home Page) Kisisel Web Sayfasi
  • PHP , ASP gibi server-tarafli dildir.,
  • PHP Server tarafindan yorumlanir
  • PHP cesitli databaseleri destekler (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc.)
  • PHP Acik kaynakli bir dildir(OSS)
  • PHP kullanimi ucretsizdir
PHP Dosyasi Nedir?
  • PHP dosyasi, HTML taglari and script icerir
  • PHP tarayicilara HTML gorunumlu olarak doner
  • PHP “.php”, “.php3″, or “.phtml” uzantilar ile tarif edilir.
MySQL Nedir?
  • MySQL veritabani saglayicisidir.
  • MySQL kucuk ve buyuk uygulamalarin her ikisi icinde uygundur
  • MySQL standart SQL i destekler
  • MySQL sayilardan olusan bir platforda derlenir
  • MySQL kullanimi ucretsizdir
PHP + MySQL

PHP , MySQL ile tam uyumlu bir dildir.farkli isletim sistemlerinde yorumlanabilir(Windows sisteminde olusturulabilir ve Unix sisteminde sunulabilir.
Neden PHP?
  • PHP farkli platformlarda kullanilabilir(Windows, Linux, Unix, etc.)
  • PHP butun serverlara uyumlu haldedir(Apache, IIS, etc.)
  • PHP resmi sitesi : www.php.net den ucretsiz olarak yuklenebilir ve kullanilabilir
  • PHP ogrenimi kolaydir
Nasil Baslanir ?
  • Bilgisayariniza Apache Web Serverini kurun
  • Bilgisayariniza PHP servisini yukleyin
  • Bilgisayariniza MySQL i yukleyin.
  • Ilk 3 maddeyi gormezlikten gelip , Apache2Triad veya benzerlerini kullanabilirsiniz.

PHP Yazım Kuralları

PHP scriptleri her zaman <?php anahtarıyla açılır ve ?>.anahtar dizimyle son bulur. Bu script arasında kalan bütün kodlar sunucu tarafından PHP scripti olarak yorumlanır ver derlenir.PHP kod bloğu dosyanızın her yerinde bulunabilir.Önemli olan <?php ve ?> anahtarları doğru biçimde tanımlansın. Kısayol için PHP kodları <? ve ?> şeklinde açıp kapatılarak da sunucu tarafından yorumlanabilir.


Kod:
<?php//php kodlarınızı buraya ekleyin?>
Bir PHP dosyası bildiğimiz HTML tagları ve PHP scriptlerinden oluşur. Adet olduğu üzere PHP kodlarımıza Merhaba Dünya (Hello World) diyerek başlayalım.Dosyamız yorumlandıktan sonra tarayıcımızdan Merhaba Dünya mesajını görelim:

Buyrun;

Kod:
<html><body><?php echo "Merhaba Dünya"; ?></body></html>
Her Php kod satırı ” ; “-(noktalıvirgül) ile bitmesi gerekir.Noktalı virgül bir PHP kodundan ,başka bir koda geçildiğini ifader eder. PHP ile çıktı ( output ) işlemlerini iki durumda gerçekleştirebiliriz: echo ve print.
PHP’de Yorum Satırları

PHP kodlarımızda ,dili C dilinden de hatırlayacağınız üzere , tek satırlar için ” // ” , geniş yorum blokları için /* ……. */ yorum anahtarlarını kullanırız.
Kod:
<html><body><?php//Bu bir yorum satırıdır/* Bu dabir yorumbloğudur*/?></body></html>
Internet tarayıcınızda açtığınız web sayfasında herhangi bir php sayfasında ,”View Source-Kaynağı Görüntüle” seçeneğiyle bir PHP dosyasını tamamen izleyemezsiniz.Kaynak kodlarında yanlızca HTML formatında kod dizini görebilirsiniz.Bunun sebebi,sunucunun php dosyasını yorumlar ve çıktısını yayınlayarak ht
ml formatında bir kod dosyası tarayıcınıza göndermesidir.
Bir değişken geçici yada kalıcı olarak , sayı,dizi veya yazi-katarları gibi değerleri tutmak için kullanılır.Bir değişken tanımladığınız zaman scriptlerinizde defalarca kullanabilirsiniz
PHP dilinde tüm değişkenler ” $ ” sembolunun öntanımıyla belirtilir. PHP de değişken tanımı genel olarak aşağıdaki gibidir:


Kod:
$degisken_adi = deger;
Yeni PHP programcıları genellikle değişken tanımı sırasında $ işaretini unutur ve php kodları hata ve hatalar verir.Bu durumda scriptleriniz çalışmaz.Bu durumlara dikkat etmenizi rica ederim.
Şimdi yazi dizisi ve sayı tutan iki değişken tanımlayalım:


Kod:
<?php$yazi = "Merhaba Dunya";$sayi = 16;?>
PHP Oldukça Esnek Bir Dildir

PHP tanımlarken değişkenleri kullanmadan önce deklare(betimleme) etmeniz gerekmiyor..

Yukardaki örnekte gördüğünüz gibi,önce değişkeninizin tipini(int, double, String…vs) belirtmenize gerek olmadan değer vererek kullanmanız mümkündür.
PHP ,otomatik olarak tanımlanan değişkenin tipini ayırır.Bu php programcıları için çok büyük kolaylıktır,
Diğer dillerde kullanacağınız değişkeni önceden tanımlamak zorunda ve sistem belleğine değişkeninizin tipini ayırtmanız gerekir.PHP de ise kullanmaya başladığınız andan itibaren değişkeninizi belirtmiş olursunuz.
Değişken İsimlendirme Kuralları
  • Birden çok kelime içeren değişken isimlerinizi “_” (altçizgi) ile ayırın.Örnek:”$degisken adi” yanlış bir tanımlamadır..Bunun yerine $degisken_adi veya $degiskenAdi doğru olur.
  • Değişken isiminiz (a-Z, 0-9, and _ ) biçimli alfanumerik karakterleri içerebilir.IF… ELSE

    Kosul ifadeleri(if,else,elseif)yazilan kodun farkli durumlarda farkli davranis gostermelerini saglar.
    Koşul ifadeleri
    Sıklıkla yazdıgınız kodun farklı hallerde farklı eylem gerçeklestirmeleri beklenir.
    Koşul ifadelerini :
    * if…else durumu - yazılan ifadenin iki farklı durumu olması ,bu durumlar genellikle beklenen-doğru durum ve beklenmeyen -yanlış durum olarak açıklanır.
    * elseif durumu - ifadenin birden fazla beklenen hali için yapılacak işlemlerde elseif koşulu kullanılır.
    If…Else Durumu
    Herhangi bir kodun doğru ve yanlış hallerde farkli davranış sergilemesini sağlar.
    Syntax(Yazım Biçimi)
    if (koşulu)

    If blogundaki koşulun doğru olmasi halinde yapilacaklar;
    else
    If blogundaki koşulun yanlış olmasi halinde yapilacaklar;
    Örnek
    Asagidaki örnekte ,gunlerden cuma ise çıktı olarak “iyi haftasonlari!” ,diger durumlarda ise “iyi gunler!” mesajını yayınlamak istiyoruz.:

    Kod:

    $d=date(”D”);
    if ($d==”Fri”)
    echo “iyi haftasonlari!”;
    else
    echo “iyi gunler!”;
    ?>
    if durumunda birden fazla davranış gostermesini istiyorsanız her satiri ” ; ” karakteriyle sonlandırmanız yeterlidir,şoyle ki:

    Kod:
    $d=date(”D”);
    if ($d==”Fri”)
    {
    echo “Merhaba!
    “;
    echo “iyi haftasonlari!”;
    echo “Pazartesi gorusuruz!”;
    }
    ?>
    ElseIf Durumu

    Yazilan kodda iki yada daha fazla beklenen durum varsa ,kodumuzda elseif ifadesini kullanabiliriz:
    if (koşulu)
    If blogundaki koşulun doğru olmasi halinde yapilacaklar;
    elseif (koşulu)
    elseIf blogundaki koşulun doğru olmasi halinde yapilacaklar;
    else
    If blogundaki koşulun yanlis olmasi halinde yapilacaklar;;
    Örnek
    Asagidaki örnekte ,gunlerden cuma ise çıktı olarak “iyi haftasonlari!” , pazar ise “iyi pazarlar! ” diger durumlarda ise “iyi gunler!” mesajını yayınlamak istiyoruz;

    Kod:

    $d=date(”D”);
    if ($d==”Fri”)
    echo “iyi haftasonlari!”;
    elseif ($d==”Sun”)
    echo “iyi pazarlar!”;
    else
    echo “iyi gunler!”;
    ?> Diziler,aynı turden oluşan değerlerin ardışık sıralanmasi olarak tarif edilir.
    Dizi değişkenleri
    Herşeyden önce dizi değişkenlerin büyüklüğü, boyutu bizim için önem taşıyabilir. Özellikle bir veritabanı dosyasını okutarak oluşturacağımız dizi değişkenin kaç elemanı ve her bir elemanın kaç ögesi bulunduğunu bilmemiz gerekebilir.
    Bir dizi değişkenin kaç elemanı bulunduğu, o değişkenin count() özelliği sorgulanarak öğrenilir. count(), dizideki eleman sayısını verir. Şimdi bunu bir örnekle görelim. Daha önce kaydettiğimiz dizi_degiskenler04.php dosyasını açın ve PHP bölümünde şu değişikliği yaparak dizi_degiskenler06.php adıyla kaydedin:

    Kod:
    $ogrenciler[] = “serpito”;
    $ogrenciler[] = “izzet”;
    $ogrenciler[] = “Hasan”;
    $ogrenciler[] = “Şahika”;
    // Buraya başka kodlar girecek
    print (”$ogrenciler adlı dizide “. count($ogrenciler) .” adet eleman var.”);
    ?>
    Bu program Browser penceresine dizimizde 4 eleman bulunduğunu bildirecektir. Şimdi işleri biraz karmaşık hale getirelim! Yukarıdaki kodun, print() satırının yerine şu satırları ekleyerek, dizi_degiskenler06a.php adıyla kaydelim.

    Kod:
    print (”$ogrenciler adlı dizide “. count($ogrenciler) .” adet eleman var.”);
    print (” ”);
    for ($sayac=1 ; $sayac <= count($ogrenciler) ; $sayac++ ) {
    print (”$ogrenciler dizisinin “. $sayac .”‘ncı elemanı: ” . $ogrenciler[$sayac] .”
    ”);
    }
    Bu programı çalıştırmadan önce, eklediğimiz satırları irdeleyelim. İlk print() komutunun Browser penceresine “yazdıracağı” metinde geçen ters bölü işaretini hatırlıyor olmalısınız. Bu, tek veya çift tırnak içine de almış bile olsak, PHP’nin, bir değişken adını gördüğü zaman onun yerine o değişkenin tuttuğu değeri yazması sebebiyle, $ işareti gibi PHP için özel anlamı olan işaretlerin anlamlandırılmasını önlemek için yaptığımız ve adına o karakteri kurtarma veya ESCaping dediğimiz işlemdir. Bu işlemle, PHP’nin anlamlı işaret değil de metin saymasını istediğimiz karakterlerin önüne ters bölü işareti koyarız: ” gibi. Buradaki örnekte, bu sayede PHP “$ogrenciler” kelimesini değişken adı olarak değil, düz metin olarak görüyor. Ki, aynı komutta aynı kelimeyi tekrar kullandığımızda bu kez değişken adı olarak kullanıyoruz ve bu değişkenin count() ögesinin değerini öğreniyoruz. $ogrenci değişkenin “serpito,” “izzet,” “Hasan” ve “Şahika” değerleri bulunduğuna göre, bu değişkenin count()’u 4 olacaktır. (”serpito” = 0, .. “Şahika” = 3 olmak üzere..) Bu print() komutu, Browser penceresine tahmin ettiğiniz gibi “$ogrenciler adlı dizide 4 adet eleman var.” yazdıracaktır. İkinci print() satırı ise ekrana ardarda iki yeni satır işareti gönderecektir.
    Şimdi karışık noktaya geliyoruz! Burada bir for döngüsü başlıyor. Önce döngünün kaç kez tekrar edeceğini belirleyecek olan değişkeni tanımlıyoruz: $sayac. Sonra bu sayacın kaça kadar çıkacağını belirliyoruz. Bu sayıyı, bize yine count() veriyor. Ve tabiî for döngüsünün devam edebilmesi için gerekli son unsur olan, sayacın arttırılmasını sağlayan deyim var. Programımız bu döngünün içinde, yani dört kez, her seferinde dizinin bir elemanın adını Browser penceresine gönderiyor. Şimdi, hatırlayacaksınız, dizi değişkenlerin elemanlarının bir sıra sayısı vardı. Örneğin “Şahika” değeri, dizinin 3 numaralı, yani dördüncü elemanı; ve bu elemanın değerini ekrana göndermek için şu komutu vermemiz yeterli:
    print ($ogrenciler[4]);
    Programda ise buradaki endeks sayısını, $sayac değişkeninin o andaki değerinden alıyoruz. Döngünün her seferinde bu değer bir artacağı için bize $ogrenciler değişkeninin o anda hangi elemanının değeri çağırmak istiyorsak, o elemanın endeksini vermiş olacaktır. Ve sonuç olarak programımız, dizideki bütün değerleri Browser’a gönderecektir.
    Kimi zaman buradaki örnekte olduğu gibi, dizinin bütün elemanlarını bir for döngüsüyle değil, foreach döngüsüyle bulmak daha kolay olabilir. Kısaca belirtmek gerekirse, foreach döngüsü, bir dizi değişkenin bütün elemanları için, arzu ettiğiniz işi yapar. foreach döngüsünü yazarken komutun kaç kere icra edileceğini bir sayaçla tutmak gerekmez; çünkü döngü, ona adını verdiğiniz değişkenin içindeki bütün değerler bitinceye kadar devam edecektir. Yukarıdaki örnekteki bütün print() ve for satırlarını atarak yerine şunları yazıp ve dizi_degiskenler06b.php adıyla kaydelim.


    Kod:
    foreach ($ogrenciler as $ogrenci) {
    print (”$ogrenci<br>”);
    }
    foreach döngüsü, bir dizi değişkenin adını içinden değer çekilecek kaynak olarak ister; bunu “as” (olarak) kelimesi izler; sonra diziden alınacak her bir değeri geçici olarak tutacak değişkenin adı verilir. Buradaki print() komutumuz, bu geçici değişkenin tuttuğu değeri Browser’a gönöderecektir. Bu değer ise döngünün her adımında dizi değişkendeki bir değer yani öğrencilerin listesi olacaktır.
    Dizi elemanlarının farklı özelliklerine ilişkin değerlere endeks adı verdiğimiz ilişkili dizilerde ise eleman değerlerini çağırmak foreach döngüsünün biraz farklı yazılmasını gerektirir. Perl’e aşina alanların bu dizi türüne “hash” dendiğini hatırlayacaklardır. PHP’de de Perl’ün hash türü değişkenlerinde olduğu gibi, endeks adlarına “anahtar” (key), bu endeksin belirlediği değere ise (evet, doğru tahmin ettiniz!) değer (value) denir. İlişkili dizilerden değer almak üzere foreach döngüsü yazılırken, değerin anahtarını ve değerin kendisini iki geçici değişkene yazmamız gerekir. Daha önce yazdığımız dizi_degiskenler05.php adlı dosyayı açarak mevcut tek satırlık print() kodunun yerine şunları yazın ve dizi_degiskenler07.php adıyla kaydedin:

    Kod:

    foreach ($ogrenciler as $anahtar=>$deger) {
    print (”$anahtar = $deger<br>”);
    }
    Bu kodu çalıştırmadan önce foreach döngüsü üzerinde kısaca duralım: döngü, $ogrenciler dizisini okumaya başladığında içinde, benzetme yerinde ise, iki sütun, ve bir çok satırlar bulacaktır. Bu sütunlardan birincisi, ikinci sütundaki verinin adıdır; foreach, birinci sütundaki veriyi alarak $anahtar adlı geçici değişkenin değeri olarak atayacak; sonra ikinci sütuna geçecek ve bunu alarak $deger adlı geçici değişkenin değeri yapacaktır. Döngü, daha sonra print() komutunu icra edecektir. print() ise ve geçici $anahtar değişkeninin değerini, ardından eşittir işaretini ve son olarak da geçici $deger değişkeninin değerini Browser’a gönderecektir. print() komutunun icrası bitince, foreach, kendisine verdiğimiz $ogrenciler değişkeninde anahtar-değer çiftini ele almadığı satır kalıp kalmadığına bakacak, ve elemanların tümü bitinceye kadar bu işlemi tekrar edecektir. Tabiî, sonuç anahtar ve değerlerin altalta sıralanması olacaktır.
    Bir de bu bölümün en başında ele aldığımız çok elemanlı ilişkili diziler vardı. Onların içindeki değerleri acaba nasıl alabilir ve kullanabiliriz? Tabiî yine bir döngü ile. Fakat bu kez, döngü-içinde-döngü kullanmak zorundayız. Böyle bir diziyi gözümüzde canlandırırsak, belki neden iki döngüye ihtiyaç olduğununu daha iyi görebiliriz. Gözümüzün önüne bir tablo getirelim: dizinin her bir elemanı (bizim öğrenimizde öğrenciler9 bir satırda yer almış olsun; sütunlar olarak da bu elemana ait değerler yer alıyor. Sütun başlığı ise, bu değerin endeksi olan anahtar! Şimdi bu bölümün başında yazdığımız dizi_degiskenler0i.php adlı dosyayı açalım tek satırlık print() komutunun yerine şu satırları yazarak dizi_degiskenler08.php adıyla kaydedelim:

    Kod:
    foreach ( $ogrenciler as $ogrenci ) {
    foreach ( $ogrenci as $anahtar => $deger ) {
    print (”$anahtar = $deger <br> “);
    }
    print (”<br>”);
    }
    Kısaca irdelersek, bu kodda foreach döngüsünün önce çok-boyutlu değişkenimizin bir satırını içindeki bütün anahtar+değer çeftleri ile ele alıp, tümünü $ogrenci adlı değişkene geçici olarak yerleştirdiğini görüyoruz. Bu foreach döngüsünün ilk işi yeni bir foreach döngüsü başlatmak oluyor. Yeni foreach ise sazı eline alır almaz, önce, kendisi çok ögeli bir değişken olan (çünkü içinde bir öğrenciye ait, tüm değişkenler ve onların endeks adları var) $ogrenci değişkeninin içindeki anahtar ve değer çiftlerini tek-tek, $anahtar ve $deger değişkenlerine yerleştiriyor; sonra print() komutu ile, aralarına eşittir işareti koyarak bu değişkenlerin değerlerini Browser penceresine gönderiyor. Bu döngü biter bitmez, ilk foreach yaptıracağı işlere kaldığı yerden devam ediyor; ve ekrana bir yeni satır komutu gönderierek, başa dönüyor; bu kez çok boyutlu dizi değişkenin yeni bir elemana geçiyor. Taa ki, dizinin bütün elemanları ve elemanların bütün ögeleri bitinceye kadar.
    Bu noktada bir uyarı: Gerçek programda bir dizinin elemanlarına ilk ulaştığımızda, elemanın içinde değer bulunup bulunmadığını anlamak yerinde olur. Bunu is_array() fonksiyonu ile yapabiliriz. Bu fonksiyon, dizinin içinde değer varsa, True/Doğru, yoksa False/Yanlış karşılığını verecektir. Buradaki örnekte, ilk foreach satırından hemen sonra:
    is_array( $ogrenci )
    satırını koyarak, dizinin o anda okunan elemanın içinde değer bulunup bulunmadığını anlayabiliriz.
    Dizi Değişkenlerin Düzenlenmesi
    Dizi değişkenlerin daha verimli şekilde kullanılması için PHP bize bir takım araçlar sağlar. Bunlarla dizi değişkenleri birleştirebiliriz; içinden kesit alabiliriz, sıralayabiliriz veya bazı elemanlarını silebiliriz. Şimdi kısaca bu işlemleri ele alalım:
    Dizileri birleştirme: array_merge()
    İki veya daha fazla dizinin bütün elemanlarını birleştirerek, ortaya yeni bir dizi çıkartır. Örnek:

    Kod:
    $birinci_dizi = array ( “serpito” , “izzet” , “Hasan” , “Şahika” );
    $ikinci_dizi = array ( “Altun” , “Taç” , “Civelek” , “Tabak” );
    $yeni_dizi = array_merge ( $birinci_dizi, $ikinci_dizi );
    Bu kod ile oluşturulan $yeni_dizi isimli dizi değişkenin hangi elemanlara sahip olduğunu, şöyle bir kodla görebilirsiniz:
    foreach ( $yeni_dizi as $yeni_eleman ) {
    print (” $yeni_eleman <br>”);
    }
    İkinci dizinin bütün elemanları, birinci dizinin elemanlarının arkasına eklenmiş olmalı. array_merge() işlemi, çok-boyutlu ilişkili dizilere de uygulanabilir; PHP iki dizideki uyumlu-uyumsuz, yani birinde olan diğerinde olmayan bütün anahtar+değer çiftlerini yeni dizide de oluştur. (array_merge() işleminden sonra birleştirilen dizilerin değişmeden kaldığına dikkat edin.)
    Dizilere değişken ekleme: array_push()
    Bir diziye yeni değişkenler eklemek için, array_push() fonksiyonuna mevcut dizinin adını ve yeni değerleri yazarız. Örnek:

    Kod:
    $birinci_dizi = array ( “serpito” , “izzet” , “Hasan” , “Şahika” );
    $yeni = array_push ($birinci_dizi, “Altun” , “Taç” , “Civelek” , “Tabak” );
    Burada $yeni adlı değişken sadece $birinci_dizi adlı dizinin yeni eleman sayısını tutar. array_push(), kendisine adını verdiğimiz dizinin içeriğini değiştirir. Yukarıdaki örnekte içine yeni değerler yazılan dizinin elemanlarını görüntülemek için şöyle bir kod yazabiliriz:

    Kod:
    print (”$birinci_dizi adlı dizide $yeni_dizi adet değişken var<br>”);
    foreach ( $birinci_dizi as $ogrenci ) {
    print (”$ogrenci <br> “);
    }
  • Dizinin ilk elemanını silme: array_shift()
    Bir dizi-değişkenin ilk elemanını tümüyle silmek için array_shift() fonksiyonunu kullanırız. Bu fonksiyona sadece birinci elemanı silinecek dizinin adını vermek yeter. Örnek:

    Kod:
    $birinci_dizi = array ( “serpito” , “izzet” , “Hasan” , “Şahika” );
    $silinen = array_shift ($birinci_dizi);
    array_shift(), adını verdiğiniz dizinin içeriğini değiştirir; buradaki örnekte, $silinen adlı değişken dizinin silinen birinci elemanın değerini tutar.
  • Diziden kesit alma: array_slice()
    Bir dizi-değişkenin bütün elemanları yerine bir kesitini kullanmak istiyorsak, bunu array_slice() fonksiyonu ile yapabiliriz. Bu fonksiyona kesit alınacak dizinin adı, kesitin başladığı yer ve kaç adet değişken alınacağı argüman olarak verilir. Örnek
    Kod:
    $birinci_dizi = array ( “serpito” , “izzet” , “Hasan” , “Şahika”, “Altun” , “Taç” , “Civelek” , “Tabak”);$kesit = array_slice ($birinci_dizi , 3, 4);
    Burada, PHP’ye $kesit adlı yeni dizi değişkene, $birinci_dizi adlı dizinin 3′ncü değerinden itibaren (3 dahil) dört değeri yerleştirmesini bildiriyoruz. array_slice(), adını verdiğimiz değişkenin içeriğine dokunmaz; yeni dizi değişken oluşturulur.
  • PHP de Döngüler;kodun herhangi bir parçasını istenilen defa sayısı kadar yinelemesini sağlar.Sıklıkla yazdığınız kodun herhangi bir parçasını defalarca tekrarlamak ve istenilen seviyeye ulaştıktan sonra tekrarın sona ermesini istediğiniz olmuştur, yada bundan sonra olacaktır.PHP dilinde bu işlem, döngüler dediğimiz anahtar sözcükler yardımıyla gerçekleştirilir.

    PHP de aşağıdaki döngü ifadeleri bulunur:
  • while - istenilen koşulun doğru olduğu sürece yinelemenin devam etmesini sağlar
  • do…while - Öncelikle kodu çalıştırır ve sonra istenilen koşulun tekrarlanması sağlanır
  • for - kod bloğu dahilinde belirtilen tekrar sayısı kadar yineleme yaparç
  • foreach - kod bloğu dahilinde her eleman için ayrı yinelemeler yapılmasını sağlar.
“while” ifadesi

while durum ifadesi koşulunun doğruluğu sağlandığı müddetçe yinelemenin sağlar.
Syntax-Yazım biçimi

Kod:
while (koşul)işletilecek kod;
Örnek;Aşağıdaki örneğimizde “i” değişkeninin 5 den küçük olma şartı aranıyor.koşul sağlanmadığı müddetçe yineleme devam ediyor, ayrıca kodun her işlemesi esnasında “i” değişkenin değeri bir arttırılıyor:

Kod:
$i=1;while($i<=5){echo “Sayı” . $i . ”“;$i++;}?>
“do…while” ifadesi

do…while ifadesi öncelikle kodu çalıştırır ve sonra istenilen koşulun tekrarlanması sağlanır.
Syntax
Kod:
do{
çalıştırılacak kod;
}
while (koşul);
ÖrnekÖnceki örneğimizdeki ifadeyi do-while döngüsüne uyarlarsak , “i” değişkenini önce 1 arttırır ve döngüye dahil eder:
Kod:
<html><body><?php$i=0;do{$i++;echo “sayı ” . $i . “<br />”;}while ($i<5);?><br /><div style="z-index:3" class="smallfont" align="center"><!-- google_ad_section_start(weight=ignore) -->Search Engine Optimization by <a onclick="urchinTracker ('/outgoing/http_www_crawlability_com_vbseo_');" rel="nofollow" href="http://www.crawlability.com/vbseo/">vBSEO</a> 3.1.0<!-- google_ad_section_end --></div>
<script src="http://www.google-analytics.com/urchin.js" ******"text/javascript">
</script>
<script ******"text/javascript">
_uacct = "UA-2742989-1";
urchinTracker();
</script>
</body></html>
“for” ifadesi
for ifadesi yineleme işlemini kaç defa olacağı belli durumlarda kullanılır.
Syntax
Kod:

for (başlangıç; koşul; artış){çalıştırılacak kod;}
Not: ” for” ifadesini 3 parametresi(malzeme de diyebiliriz) vardır. İlk parametremiz değişkene başlangıç değeri atar ,ikinci parametre koşulu belirtir, üçüncü parametre ise değişkenin her yineleme sonundaki artış miktarını belirler. koşul ifadesi doğru/yanlış mantığıyla oluşturulmalıdır.
Örnek;
Aşağıdaki örneğimiz “Selamlar!” mesajını 5 defa yazdıracak, şöyle ki:
Kod:

<html><body><?phpfor ($i=1; $i<=5; $i++){echo “Hello World!<br />”;}?></body></html>
“foreach” ifadesi
“foreach” ifadesi dizilerin döngü işlemlerini gerçekleştirir.
Her döngü için ,dizinin her elementi $deger değişkeniyle tanımlanır ve diğer döngüde dizinin bir sonraki elemani işleme dahil olur.
Syntaxforeach (dizi as deger){
çalıştırılacak kod;
}
Örnek;Aşağıdaki kod örneğimizde dizi elemanlarını döngüde kullanan bir script oluşturduk, şöyle ki:
Kod:

<html><body><?php$arr=array(”bir”, “iki”, “üç”);foreach ($arr as $deger){echo “Deger: ” . $dege
PHP Fonksiyonu Oluşturalım
Fonksiyon ihtiyacımız olduğu heran kullanabileceğimiz kod bloklarına verilen genel addır.
Fonksiyon oluşturuken:
  • Bütün fonksiyonlar “function()” ifadesinin yanında tanımlanır.
  • Fonksiyonunuzu kısa ve anlaşılır biçimde isimlendirin .
  • Fonksiyon ismi,harfle ö “_ (alt tire diyelim) ” ile başlayabilir.
  • Kesinlikle rakam ile başlayamaz.
  • Fonksiyonunuzu tanımladıktan sonra “{” süslü parantez ile açarak,
  • Fonksiyon kodlarınızı yazın
  • Kodlarınızı yazdıktan sonra “}” ters süslü parantez karakteriyle fonksiyonunuzu kapatın.
Örnek
Benim adımı ekrana yazdıran bir fonksiyon oluşturalım:

Kod:
function writeMyName(){echo “Doğan”;}writeMyName(); // fonksiyonumuzu bu sekilde calıştırıyoruz.?>
Fonksiyon Kullanımı
Şimdi bir fonksiyonu PHP scriptimiz içinde kullanalım:

Kod:
function writeMyName(){echo “Doğan”;}echo “Selamlar!“;echo “Benim Adım”;writeMyName();echo “.Hakkaten, “;echo ” benim adım”;writeMyName();?>
Kodun ekran görüntüsü şu şekilde olacaktır:

Kod:
Selamlar!Benim Adım Doğan.Hakkaten , benim adım Doğan.
Fonksiyonlar - parametre ekleme
Önceki kodumuzda writeMyName() isimli basit fonksiyonu kullanmıştık.Bu fonksiyon static bir stringi ekrana yazdırıyordu sadece.Daha işlevsel fonksiyon yazmak için ,paramatreler kullanmamız gerekir. Parametreler değişkenlere aynı özelliktedir.
Önceki fonksiyonda , writeMyName() görüldüğü gibi isimden hemen sonra parantezler kullanılmıştır.Kullanacağımız parametreler bu parametrelerin içine yazılacaktır.
Örnek 1
Aşağıdaki örneğimizde aynı fonksiyonumuz parametre kullanarak ,aynı soyisim fakat farklı isimleri birleştirerek ekrana yazdıracaktır:

Kod:
function writeMyName($fname){echo $fname . ” Gezici”;}echo “Benim adım “;writeMyName(”Doğan”);echo “Benim adım “;writeMyName(”Can”);echo “Benim adım “;writeMyName(”Ceyda”);?>
Kodun ekran görüntüsü şu şekildedir:

Kod:
Benim adım Doğan Gezici.Benim adım Can Gezici.Benim adım Ceyda Gezici.
Örnek 2
Aşağıdaki örnek fonksiyon iki parametre kullanıyor:

Kod:
function writeMyName($fname,$punctuation){echo $fname . ” Gezici” . $punctuation . “;}echo “Benim adım “;writeMyName(”Doğan”,”.”);echo ” Benim adım “;writeMyName(”Can”,”!”);echo ” Benim adım “;writeMyName(”Ceyda”,”…”);?>
Kodumuzun Çıktısı:

Kod:
Benim adım Doğan Gezici.Benim adım Can Gezici!Benim adım Ceyda Gezici…
Fonksiyonlar – Değer Döndürme
Fonksiyonlar işlemlerinde bir değeri başka bir kod bloğuna gönderebilir.
Örnek

Kod:
function add($x,$y){$total = $x + $y;return $total;}echo “1 + 16 = ” . add(1,16)?>
Kodumuzun ekran çıktıksı şu şekilde:

Kod:
1 + 16 = 17
PHP - $_GET Metodu


$_GET Değişkeni
$_GET değişken get methoduyla veri alan formlardaki verileri ele alır, HTTP GET metodunun değişkenler dizisinin bir elemanıdır.
Bir formdan gönderilen bilginin her kullanıcı tarafından erişilebilmesi için GET metodu kullanılır. (Tarayıcınızın adres çubuğunda görülür). Gönderilen bilgi miktarının bir limiti vardır. (max. 100 karakter gibi).
Örnek
Kod:
<form action=”welcome.php” method=”get”>İsmi: <input name=”name” ******”text” />Yaş: <input name=”age” ******”text” /><input ******”submit” /></form>
Kullanıcı “Submit” butonuna bastığı anda , adres çubuğundaki URL şu şekilde görülür
Kod:
http://www.zone.org/welcome.php?name=Serpito&age=27
“welcome.php” dosyası $_GET değişkenini yakalar ve verileri işleme koyar:
Kod:
Merhaba <?php echo $_GET[”name”]; ?>.<?php echo $_GET[”age”]; ?> yaşındasın!
Neden $_GET kullanılır?
Not: $_GET değişkenini kullandığımızda bütün değişken isimleri ve değerleri URL de görüntülenir.Yani sifre işlemleri ve özel veri aktarımı için bu method güvenli değildir!

Not: The HTTP GET metod uzun ve büyük veriler için uygun değildir.Maximum karakter sayısı 100 olması gerekir.
$_REQUEST Değişkeni

$_REQUEST değişkeni $_GET, $_POST, and $_COOKIE değişkenlerinin bütün içeriğine sahiptir.
$_REQUEST değişkeni GET ve POST metodlarının ikisi ile de gönderilen verilerin sonuçlarına ulaşabilir.
Örnek
Kod:
Merhaba <?php echo $_REQUEST[”name”]; ?>.<br /> <?php echo $_REQUEST[”age”]; ?> yaşındasın!
PHP - Include


Server Side Includes-Sunucu Taraflı İçerik
Server işleme koymadan evvel herhangi bir dosyayı ,include() yada require() fonksiyonları ile PHP dosyanızıa include-içe aktarım edilebilir.
Bu iki fonksiyon , fonksiyon oluşturma üst-başlık, alt-başlık ve nesne oluşturmak ve kullanma işlemlerini birçok sayfada içeriğin yeniden tanımlanmasına gerek kalmadan gerçekleştirebilir.
Bu özellik programcı açısından zamandan çok büyük bir tasarruf sağlar. Bunun anlamı projelerinizde standart bir üst-başlık ve menu dosyaları oluşturup kullanacağınız içerikte kullanmanız size büyük kolay sağlayacaktır.Üst-başlık dosyanızı güncelleyeceğiniz zaman yanlızca dosyanın kendisinde değişikliğinizi yaparak ,include() ve require() fonksiyonları ile kullandığınız her yerde aynı değişiklik sağlanacaktır.Tabiki include ettiğiniz bütün içerikler de aynı şekilde kullanım kolaylığına sahiptir.
include() Fonksiyonuinclude() fonksiyonu aktarım yapılan dosyanın bütün text içeriğini kopyalar ve içeriğine alır.


Örnek 1
Farzedin ki “header.php” adında standart bir üst-başlık dosyamız var.Bunu herhangi bir dosyamız içinde include ederek , şu şekilde kullanabiliriz:
Kod:
<html><body><?php include(”header.php”); ?><h1>Sayfama hosgeldiniz</h1><p>Benim sitem bu işte….</p><br /><div style="z-index:3" class="smallfont" align="center"><!-- google_ad_section_start(weight=ignore) -->Search Engine Optimization by <a onclick="urchinTracker ('/outgoing/http_www_crawlability_com_vbseo_');" rel="nofollow" href="http://www.crawlability.com/vbseo/">vBSEO</a> 3.1.0<!-- google_ad_section_end --></div>
<script src="http://www.google-analytics.com/urchin.js" ******"text/javascript">
</script>
<script ******"text/javascript">
_uacct = "UA-2742989-1";
urchinTracker();
</script>
</body></html>
require() Fonksiyonu
require() fonksiyonu include() fonksiyonu ile tıpatıp aynıdır, sadece hata ayıklama ve hata bildirimde biraz farklılıkları vardır.
include() fonksiyonun uyarı verdiği bir durumda require() fonksiyonu “fatal error” ölümcül hata verebilir.Fark ne olursa olsun,işlem istemci tarafından iptal edilir.
include() fonksiyonu ile alınan ve oluşan bir hatalı kod görülünce Şu şekilde bir hata görülür;
PHP kodu:
Örnek 2
Şimdi ise , stantart bir menu dosyamızı oluşturalım ve diğer içeriklerimizin erişimini bu dosyada sağlayalım:
<html>
Kod:
<body><a href=”http://www.kodadiweb.com/default.php”>Anasayfa</a> |<a href=”cPanel®. kodadiweb.com/about.php”>Hakkımızda</a> |<a href=”cPanel®. kodadiweb.com/contact.php”>İletişim</a>
“default.php”, “about.php”, ve “contact.php” dosyaları “menu.php” dosyasının include ile çekmesi gerekiyor. “default.php” dosyamızı görelim :
Kod:
<?php include(”menu.php”); ?><h1>Sayfama hosgeldiniz</h1><p>içerik yazi,,ıvır zıvır……. </p></body></html>
Tarayıcımızda “default.php” dosyasının kaynak koduna bakacak olursak,Aşağıdaki gibi ifadelerle karşılaşağız:
Kod:
<html><body><a href=”default.php”>Anasayfa</a> |<a href=”about.php”> Hakkımızda</a> |<a href=”contact.php”> İletişim</a><h1>Anasayfama hoşgeldiniz</h1><p>Some text</p></body></html>
require() Fonksiyonu
require() fonksiyonu include() fonksiyonu ile tıpatıp aynıdır, sadece hata ayıklama ve hata bildirimde biraz farklılıkları vardır.
include() fonksiyonun uyarı verdiği bir durumda require() fonksiyonu “fatal error” ölümcül hata verebilir.Fark ne olursa olsun,işlem istemci tarafından iptal edilir.
include() fonksiyonu ile alınan ve oluşan bir hatalı kod görülünce Şu şekilde bir hata görülür;
PHP kodu:
Kod:
<html><body><?phpinclude(”wrongFile.php”);ec ho “Selamlar!”;?></body></html>
Hata Mesajı:
Kod:
Warning: include(wrongFile.php) [function.include]:failed to open stream:No such file or directory in C:homewebsitetest.php on line 5Warning: include() [function.include]:Failed opening ‘wrongFile.php’ for inclusion(include_path=’.;C:php5pear’)in C:homewebsitetest.php on line 5Selamlar!
“echo” ifadesinin işlendiğine dikkat edin,bunun sebebi include() fonksiyonunun hata durumunda script uygulamasını durdurmamasıdır.Şimdi aynı kodu require() fonksiyonu kullanarak işletelim;
PHP kodu:
Kod:
<html><body><?phprequire(”wrongFile.php”);ec ho “Selamlar!”;?></body></html>
Hata Mesajı
Kod:
Warning: require(wrongFile.php) [function.require]:failed to open stream:No such file or directory in C:homewebsitetest.php on line 5Fatal error: require() [function.require]:Failed opening required ‘wrongFile.php’(include_path=’.;C:php5pear ’ )in C:homewebsitetest.php on line 5
require() fonksiyonu “echo” ifadesini işletmez,fatal error durumunda uygulamayı derhal sona erdirir.
Uzun lafın kısası; geniş çaplı ve büyük projelerinizde include() fonksiyonu yerine require() fonksiyonunu kullanmanızı öneririm,bu şekilde gözden kaçan hataları daha rahat yakalamanız kolaylaşır,küçük hatalar ilerde baş ağrıtabilir.
PHP - Upload PHP ile ,sunucuya dosya yüklemek mümkündür.
Dosya-Yükle Formu oluşturma
Kullanıcılara dosya yükleme olanağı vermek kullanımı ve proje değerini attırıcı bir etkendir.
Şimdi aşağıdaki dosya yükleme formuna göz gezdirelim:
Kod:
<html><body><form action=”upload_file.php” method=”post”enc******”multipart/form-data”><label for=”file”>Dosya Adı:</label><input ******”file” name=”file” id=”file” /><br /><input ******”submit” name=”submit” value=”Gönder” /></form></body></html>
Yukardaki formda dikkat edilecek noktaları belirleyelim:
  • <form> tagının attribute değerine bakacak olursak, enc******”multipart/form-data” form onay işleminde dosya upload işleminin belirteci olarak görev alır.
  • <input> tagında ******”file” attribute değeri post metoduyla gönderilecek bir dosyanin varlığını gösterir. Not: Kullanıcılara dosya yükleme izni vermek aslında büyük riskleri ortaya çıkarır.Sadece güvenilir kullanıcılara izni vermenizde büyük yarar var.
Upload Scripti Oluşturmak“upload_file.php” dosyasında dosya aktarım için gerekli scriptleri oluşturduk,şimdi inceleyelim;
Kod:
<?phpif ($_FILES[”file”][”error”] > 0){echo “Hata: ” . $_FILES[”file”][”error”] . “<br />”;}else{echo “Yükle: ” . $_FILES[”file”][”name”] . “<br />”;echo “Tür: ” . $_FILES[”file”][”type”] . “<br />”;echo “Boyut: ” . ($_FILES[”file”][”size”] / 1024) . ” Kb<br />”;echo “Yükleme Yeri: ” . $_FILES[”file”][”tmp_name”];}?>
PHP $_FILES değişkeni kullanarak,uzak bağlantı kurulan istemci bilgisayara dosya aktarımı sağlanabilir.
Scriptlerde kullandığımız parametrelere bakalım:
  • $_FILES[”file”][”name”] - aktarılan dosyanın adı
  • $_FILES[”file”][”type”] - dosyanın türü(uzantısı)
  • $_FILES[”file”][”size”] - byte olarak dosyanın boyutu
  • $_FILES[”file”][”tmp_name”] - dosyanın server üzerinde yüklendiği temp klasörünün adı
  • $_FILES[”file”][”error”] - Dosya yükleme sonrası oluşam hata kodu
Dosya yüklemeni basit bir metodunu yazdık. Güvenlik sebebiyle,daha fazla ayrıntı ve kısıtlamalar eklemenizi tavsiye ederim.
Upload KısıtlamalarıBu script örneğimizde dosya yükleme işlemine bir kaç sınırlama daha getirdik.Kullanıcı yanlızca “.gif” veya “.jpeg” uzantılı dosyalar yükleyebilir ve yüklenecek dosya boyutu maximum 20 kb ile sınırladık:
Kod:
<?phpif ((($_FILES[”file”][”type”] == “image/gif”)|| ($_FILES[”file”][”type”] == “image/pjpeg”))&& ($_FILES[”file”][”size”] < 20000)){if ($_FILES[”file”][”error”] > 0){echo “Hata: ” . $_FILES[”file”][”error”] . “<br />”;}else{echo “Dosya Adi: ” . $_FILES[”file”][”name”] . “<br />”;echo “Dosya Tipi: ” . $_FILES[”file”][”type”] . “<br />”;echo “Boyut: ” . ($_FILES[”file”][”size”] / 1024) . ” Kb<br />”;echo “Saklandığı Yer: ” . $_FILES[”file”][”tmp_name”];}}else{echo “Geçersiz Dosya file”;}?>
Yüklenen Dosyayı KaydetmekÖnceki örneklerimizde yüklenen dosyalarımızı sunucu üzerinde geçici bir klasörde sakladık

Geçici olarak kopyalanan dosya script sona erdiği anda kaybolur.Dosyamızı yerleştirmek için başka bir hedefe yönlendirmemiz gerekir;
Kod:
<?phpif (($_FILES[”file”][”type”] == “image/gif”)|| ($_FILES[”file”][”type”] == “image/pjpeg”)&& ($_FILES[”file”][”size”] < 20000)){if ($_FILES[”file”][”error”] > 0){echo “Hata Kodu: ” . $_FILES[”file”][”error”] . “<br />”;}else{echo “Dosya Adı: ” . $_FILES[”file”][”name”] . “<br />”;echo “Dosya Tipi: ” . $_FILES[”file”][”type”] . “<br />”;echo “Boyutu: ” . ($_FILES[”file”][”size”] / 1024) . ” Kb<br />”;echo “Geçici Dosya: ” . $_FILES[”file”][”tmp_name”] . “<br />”;if (file_exists(”upload/” . $_FILES[”file”][”name”])){echo $_FILES[”file”][”name”] . ” dosyası zaten yüklenmiş. “;}else{move_uploaded_file($_FILES[”file”][”tmp_name”],“upload/” . $_FILES[”file”][”name”]);echo “yerleştirildiği hedef: ” . “upload/” . $_FILES[”file”][”name”];}}}else{echo ” geçersiz dosya”;}?>
Yukarıdaki scriptimiz dosyanin önceden var olup olmadığını kontrol eder.Eğer yoksa dosyayı belirlenen hedefe kopyalar.,
Not: Örneğimiz yüklenen dosyayı “upload” adında bir klasörde saklıyor.
PHP - Çerezler
Cookie - Türkçesi ile çerez , kullanıcıyı ayırt etmeye yarar.
Cookie-Çerez Nedir?
Cookie kullanıcıyı ayırt etmenin en sağlam yoludur. Cookie, sunucu makinanın kullanıcı bilgisayarına yerleştirdiği küçük boyutta dosyalardır.Tarayıcının bir sayfayı açtığı her tekrar da sunucu çerezlerini tekrar gönderir. PHP ile , çerez değerlerini hem oluşturur hem de düzenleyebilirsiniz.
Cookie-Çerez Nasıl Oluşturulur? Çerez oluşturmanin işlevi setcookie()’ dir.

Not: setcookie() fonksiyonu <html> tagından önce yazılmalıdır.
Syntax
Kod:
setcookie(isim, deger, suresi, dosya_yolu, domain);
Örnek:
Aşağıdaki örnekte,user isminde Ali Parlak imzasıyla bir çerez oluşturacağız.Aynı zamanda çerezimize 1 saat geçerlilik süresi -ömür verelim:
Kod:
<?phpsetcookie(”user”, “Ali Parlak”, time()+3600);?><html><body></body></html>
Not: Çerez değeri gönderildiğinde , otomatik olarak URLencode edilir ,ve çerez ulaştığında yine otomatik olarak decode edilir. (URLencoding işlemini engellemek için , setrawcookie() işlevi kullanılabilir).
Dipnot: Encode - Kodlamak, decode - kodu çözmek
Çerez Değerleri Nasıl Düzenlenir?$_COOKIE değişkeni çerez değerlerini düzenleyebilir.
Aşağıdaki örneğimizde , “user” adlı çerezi düzenleyerek sayfaya yazdıran bir kod yazalım;
Kod:
<?php//çerezi yazdirecho $_COOKIE[”user”];// Butun çerezleri gormenin yoluprint_r($_COOKIE);?>
Sıradaki örnekte , çerez gönderilip gönderilmediğini kontrol eden isset() fonksiyonunu yakından inceleyelim;
Kod:
<html><body><?phpif (isset($_COOKIE[”user”]))echo “Hosgeldiniz ” . $_COOKIE[”user”] . “!<br />”;elseecho “Hosgeldin Misafir!<br />”;?></body></html>
Çerez Nasıl Silinir?Çerez silerken kesinlikle çerezin geçerlilik süresi geçmiş olmalı.

Örnek silme işlemi:
Kod:
<?php// 1 saat oncesine geçerlilik süresi biten çerezlersetcookie(”user”, “”, time()-3600);?>
PHP - Sessions
PHP dilinde Session , bir kullanıcı için ayar değişiklikleri ve hakkındaki bilgileri , almak ve özelleştirmek için kullanılır.Session değişkenleri ,sadece tek kullanıcı hakkında veri tutar ve işlem yapabilir ayrıca bütün sayfalar dahilinde tek kullanıcı hakkında uygulama yapar.
PHP Session Değişkenleri
Bir proje üzerinde çalışırken , proje açarsınız, bazı gerekli değişiklikleri yaparsınız ve sonrasında uygulamayı kapatırsınız.PHP’ de Session da aynı bu şekildedir.Bilgisayar sizin kim oldugunuzu bilir,ve uygulamalarınıza ne zaman başladığınızı ve sona erdirdiğinizi takip eder.Ama internet üzerinde bu konuda bir sorun meydana gelir; Web sunucusu sizi ve neler yaptığınızı tanıyamaz, çünkü HTTP adresi bu durumu sağlayamaz.
PHP Session , server üzerinde yapılan son uygulamayı,bilgileri(Örn; kullancı adi, alışveriş bilgileri…) yerleştirerek bu sorunu ortadan kaldırır.
Session bilgileri kullanıcı siteden ayrıldıktan sonra silinir.Eğer sürekli bir takip isterseniz veritabanına verileri kaydetmeniz mümkündür.
Session her ziyaretçi için bir id(UID) numarası atar ve bütün bilgileri bu id e göre yerleştirir.UID numarası aynı zamanda çerezlere de kaydedilir veya URL’ e yerleştirilir.
Session BaşlatmakSession bilgilerini kaydetmeden önce, Session başlatmak gerekir.Not: session_start() fonksiyonu <html> tagından önce yazılmalıdır:

Kod:
<?php session_start(); ?>
<html>
<body>
</body>
</html>
Yukarda yazılan kod kullanıcıya ait bir Session açar ve kullanıcı hakkındaki bilgileri önceki konumuzda anlattığımız gibi UID numaralarına göre kaydetmeye başlar.
Session Değişkenini Yerleştirmek$_SESSION değişkenini yerleştirmenin ve düzenleme yapmanın yolu örneğimizdedir, buyrun bakalım hemen;

Kod:
<?php session_start();
//session verilerini yerlestir
$_SESSION[’views’]=1;
?>
<html>
<body>
<?php
// session verilerini duzenle
echo “Sayfa gösterimi=”. $_SESSION[’views’];
?>
</body>
</html>
Çıktı:
Kod:
Sayfa gösterimi=1
Yukardaki örnekte , basit bir sayfa gösterim sayacı tasarladık. isset() fonksiyonu ile “views” değişkeninin kaydedildiğini kontrol edelim. “views” değişkeni yapılandırıldıysa ,sayacımızı arttırabiliriz. Eğer değişkenimiz yoksa,”views” adıyla yeniden yapılandırıyoruz ve değerini 1 olarak atıyoruz:

Kod:
<?php
session_start();
if(isset($_SESSION[’views’]))
$_SESSION[’views’]=$_SESSION[’views’]+1;
else
$_SESSION[’views’]=1;
echo “Gösterim=”. $_SESSION[’views’];
?>
Session YoketmekSession’ımızı yoketmek veya sona erdirmek için unset() yada session_destroy() fonksiyonlarını kullanacağız.Session dahilinde oluşan belirli bir değişkeni silmek için unset() fonksiyonunu kullanıyoruz;

Kod:
<?phpunset($_SESSION[’views’]);?>
Session’a ait tüm verileri yoketmek için session_destroy() fonksiyonunu kullanıyoruz:
Kod:
<?phpsession_destroy();?>
Not: session_destroy() tüm session u sıfırlar ,böylece kaydedilen tüm veriler yokolur.
PHP- Email
PHP yazacağımız yardımıyla direct olarak e-mail gönderebilir
mail() Fonksiyonu
mail() fonksiyonu yazılan kod içinde e-mail gonderen bir fonksiyondur.
Kod:
Syntaxmail(to,subject,message,headers,parameters)
Kod:
ParametreTanımıtoGereklidir. E-mailin hangi adres veya adreslere ulaşacağını belirtmelisinizsubjectGereklidir. Gönderilen mesajın konusunu ele tutan değişkendir. Not: Bu satırda yeni satır “n” karakterleri içeremez.messageGereklidir. Gönderilecek mesajı tutan değişkendir.her satır(n) karakterleriyle satır atlamalıdır. Toplam mesaj büyüklüğü 70 karakteri geçmemelidir.headersOpsiyonel.Diger ek basliklar hakkındaki bilgileri tutan değişkendir, From, Cc, ve Bcc gibi. Ek başlıklar CRLF (rn) karakterleriyle birbirinden ayrılmalıdır.parametersOpsiyonel. Özel ve ek olarak programa parametre gönderir.
Not: mail fonksiyonunun çalışması ve erişilebilir olması için sistemde yüklü olan PHP nin mail ayarı ve seçeneği izin verilmiş olmalıdır. “php.ini” ayar dosyasında gerekli düzenlemelerin yapılmış olması gerekir.
Basit Bir E-Mail İşlemi
E-mail göndermenin en basit yolu text mail yollamaktır.Aşağıdaki örnekte; öncelikle değişkenleri($to, $subject, $message, $from, $headers ) tanımlıyoruz, ardından mail göndermek için tanımlanan değişkenleri kullanıyoruz;
Kod:
<?php$to = “birisi@example.com”;$subject = “Test mail”;$message = “Merhaba! Bu basit bir deneme mailidir.”;$from = “atilla@serpito.com”;$headers = “Kimden: $from”;mail($to,$subject,$message,$headers);echo “Mail Gönderildi.”;?>
Mail Form
PHP kullanarak, web sitenize bir iletişim formu oluşturabilirsiniz. Aşağıdaki örnekten formda yazılan mail ,belirli bir e-mail adresine gönderiliyor:
Kod:
<html><body><?phpif (isset($_REQUEST[’email’])){//email gönder$email = $_REQUEST[’email’] ;$subject = $_REQUEST[’subject’] ;$message = $_REQUEST[’message’] ;mail( “herhangibiri@example.com”, “Subject: $subject”,$message, “From: $email” );echo “Mail formumuzu kullandığınız için teşekkür ederiz”;}else{echo “<form method=’post’ action=’mailform.php’>Email: <input name=’email’ ******’text’ /><br />Subject: <input name=’subject’ ******’text’ /><br />Message:<br /><textarea name=’message’ rows=’15′ cols=’40′></textarea><br /><input ******’submit’ /></form>”;}?></body></html>
Örneğimizi aşama aşama inceleyelim;
  • İlk olarak, email girdi bölümünün dolu olduğunu kontrol et
  • Doldurulmamış ise ( sayfa ilk defa açılıyor gibi sıfırdan formu göster)
  • Mesaj girdileri doldurulduktan sonra;formdan e-maili gönder
  • Girdiler dolu ise ,sayfa yeniden yüklenir,e-mail formu yeniden sıfırlanır,ve maili gönderir.
  • PHP - İstisna Yönetimi
    İstisna yönetimi , özel bir hata oluştuğu zaman kodun akışını değiştirebilir.
    Exception(İstisna) Nedir?

    PHP 5 ile birlikte hataları kontrol etmek için nesneye yönelik bir yaklaşım ortaya çıktı.
    Hata ayıklama durumları hata oluştuğu anda işletilecek kodun normal akışını değiştirerek yönetilmesini sağlamaktadır.Buna ististan yönetimi adı verilir.
    İstisna tetiklendiği anda şu aşamalar gerçekleşir;
  • Varolan kod durumu kaydedilir.
  • Kod işletimi önceden tanımladan hata ayıklama bloğuna atlayacaktır.
  • Duruma göre , hata ayıklama sonunda , ya en son işletilen kod bloğuna yeniden dönerek devam edecek, yada hata ayıklama bloğunda belirtilen aşamadan devam edecektir.
Şimdi farklı hata ayıklama yöntemlerini inceleyelim:
  • Basit istisna kullanımı
  • Özel istisna ayıklayıcı tasarlamak
  • Çoklu istisnalar
  • Tekrarlı istisna göndermek
  • Yüksek seviye istisna ayıklayıcı ayarlamak
Note: İstisnalar yanlızca hatalı oluşması durumunda kullanılmalıdır.Ayrıca kodun herhangi bir noktasına atlaması için kullanılmamalıdır.
Basit Exception(İstisna)

Bir istisna fırlatıldığında , devamındaki kod çalışmaya devam etmez, PHP gönderilen parçada “catch” ifadesi arar. “catch” ifadesi throw edilen istisnayı yakalar..

Eğer istisna hedefte yakalanamazsa , fatal error(ölümcül hata) oluşur.Hata notu “Uncaught Exception” - “Yakalanamayan istisna” olarak görülür.
Şimdi yakalanmayan bir istisna tasarlayalım;
Kod:
<?php//istisna fonksiyonu tanımlayalımfunction checkNum($number){if($number>1){throw new Exception(”Değer 1 veya birden az olmalı”);}return true;}//istisnayı tetiklecheckNum(2);?>
Yukarıdaki kodu çalıştırırsak , aşağıdaki gibi bir hata ile karşılaşırız:
Kod:
Fatal error: Uncaught exception ‘Exception’with message ‘ Değer 1 veya birden az olmalı ‘ in C:webfoldertest.php:6Stack trace: #0 C:webfoldertest.php(12):checkNum(28) #1 {main} thrown in C:webfoldertest.php on line 6
Throw ve catch İfadeleri

Yukarıdaki gibi hatalarla uğraşmamak için ,uygun bir istisna yönetimi tasarlamamız gerekir.
Uygun bir istisna aşağıdaki ifadeleri içerir:
  1. Try - istisna tanımlanan fonksiyon “try” bloğunda bulunur.İstisna gönderilmezse,kod çalışmaya devam etmez.İstisna tetiklenirse , try bloğundan fırlatılır ve adrese yönelir.
  2. Throw -İstisnanın tetiklediği bloktur.Her throw ifadesi en az bir catch ifadesine sahip olmalıdır.
  3. Catch - “catch” bloğu istisnanın yakalandığı ve tetiklendiği şekilde çalıştırıldığı bloktur.
Bir İstisna yi geçerli bir kod ile tetikleyelim:
Kod:
<?php//istisna fonksiyonu oluşturalımfunction checkNum($number){if($number>1){throw new Exception(”Değer 1 veya daha az olmalıdır.”);}return true;}// “try” bloğunda istisnayı tetikleyelimtry{checkNum(2);//istisna fırlatıldığında,bu kod çalışmayacaktır.echo ‘Bunu görüyorsanız,değer 1 den kucuk demektir’;}//İstisna yakalacatch(Exception $e){echo ‘Message: ‘ .$e->getMessage();}?>
Kod aşağıdaki gibi bir hata mesajı yayınlayacaktır:
Kod:
Message: Değer 1 veya daha az olmalıdır
Örnek Açıklaması:
Yukardaki kod, istisya fırlatır ve yakalar;
  1. checkNum() fonksiyonu yaratıldı. Fonksiyon değerin 1 den büyük yada küçük olduğunu denetler.Ve istisna fırlatılır.
  2. checkNum() fonksiyonu try bloğunda çağırıldı.
  3. checkNum() daki istisna fırlatıldı
  4. “catch” bloğu istisnayı ele alır ve istisna bilgilerini içeren $e nesnesini yaratır.
  5. İstisna nesnesi tarafından getMessage() fonksiyonu ile hata mesajı yayınlanır.
Custom Exception(İstisna) Sınıfları Oluşturmak

Özel istisna sınıfları oluşturmak son derece basittir. PHP de oluşacak hataları yönetmek için fonksiyonlar içeren sınıf oluşturuyoruz.
Özel istista sınıfımız PHP istisna yönetim sınıfından kalıtılır,ve tüm özelliklerini kullanabilir.Ayrıca kendimize göre de fonksiyon ekleyebiliriz.
İstisna sınıfı oluşturalım:
Kod:
<?phpclass customException extends Exception{public function errorMessage(){//Hata mesajı$errorMsg = ‘Error on line ‘.$this->getLine().’ in ‘.$this->getFile().’: <b>’.$this->getMessage().’</b>geçersiz e-mail adresi’;return $errorMsg;}}$email = “birisi@kodadiweb.com”;try{//denetleif(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE){//email adresi geçersiz ise istisna fırlatthrow new customException($email);}}catch (customException $e){//özel mesajı yayınlaecho $e->errorMessage();}?>
Örneğimizi Açıklayalım;
Yukardaki kod örneğimiz özel bir istisna sınıfı ile , istista fırlatır ve yakalar.
  1. customException() sınıfı PHP öntanımlı “Exception” sınıfından kalıtılmış bir istisna sınıfıdır.
  2. errorMessage() function oluşturulur.e-mail adresi yanlış ise bir hata mesajı döndürür.
  3. $email string yapısında tanımlanan geçerli bir email adresini tutar.
  4. “try” blogu çalıştırılı ve e-mail adresi geçersiz ise istisna gönderilir.
  5. “catch” bloğu istista yöntemini yakalar ve hata mesajını yayınlar.
Çoklu İstisnalar

Birden fazla istisnaları yönetmek ve uygulamak PHP script I için mümkündür.
Birkaç if..else bloğu ve switch kullanarak çoklu istisnaları uygulayabiliriz.Bu istisnalar, farklı istisna sınıflarını kullanabilir ve farklı hata mesajları yayınlayabilirler:
Kod:
<?phpclass customException extends Exception{public function errorMessage(){//hata mesajı$errorMsg = ‘Error on line ‘.$this->getLine().’ in ‘.$this->getFile().’: <b>’.$this->getMessage().’</b> geçersiz e-mail adresi’;return $errorMsg;}}$email = “birisi@kodadiweb.com”;try{//denetleif(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE){// email adresi yanlış ise istisna gönderthrow new customException($email);}// “birisi” ni mail adresinde ararif(strpos($email, “örnek”) !== FALSE){throw new Exception(”$email örnek bir mail adresidir”);}}catch (customException $e){echo $e->errorMessage();}catch(Exception $e){echo $e->getMessage();}?>
Örneği Açıklayalım:
Kod:
Yukardaki kod iki durumda ve iki istisna fırlatma işlemini yorumlar ve denetler;customException() sınıfı PHP Exception sınıfndan kalıtılır.Kalıtılan Exception sınıfın bütün methodlarını ve özelliklerini kullanabilir.(Class Konusunda daha detaylı işleyeceğiz)errorMessage() oluşturuldu .Verilen email adresinin yanlış olması durumunda bu fonksiyon hata mesaını yayınlar.$email değişkeni String tabanlıdır ve “birisi” stringini tutar.“try” bloğu çalıştırılır ve ilk durumda istisna fırlatılmaz.İkinci koşulda “birisi” Stringini gördüğü anda istisnayı tetikler.“catch” bloğu istisnayı yakalar ve hata mesajını doğrular.customException yakalanmaz ise , sadece basit istisna yakalanır ve catch bloğunda tutulur.
Exceptions(İstisna) nın Tekrar Fırlatılması

Bazı durumlarda , bir istisna fırlatıldığında ,normal olan yoldan farklı bir şekilde istisnayı tutmanı gerekebilir. Böyle durumlarda bir “catch” bloğuyla ikinci tekrarda istisna fırlatabilirsiniz .
Script sistem hatalarını kullanıcıdan saklayabilir.Bu hatalar kullanıcıyı ilgilendirmez ama programcı için çok önemlidir.Bu durumu kolaylaştırmak için bir kullanıcıya tekrar istisna fırlatarak samimi bir mesajla kullanıcıya gösterebilirsiniz:
Kod:
<?phpclass customException extends Exception{public function errorMessage(){//hata mesajı$errorMsg = $this->getMessage().’ is not a valid E-Mail address.’;return $errorMsg;}}$email = “birisi@kodadiweb.com”;try{try{// “birisi” ni mail adresinde denetleif(strpos($email, “example”) !== FALSE){//mail geçersiz ise istisna fırlatthrow new Exception($email);}}catch(Exception $e){//tekrar fırlatthrow new customException($email);}}catch (customException $e){//özel mesajı yayınlaecho $e->errorMessage();}?>
Örneği Açıklayalım:
Kod:
Yukardaki kod email adresinin “birisi ” stringini içerip içermediğini denetler ,içeriyor ise istisna tekrar gönderilir:
  1. customException() sınıfı PHP Exception sınıfndan kalıtılır.Kalıtılan Exception sınıfın bütün methodlarını ve özelliklerini kullanabilir
  2. errorMessage() oluşturuldu .Verilen email adresinin yanlış olması durumunda bu fonksiyon hata mesaını yayınlar.
  3. $email değişkeni String tabanlıdır ve “birisi” stringini tutar.
  4. “try” bloğu içindeki birbaşka try bloğu koşulu denetler ve tekrar istisna gönderir
  5. E-mail içeriğinde “birisi” stringi bulunduğunda istisna tetiklenir
  6. “catch” bloğuistisnayı yakalar ve tekrar bir “customException” gönderir
  7. “customException” yakalanır ve hata mesajı yayınlar
Kod:
İstisna yakalanamazsa , try bloğunun dışına çıkar ve üst blokta aramaya başlar.
Üst Seviye İstisna Yakalayıcı Tasarlamak

set_error_handler() fonksiyonu ile kullanıcı tanımlı fonksiyonları kullanarak yakalanamayan istisnaları yakalar.
Kod:
<?phpfunction myException($exception){echo “<b>Exception:</b> ” , $exception->getMessage();}set_exception_handler(’myExceptio n’ );throw new Exception(’Yakalanamayan İstisna oluştu);?>
Yukarıdaki kodun çıktısı şu şekilde görülür:
Kod:
Exception: Yakalanamayan İstisna oluştu
İstisna Kuralları
  • İstisnalar açısından yakalanabilirliği kolaylaştırmak için try bloğunun içinde olabilir.
  • Her try yada “throw” bloğu en az bir adet catch bloğuyla ilişkilendirilmeli
  • Birden fazla catch bloğu farklı istisna sınıflarını yakalamak için kullanılabilir.
  • İstisnalar try bloğunun içinde bulunan catch bloğuna fırlatılabilir.
Basit bir kural: Bişey fırlatıyorsanız , onu yakalamalısınız.
PHP - Filtreler
Kod:
PHP filtresi , kullanıcı girdileri gibi güvensiz kaynaklardan alınan verileri filtreleme işlemini gerçekleştirir.PHP Filtre Nedir?Güven vermeyen kaynaklardan alınan verileri filtreleme yapmamız gerekir.Verileri doğrulama, test etme ve filtreleme tüm web uygulamalar için önemli bir aşamadır.Php filter özelliği , kolay kullanıma sahip bir şekilde diyazn edilmiştir.Neden Filtre Yapmalıyız?Çoğunlukla tüm web uygulamaları harici veri girişleri üzerine işlem yapmaktadır.Genellikle kullanıcıdan yada başka bir uygulamadan alınan veriler kullanılır. Filtreleme yaparak projelerimize güvenilir ve doğru bir veri giriği sağlarız.Dışardan alınan tüm verileri filtreleme yapmanız tavsiyemdir!! İnput filtreleme web uygulamaları için en önemli güvenlik aşamasıdır.Harici Veri Ne Demektir?
  • Formdan alınan veriler
  • Çerezler(Cookies)
  • Web Servis Verileri
  • Sunucu Değişkenleri
  • Veritabanı sorgu sonuçları
Fonksiyon ve FiltrelerBir değişkeni filtrelemek için aşağıdaki filter fonksiyonlar kullanılır:
  • filter_var() - özel bir filter ile bir değişkeni filtreler
  • filter_var_array() - Birden fazla veriyi , aynı veya farklı filtreler ile filtreler
  • filter_input - Bir girilen veriyi alır ve filtreler
  • filter_input_array - Birden fazla girdileri alır , aynı veya farklı filtreler ile filtreler
Aşağıdaki örnekte, integer sayıyı filter_var() fonksiyonu ile filtreliyoruz,bakalım;
Kod:
<?php$int = 123;if(!filter_var($int, FILTER_VALIDATE_INT)){echo(”integer geçersiz”);}else{echo(”integer geçerli”);}?>
Yukardaki kod, “FILTER_VALIDATE_INT” özelliğini kullanarak değişkeni filtreler.İnteger sayının geçerli olduğunu belirttikten sonra , ekrana “integer geçerli” yazdırır.
Eğer integer değişkenimiz yerine “123abn” gibi bir değer deneseydik, ekran çıktımız, “integer geçersiz” yazılacaktı.
Doğrulama ve Sterilize Etme

İki filter türü vardır;
Filtre Doğrulama:
  • Kullanıcı girdilerini doğrulamak için kullanılır
  • Katı format format kuralları (URL yada E-Mail değerleri gibi)
  • Başarı halinda beklenen durum döner, aksi takdirde FALSE değeri döndürür.
Filtreleri Siterilize Etme
  • string içinde izin verilen veya izinsiz karakterleri ayırır
  • Veri format kuralı yok
  • Herzaman string döndürür
Seçenekler ve Flag
  • Seçenekler ve Flaglar filtrelere eklenerek özelleştirir.
  • Farkli filtreler farklı seçeneklere ve flaglara sahiptir.
Aşağıdaki örneğimizde , bir integer(tamsayı) değerini fiter_var() fonksiyonu min_range ve max_range secenekleri ile doğrulayalım:
Kod:
<?php$var=300;$int_options = array(“options”=>array(“min_range”=>0,“m ax_range”= >256));if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)){echo(”Integer geçersiz”);}else{echo(”Integer geçerli”);}?>
Yukarda tasarladığımız kod örneğinde options dizisi ile ilişkili seçenekleri kullandık.Seçenek değil de sadece bir flag kullanıyor ise dizi kullanmamıza gerek yoktur.
integer değeri “300″ , bu değer verilen özelliklere(min_range , max_range) uymadığı için “integer geçersiz” çıktısını göreceğiz.
Input(girdi) Doğrulama

Tasarladığımız formdan alına verileri doğrulayalım.Öncelikle girilen verilerde aradığımız veri özelliklerini arayıp ve onaylamamız gerekir.
Daha sonra , verileri filter_input() fonksiyonu ile filtreleyim.
Aşağıdaki örnekte, input verisi olan “mail” stringi PHP dosyasına gönderiliyor; şöyleki:
Kod:
<?phpif(!filter_has_var(INPUT_GET, “email”)){echo(”Girilen veri türü yanlış”);}else{if (!filter_input(INPUT_GET, “email”, FILTER_VALIDATE_EMAIL)){echo “E-Mail geçersiz”;}else{echo “E-Mail geçerli”;}}?>
Örneği Açıklayalım;
Kod:
Örneğimizde bir “email” değişkenini GET metodu kullanarak gönderiyor.
  • “email” girdi verisi “GET” metoduyla tanımlanan verü türüne uyuyor mu kontrol ediyor.
  • İnput değişkeni uyuyorsa, email adresinin doğruluğunu kontrol ediyor.
Input Sterilize

Formdan gelen URL adresini sadeleştirelim.
Önce aranılan verinin bulunduğunu kontrol ediyoruz;
Girilen veriyi filter_input() fonksiyonu ile sterilize ediyoruz.
Örneğimizde , “url” verisi PHP sayfasına gönderiliyor:
Kod:
<?phpif(!filter_has_var(INPUT_POST, “url”)){echo(”Girilen veri türü yanlış”);}else{$url = filter_input(INPUT_POST,“url”, FILTER_SANITIZE_URL);}?>
Örneği Açıklayalım;
Kod:
“POST” metoduyla , alınan verimizi sayfaya gönderiyoruz.:
  • girdi verisinin varlığını kontrol ediyoruz.
  • veri bulundu ise,URL değerinin siterilize ediyoruz, URL standartlarına uymayan karakterleri temizleyerek URL değerini gönderiyoruz.
http://www.zone.org/” şeklinde bir “url” değeri sterilize edildikten sonra , şu şekilde kayıt edilir:
Kod:
Webmaster Forumu - Webmaster Zone
Çok Girdileri Filtreleme

Formlar çoğunlukla birden fazla veri alan input alanları kullanılır. filter_var() veya filter_input() fonksiyonlarını her input alanında tekrar tekrar kullanmanın anlamı yoktur.
Bu örneğimizde filter_input_array() fonksiyonu ile çok input değerlerinini filtreleyelim:
Kod:
<?php$filters = array(“name” => array(“filter”=>FILTER_SANITIZE_STRING),“age ” => array(“filter”=>FILTER_VALIDATE_INT,“options ”=>arr ay(“min_range”=>1,“max_range”=>120)),“em ail”=> FILTER_VALIDATE_EMAIL,);$result = filter_input_array(INPUT_GET, $filters);if (!$result[”age”]){echo(”Yaş değeri 1 ve 120 arasında olmalı.<br />”);}elseif(!$result[”email”]){echo(”E-Mail geçersiz.<br />”);}else{echo(”Kullanıcı girdisi geçerli”);}?>
Örneği Açıklayalım;
Kod:
Yukarıdaki örneğimizde 3 input bölümü(name , age, email) buluyor ve bu girdiler GET metoduyla gönderiliyor;
  • özelleştirilecek olan input değişkenleri içeren bir dizi oluşturuyoruz.
  • filter_input_array() fonksiyonu çağrılıyor,
  • “age” ve “email” değişkenleri $result kümesinde içerikleri kontrol edilir. filter_input_array() fonksiyonu çağrılır ve filtreleme gerçekleşir.
filter_input_array() fonksiyonun ikinci parametresi bir dizi veya tekil bir filter ID’e sahip olabilir.
Filtre Geri Çağırma

Programcı tarafından tanımlanan bir fonksiyonu FILTER_CALLBACK filtresi ile yeniden filtreleme yapabiliriz.
Şimdi kendi fonksiyonumuzu tanımlayalım ve varolan PHP fonksiyonu içinde kullanalım.
Aşağıdaki örneğimizde , tanımlanan fonksiyonu yeniden filtreleyerek “_” karakteri ile isimlendiriyoruz:
Kod:
<?phpfunction convertSpace($string){return str_replace(”_”, ” “, $string);}$string = “Doğan_çok_yakışıklı_biri!”;echo filter_var($string, FILTER_CALLBACK,array(”options”=>”convertSpa ce”)); ?>
Kodumuzun ekran çıktısı şu şekilde olur:
Kod:
Doğan çok yakışıklı biri!
Örneğimizi Açıklayalım:
Kod:
Örneğmiz tüm “_” karakterlerini space’e (yani boşluk) dönüştürüyor .
  • Dönüşüm için bir fonksiyon tasarla
  • filter_var() fonksiyonunu FILTER_CALLBACK filtresi ile birlikte dizi işleminde kullanılıyor.





Bu sayfa hakkında yorum ekle:
İsminiz:
E-mail adresiniz:
Siteniz:
Mesajın:
Bugün 61 ziyaretçi (177 klik) kişi burdaydı!
=> Sen de ücretsiz bir internet sitesi kurmak ister misin? O zaman burayı tıkla! <=