PHP'de formdan gelen bilgileri almak için $_GET ve $_POST değişkenleri kullanılır. ------------------------------------------------------------------- Basit Bir Form Oluşturalım HTML formlarla PHP konusunda bilmeniz gereken en önemli bilgi, HTML kullanarak bir sayfada oluşturduğunuz formdaki bilgiler PHP skripti tarafından otomatik olarak algılanmaya hazır kodlardır, dolayısıyla direk olarak sayfaya gönderip orada çalıştırabilirsiniz. Form Örneği <html> <body> <form action="merhaba.php" method="post"> Adınız: <input type="text" name="ad" /> Yaşınız: <input type="text" name="yas" /> <input type="submit" value="Gönder" /> </form> </body> </html>
Örnek HTML sayfamız iki adet input alanı ve bir adet gönder butonuna sahiptir. Kullanıcı Gönder butonuna tıkladığı zamanda formdaki bilgiler önceden hazırlanmış "merhaba.php" sayfasına gönderiliyor. Bu dosyanın içeriği ise: <html> <body> Merhaba <?php echo $_POST["ad"]; ?>.<br /> Sen <?php echo $_POST["yas"]; ?> yaşındasın. </body> </html> Yukarıdaki kodun ekranda çıkacak görüntüsü aşağıdaki gibi olacaktır. Merhaba Ahmet. Sen 17 yaşındasın.
Form Doğrulama Bazı durumlarda form alanlarının doğrulanması gerekir. Bunun için tarayıcı taraflı(client side) doğrulama daha hızlıdır ve sunucuya olan yükünüzü azaltır. Fakat, iyi bir trafiğe sahip bir sitenin bir takım güvenlik sebeplerinden dolayı sunucu taraflı kontrol yapması gerekebilir. Eğer formdaki bilgiyle veritabanı ile işlem yapılacaksa formun kontrolünü sunucu taraflı(server side) yapmalısınız. Bir formu doğrulamak için yapılacak en iyi yöntem formu gönder sayfasıyla formdaki bilgilerin işleneceği sayfanın tek sayfada olmasıdır. Hem bu sayede formdaki eksik doldurulmuş alanları aynı anda kullanıcıya form alanlarıyla beraber gösterebilirsiniz. Bu da kullanıcının hatasını bulmasını kolaylaştırır.
ad = mehmet mail = mehmet@samo.org web = www.samo.org Yukarıdaki verilere göre ”uye.php” betiğine verileri POST yöntemi ile gönderirsek adres çubuğunda sadece ”...uye.php” yazacaktır.Fakat aynı işlemi GET yöntemiyle yaparsak adres çubuğunda aynen aşağıdaki gibi bir metin belirecektir: ”...uye.php?ad=mehmet&mail=mehmet@samo.org&web=www.samo.org” Görüldüğü üzere GET metoduyla göndereceğimiz veriler gizliliği olmayan ve uzun metinler içermeyen veriler olmalıdır. Not: Renkli yazdığımız ? karakteri php betiğine GET yöntemi verilerinin başlangıcını, & karakteri ise bir sonraki veriye geçildiğini ifade etmektedir.
Verileri kullanılan metoda göre $_HTTP_GET_VARS veya $_HTTP_POST_VARS değişkenleriyle başka bir değişkene atamak mümkündür. GET metodu için örnekteki verileri almak için: $uye_adi=$_HTTP_GET_VARS[”ad”]; $uye_mail=$_HTTP_GET_VARS[”mail”]; $uye_web=$_HTTP_GET_VARS[”web”]; POST metodu için örnekteki verileri almak için: $uye_adi=$_HTTP_POST_VARS[”ad”]; $uye_mail=$_HTTP_POST_VARS[”mail”]; $uye_web=$_HTTP_POST_VARS[”web”];
$_HTTP_GET_VARS ve $_HTTP_POST_VARS değişkenleri kısaltılarak $_GET ve $_POST olarak da kullanılabilirler: GET metodu için örnekteki verileri almak için: $uye_adi=$_GET[”ad”]; $uye_mail=$_GET[”mail”]; $uye_web=$_GET[”web”]; POST metodu için örnekteki verileri almak için: $uye_adi=$_POST[”ad”]; $uye_mail=$_POST[”mail”]; $uye_web=$_POST[”web”];
PHP'de $_GET Değişkeni $_GET değişkeniyle bilgi method="GET" formlarından alınır. ------------------------------------------------------------------- $_GET Değişkeni $_GET değişkeni verileri HTTP GET metodu ile alır. $_GET değişkeniyle bilgi method="GET" formlarından alınır. GET metodu ile alınan bilgiler herkes tarafından görülebilir(tarayıcının adres barında görünür) ve maksimum karakter limiti vardır(max. 100 karakter). Örnek <form action="merhaba.php" method="get"> Adınız: <input type="text" name="ad" /> Yaşınız: <input type="text" name="yas" /> <input type="submit" value="Gönder" /> </form>
Kullanıcı "Gönder" butonuna tıkladığında tarayıcının adres barındaki link aşağıdaki gibi olacaktır: http://www.btp204.com/merhaba.php?ad=Ahmet&yas=17 "merhaba.php" dosyası formdaki bilgileri yakalamak için $_GET değişkenini kullanır(form alanlarının isimleri otomatik olarak URL'deki ID'lere atanır): Merhaba <?php echo $_GET["ad"]; ?>.<br /> Sen <?php echo $_GET["yas"]; ?> yaşındasın!
Neden $_GET kullanılır? Not: $_GET değişkenini kullandığımız zaman form isimleri ve değerleri URL'de görünür. Bu nedenle giriş bilgileri ve diğer önemli form işlemlerinde $_GET değişkeni kullanılmamalıdır. Fakat bir sayfanın sık kullanılanlara eklenmesinde faydalı olabilir. Not: HTTP GETmetodu ile uzun bilgiler yollayamazsınız. Maksimum 100 karakter bilgi gönderebilirsiniz. ------------------------------------------------------------------- $_REQUEST Değişkeni PHP $_REQUEST değişkeni ile $_GET, $_POST, $_COOKIE değişkenlerinin içeriklerini çekebilir. PHP $_REQUEST değişkeni ile formdan GET veya POST metodu ile gelen verileri çekebilir. Yukarıdaki hazırladığımız HTML formdaki bilgileri aşağıdaki gibi $_GET yerine $_REQUEST ile de çekebiliriz ve sonuçta hiç bir değişiklik olmayacaktır. Örnek Merhaba <?php echo $_REQUEST["ad"]; ?>.<br /> Sen <?php echo $_REQUEST["yas"]; ?> yaşındasın!
PHP'de $_POST Değişkeni $_POST değişkeni method="POST" olarak ayarlanmış formlardaki bilgileri çeker. ------------------------------------------------------------------- $_POST Değişkeni $_POST değişkeni formlardan gelen bilgili HTTP POST metodu ile alır. $_POST değişkeni method="POST" olarak ayarlanmış formlardaki bilgileri çeker. POST metodu ile gönderilen bilgiler başkaları tarafından görülmezler ve herhangi bir sınırlamaları yoktur.
<form action="merhaba <form action="merhaba.php" method="post"> Adınız: <input type="text" name="ad" /> Yaşınız: <input type="text" name="yas" /> <input type="submit" value="Gönder" /> </form>
Kullanıcı "Gönder" butonuna tıkladığı zaman URL'de hiç bir ID ve bilgi tanımlaması oluşmayacaktır: http://www.BTP204.com/merhaba.php "merhaba.php" dosyasında şimdi $_POST değişkenini formdan bilgileri çekmek için kullanabiliriz( form alanlarının isimlerini $_POST dizisinde ID olarak kullanarak bu bilgileri çekeriz): Merhaba <?php echo $_POST["ad"]; ?>.<br /> Sen<?php echo $_POST["yas"]; ?> yaşındasın!
Neden $_POST kullanılır Neden $_POST kullanılır? Değişkenler HTTP POST metodu ile gönderilir ve URL'de gözükmezler Değişkenlerin değerleri için herhangi bir uzunluk kısıtlaması yoktur. Fakat, değişkenler URL'de gözükmediği için sayfaları sık kullanılanlara eklemek mümkün değildir. ------------------------------------------------------------------- $_REQUEST Değişkeni PHP $_REQUEST değişkeni ile $_GET, $_POST, $_COOKIE değişkenlerinin içeriklerini çekebilir. PHP $_REQUEST değişkeni ile formdan GET veya POST metodu ile gelen verileri çekebilir. Yukarıdaki hazırladığımız HTML formdaki bilgileri aşağıdaki gibi $_POST yerine $_REQUEST ile de çekebiliriz ve sonuçta hiç bir değişiklik olmayacaktır. Merhaba <?php echo $_REQUEST["ad"]; ?>.<br /> Sen <?php echo $_REQUEST["yas"]; ?> yaşındasın!
PHP date() PHP date() fonksiyonu bir tarihi veya zamanı belirli bir formata sokmak için kullanılır. ------------------------------------------------------------------- PHP'de Date() Fonksiyonu PHP'de date() fonksiyonu bir tarih damgasını okunabilir bir tarih formatına çevirir. Kod Yapısı date(format,tarihdamgasi) Parametre: format Açıklama: Gereklidir. Tarih damgasını belirli bir formata çevirir. Parametre: tarihdamgasi Açıklama: İsteğe bağlıdır. Eğer girilirse girilen tarih damgasına göre formatlanır eğer girilmezse o anki time() ile elde edilen tarih damgasına göre formatlanır.
PHP Tarih - Tarih Damgası Nedir PHP Tarih - Tarih Damgası Nedir? Tarih damgası dediğimiz Ocak 1, 1970, 00:00:00 GMT tarihinden şu ana kadar geçen saniyedir. Ayrıca bu Unix Tarih Damgası olarak da bilinir. ------------------------------------------------------------------- PHP Tarih - Tarihi Formatla date() fonksiyonundaki ilk parametre tarihin nasıl bir formatta gösterileceğini belirtiyor. Tarih formatlarken harfleri kullanır. Tarihi formatlarken kullandığımız bazı harfler: d - Ayın hangi gününde olunduğunu belirtir (01-31) m - Hangi ayda olunduğunu belirtir, rakamsal olarak (01-12) Y - Yılı dört haneli olarak gösterir.
"/", "." veya "-" gibi karakterlerde harflerin arasına eklenerek formatlanan tarihin çıktısını daha belirgin hale getirir: <?php echo date("Y/m/d"); echo "<br />"; echo date("Y.m.d"); echo "<br />"; echo date("Y-m-d"); ?> Yukarıdaki kodun ekranda çıkacak görüntüsü aşağıdaki şekilde olacaktır. 2006/07/11 2006.07.11 2006-07-11
PHP Tarih - Tarih Damgası Ekleme date() fonksiyonundaki ikinci parametre bir tarih damgasını belirtmek içindir. Bu parametreyi isteğe bağlı olarak girebilirsiniz. Eğer bir tarih damgası girmezseniz şuanki zaman kullanılacaktır. mktime() fonksiyonu Bir sonraki örneğimizde mktime() fonksiyonunu kullanarak bir sonraki günün tarih damgasını oluşturacağız. mktime() fonksiyonu belirtilen bir tarihi, tarih damgası şekline dönüştürür. Kod Yapısı mktime(saat,dakika,saniye,ay,gun,dil,yazsaatietkin)
Bir gün sonraya gitmek için date("d") değerine bir ekleyerek mktime() ile işimizi çözebiliriz: <?php $yarin = mktime(0,0,0,date("m"),date("d")+1,date("Y")); echo "Yarının Tarihi: ".date("Y/m/d", $yarin); ?> Yukarıdaki kodun ekranda çıkacak görüntüsü aşağıdaki şekilde olacaktır. Yarının Tarihi 2009/03/08
Değişkenlerin kapsamı (Scope): global ve static Bir fonksiyonun değişkenleri, sadece o fonksiyonun ömrü süresince vardır; hiç bir fonksiyon diğer bir fonksiyonun değişkenlerinin veya kendisine verilmemiş bir başka değişkenin değerini bilemez; kullanamaz.
Tanımlanan genel (global) bir değişkeni bir fonksiyonun içinde kullanmak istediğinizde onun global bir degisken olduğunu belirtmeniz gerekir. Örneğin; <? $a = 1; $b = 2; function toplam() { global $a, $b; $c = $a + $b; echo $c; } toplam(); ?> Global bir değişken olduğu belirtilmezse, başka bir değişle (yukarıdaki örneği düşünürsek) global $a, $b satırı yazılmazsa; program $a ve $b değişkenlerinin yerel değişkenler olduğunu düşünecektir ve ekrana 0 yazacakır.
Değişkenlerin kapsamı (Scope): global ve static Bir fonksiyonun içinde oluşturduğumuz bir değişkenin fonksiyon sona erdiğinde sıfırlanmaması için static deyimi kullanılabilir.
PHP değişkenlerinin tiplerinin kapsamı arasında, programların en önemli özelliklerinden birisi olan statik değişkenler de yer almaktadır. Bir statik değişken yerel bir değişken olarak düşünülür, ve programın çalışması sırasında değerini kaybetmez. Üstteki fonksiyon her çalıştığında $a değişkenini 0'a atayacak, ekrana 0 yazacak, sonra da değerini 1 arttıracaktır. Dolayısı ile yukarıdaki fonksiyonun, fazla bir özeliği yoktur. Ancak, fonksiyonu asağıdaki şekilde düzeltirsek; test() fonksiyonu ilk çalıştırıldığında $a değişkeninin değeri 0'a eşitlenecek, ve her çalıştırıldığında değeri 1 arttırılacaktır.
<?php function saydir () { static $sayi = 0; $sayi++; print ("<h3>Fonksiyonun tuttuğu sayı: $sayi </h3>"); } print ("<h2>Fonksiyonun birinci kez çağrılması:</h2>"); saydir(); print ("<h2>Fonksiyonun ikinci kez çağrılması:</h2>"); print ("<h2>Fonksiyonun üçüncü kez çağrılması:</h2>"); print ("<h2>Fonksiyonun dördüncü kez çağrılması:</h2>"); ?>
Diziler Öğrenci No Adı Soyadı Sınav-1 Sınav-2 Not 1 Özbay Altun .. 2 Muharrem Taç 3 Erhan Mataracı 4 Hasan Civelek 5 Şahika Tabak
Dizi-Değişkenler <?php $ogrenciler = array ( array ( adi => "Özbay", soyadi => "Altun", sinav1 =>"", sinav2 =>"", not =>""), array ( adi => "Muharrem", soyadi => "Taç", sinav1 =>"", sinav2 =>"", not =>""), array ( adi => "Hasan", soyadi => "Civelek", sinav1 =>"", sinav2 =>"", not =>""), array ( adi => "Şahika", soyadi => "Tabak", sinav1 =>"", sinav2 =>"", not =>""), ); print $ogrenciler[0][adi]; ?>
Dizi-Değişkenler Endeks adları bir kelimeden fazla ise bunları tırnak içine alarak belirtmek gerekir. Örneğin: array ( adi => "Özbay", soyadi => "Altun", "Sinav 1 Notları" =>"", "Sinav 2 Notları" =>"", "Toplam Not Ortalamasi" =>""),
Dizi-Değişkenler $ogrenciler = array ("Özbay", "Muharrem", "Hasan", "Şahika");
Dizi-Değişkenler <?php $ogrenciler[] = "Özbay"; $ogrenciler[] = "Muharrem"; $ogrenciler[] = "Hasan"; $ogrenciler[] = "Şahika"; $ogrenciler[0] = "Emre"; $ogrenciler[15] = "Özbay"; echo ("Dizideki 1'nci isim: $ogrenciler[0] <br>"); echo ("Dizideki 2'nci isim: $ogrenciler[1] <br>"); echo ("Dizideki 3'ünci isim: $ogrenciler[2] <br>"); echo ("Dizideki 4'üncü isim: $ogrenciler[3] <br>"); echo ("Dizideki 5'inci isim: $ogrenciler[4] <br>"); echo ("Dizideki 6'ncı isim: $ogrenciler[5] <br>"); echo ("..............<br>"); echo ("Dizideki 15'nci isim: $ogrenciler[15] <br>"); ?>
Dizi-Değişkenler <?php $ogrenci[adi] = "Özbay"; $ogrenci[soyadi] = "Altun"; $ogrenci[sinav1] = ""; $ogrenci[sinav2] = ""; $ogrenci[not] = ""; print $ogrenci[adi]; ?>
Dizi-Değişkenlerin Kullanımı Dizi değişkenin kaç elemanı bulunduğu, count() özelliği ile öğrenilebilir. <?php $ogrenciler[] = "Özbay"; $ogrenciler[] = "Muharrem"; $ogrenciler[] = "Hasan"; $ogrenciler[] = "Şahika"; print ("\$ogrenciler adlı dizide ". count($ogrenciler) ." adet eleman var."); ?>
Dizi-Değişkenlerin Kullanımı Diziyi dolaşmak için; print ("\$ogrenciler adlı dizide ". count($ogrenciler) ." adet eleman var."); print ("<br><br>"); for ($sayac=1; $sayac <= count($ogrenciler) ; $sayac++ ) { print ("\$ogrenciler dizisinin ". $sayac ."'ncı elemanı: " . $ogrenciler[$sayac] ."<br>"); }
Dizi-Değişkenlerin Kullanımı Dizinin bütün elemanlarını bir for döngüsüyle dolaşılabileceği gibi, foreach döngüsü de kullanılabilir. 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.
Dizi-Değişkenlerin Kullanımı foreach ($ogrenciler as $ogrenci) { print ("$ogrenci<br>"); }
Dizi-Değişkenlerin Kullanımı 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. Endeks adlarına "anahtar" (key), bu endeksin belirlediği değere ise 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.
Dizi-Değişkenlerin Kullanımı foreach ($ogrenciler as $anahtar=>$deger) { print ("$anahtar = $deger<br>"); }
Dizi-Değişkenlerin Kullanımı Çok elemanlı ilişkili diziler için döngü-içinde-döngü kullanmak zorundayız.
Dizi-Değişkenlerin Kullanımı foreach ( $ogrenciler as $ogrenci ) { foreach ( $ogrenci as $anahtar => $deger ) { print ("$anahtar = $deger <br> "); } print ("<br>");
Dizi-Değişkenlerin Kullanımı Dizi elemanın içinde değer bulunup bulunmadığını anlamak için is_array() fonksiyonu kullanabiliriz.
Dizi-Değişkenlerin Düzenlenmesi array_merge() İki veya daha fazla dizinin bütün elemanlarını birleştirerek, ortaya yeni bir dizi çıkartır. $birinci_dizi = array ( "Özbay" , "Muharrem" , "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>"); }
Dizi-Değişkenlerin Düzenlenmesi array_push() Bir diziye yeni değişkenler eklemek için, array_push() fonksiyonuna mevcut dizinin adını ve yeni değerleri yazarız. $birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika" ); $yeni = array_push ($birinci_dizi, "Altun" , "Taç" , "Civelek" , "Tabak" );
Dizi-Değişkenlerin Düzenlenmesi 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 yeterlidir. $birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika" ); $silinen = array_shift ($birinci_dizi);
Dizi-Değişkenlerin Düzenlenmesi 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. $birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika", "Altun" , "Taç" , "Civelek" , "Tabak"); $kesit = array_slice ($birinci_dizi , 3, 4);
Dizi-Değişkenlerin Düzenlenmesi sort() ve rsort() Bir dizinin içindeki değerleri alfabetik veya küçükten büyüğe doğru sıralamak için sort() fonksiyonunu kullanırız. $birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika", "Altun" , "Taç" , "Civelek" , "Tabak"); sort ($birinci_dizi); Bir diziyi Z'den A'ya veya büyükten küçüğe doğru sıralamak için de rsort() fonksiyonunu kullanabilirsiniz.
Dizi-Değişkenlerin Düzenlenmesi asort() ve ksort() İlişkili dizilerin diğer dizi değişkenlere göre farkı, değerlerinin bir de adı bulunmasıdır. Değerlerin adlarına anahtar denir. Bir ilişkili diziyi değerlerine göre sıralamak için asort() fonksiyonu kullanılır. $birinci_dizi = array ( ogr_01=>"Özbay", ogr_02=>"Muharrem" , ogr_013>"Hasan" , ogr_04=>"Şahika"); asort ($birinci_dizi);
Dizi-Değişkenlerin Düzenlenmesi asort() ve ksort() PHP, bu diziyi değerler itibariyle alfabetik sıraya sokacaktır. Eğer sıranın değere göre değil de değerlerin anahtarına (burada ogr_01, ogr_02 olan kelimeler) göre yapılmasını istiyorsak, ksort() fonksiyonunu kullanırız. $birinci_dizi = array ( ogr_01=>"Özbay", ogr_02=>"Muharrem" , ogr_013>"Hasan" , ogr_04=>"Şahika"); ksort ($birinci_dizi);
Sınıf – Nesne Kavramı Sınıf, kendi değişkenleri ve icra edeceği komutlardan oluşan fonksiyonları ile bir bütündür. Sınıfı bir kere tanımladıktan sonra istediğimiz kadar örneğini (Nesne) oluşturabiliriz. Bir nesnenin yapacağı işten, o nesnenin metodu diye söz ederiz.
Sınıf oluşturma <?php class ogrenci { // özellikleri tanımlayalım var $adi; var $soyadi; var $sinav1; var $sinav2; var $not; // metodları tanımlayalım function adi_belirle ($n) { $this->adi = $n; } function soyadi_belirle ($n) { $this->soyadi = $n; function sinav1_belirle ($n) { $this->sinav1 = $n;
Sınıf oluşturma function sinav2_belirle ($n) { $this->sinav2 = $n; } function not_hesapla() { $this->not = ($this->sinav1 + $this->sinav2)/2; echo ($this->adi. " " . $this->soyadi . " için not ortalaması: ". $this->not); //Buraya başka kodlar girecek $ogr1 = new ogrenci(); $ogr1 -> adi_belirle("Şahika"); $ogr1 -> soyadi_belirle("Tabak"); $ogr1 -> sinav1_belirle(7); $ogr1 -> sinav2_belirle(10); $ogr1 -> not_hesapla(); ?>