PHP’de dizilerin kullanımı başlıklı yazıyı okuduysanız. Artık HTML Form elemanları ile çalışmaya hazırsınız demektir. HTML Form ve URL verilerini PHP tarafında yakalamak ve bunlar üzerinde işlemler yapmak mümkün. HTML elemanlarını PHP tarafında yakalamak için süper global değişkenler kullanılır. Aşağıda süper global değişkenler listesini vereceğim ancak bu yazımızda $_POST ve $_GET süper global değişkenlerini ele alacağız.
PHP Süper Global Değişkenler
$GLOBALS | $_SERVER | $_GET |
$_POST | $_FILES | $_COOKIE |
$_SESSION | $_REQUEST | $_ENV |
PHP’de tüm değişkenlerde olduğu gibi süper global değişkenlerde $ sembolü ile başlar. PHP’de kullanılan süper küresel değişkenler(superglobals) bütün PHP sayfalarında önceden tanımlama yapılmaksızın kullanılır. Bu yazıda $_POST ve $_GET süper global değişkenlerini inceleyeceğiz.
$_POST Kullanımı
İstekte HTTP Content-Type olarak multipart/form-data
veya application/x-www-form-urlencoded
kullanıldığında METHOD POST yöntemi kullanılarak geçerli betiğe aktarılan ilşkisel değişken dizisidir.
Yukarıdaki yazıda ne demek istedik. Form method=”post” ise bize anahtar=>değer çiftlerinden oluşan bir $_POST dizisi döndürmektedir.
Örnek: Aşağıdaki index.php sayfasındanda deneme.php sayfasına post metodu ile ad ve soyad adında iki tane veri gönderilmektedir(submit’in name’i yok).
1 2 3 4 5 6 7 | <form action="deneme.php" method="post"> Ad: <input type="text" name="ad"><br> Soyad: <input type="text" name="soyad"><br> <input type="submit" value="Formu Gönder"> </form> |
deneme.php : Unutmayın! deneme.php sayfasını doğrudan çalıştırdığınızda her hangi bir veri post edilmeyeceği için ekrana hata verecektir. form elemanlarının olduğu sayfadan yönlenmesi gerekiyor.
1 2 3 4 5 6 7 | <?php echo $_POST["ad"]." ".$_POST["soyad"]; ?> |
$_POST değişkeninin ilişkisel bir dizi olduğunu daha önce söylemiştik. Dizinin anahtarlarına(burada ad ve soyad) ulaşarak ekrana ilgili anahtardaki değeri yazdırdık.
İstersek test için $_POST dizisini ekrana dökelim. Aşağıdaki örnek test amacıyla $_POST dizisini ekrana döker.
1 2 3 4 5 6 7 8 | <?php echo "<pre>"; var_dump($_POST); ?> |
Ekran Çıktısı:
1 2 3 4 5 6 7 8 | array(2) { ["ad"]=> string(5) "ahmet" ["soyad"]=> string(3) "bak" } |
$_GET Kullanımı
URL değiştirgeleri (başka bir deyişle, sorgu dizesi) üzerinden geçerli betiğe aktarılan değişkenlerden oluşan bir ilişkisel dizi. Dizinin yalnızca GET isteklerinden değil, bir sorgu dizesindeki tüm isteklerden oluşturulduğunu unutmayın. Method GET yada URL sorgusundan gelen tüm verileri bu yöntemle ulaşabiliriz.
Örneklere bakalım.
Örnek: Yukarıdaki örneği get olarak değiştirelim.
index.php
1 2 3 4 5 6 7 | <form action="deneme.php" method="get"> Ad: <input type="text" name="ad"><br> Soyad: <input type="text" name="soyad"><br> <input type="submit" value="Formu Gönder"> </form> |
deneme.php
1 2 3 4 5 6 7 | <?php echo $_GET["ad"]." ".$_GET["soyad"]; ?> |
Çıktı:
1 2 3 | Hüseyin Öz |
Örnek: Aynı şekilde URL sorgularını da get yöntemi ile okuyabiliriz. Aşağıdaki linkten gönderilen verileri okuyalım.
1 2 3 | <a href="deneme.php?ogrno=67&ograd=Hüseyin">Hüseyin Öztürk</a> |
deneme.php : ?gorno=67&ograd=Hüseyin şeklinde yazılan sorguyu okumak için $_GET değişkenini kullanırız.
1 2 3 4 5 6 7 | <?php echo $_GET["ograd"]." ".$_GET["ogrno"]; ?> |
Çıktı:
1 2 3 | Hüseyin 67 |
Form Verilerini Aynı Sayfada Okuma
Form verilerini aynı sayfada okumak için action yöntemini içini boş bırakmak yada $_SERVER[‘PHP_SELF’] ile mevcut sayfayı döndürebiliriz. $_SERVER PHP tarafından kullanılan süper küresel bir değişken olduğunu unutmayın. Merak etmeyin, iki yöntemle de nasıl örnek yapacağımızı inceleyeceğiz.
Sayfayı kendi içinde göndermek tek başına yeterli olmayacak. Sayfa submit edilip edilmediğini kontrol etmekte gerekiyor. isset() ile butonun tıklanıp, tıklanmadığını kontrol edebiliriz. Submit butonuna bir tane isim verip tıkladığımızda isset() ile butonu yakalayarak ekrana değişkenlerdeki verileri bastırabiliriz.
Örnek: action için boş bırakılarak yapma
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Tasarım Kodlama</title> </head> <body> <?php /*butona tıklanırsa $_POST["kayit"] nesnesi gönderilecektir. isset değiken mevcutsa true döndürecek ve if içindeki kodlar çalışacaktır. */ if(isset($_POST["kayit"])) { echo "<h1>{$_POST['ad']} {$_POST['soyad']}</h1>"; //echo "<h1>".$_POST['ad']." ".$_POST['soyad']."</h1>"; } ?> <form action="" method="post"> Ad: <input type="text" name="ad"><br> Soyad: <input type="text" name="soyad"><br> <input name="kayit" type="submit" value="Formu Gönder"> </form> </body> </html> |
Yukarıdaki örnekte “” içindeki {$_POST[“ad”]} yapısı dikkatinizi çekmiştir. Tırnaklar içindeki verileri ekrana yazdırmak için değişken adı yazılırken, ilişkisel(anahtar=>değer) çiftine sahip dizileri ekrana yazdırabilmek için tırnaklar içinde {} içine yazmak gerekir.
Örnek: action için <?=$_SERVER[‘PHP_SELF’]?> yapma
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Tasarım Kodlama</title> </head> <body> <?php /*butona tıklanırsa $_POST["kayit"] nesnesi gönderilecektir. isset değiken mevcutsa true döndürecek ve if içindeki kodlar çalışacaktır. */ if(isset($_POST["kayit"])) { echo "<h1>{$_POST['ad']} {$_POST['soyad']}</h1>"; //echo "<h1>".$_POST['ad']." ".$_POST['soyad']."</h1>"; } ?> <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> Ad: <input type="text" name="ad"><br> Soyad: <input type="text" name="soyad"><br> <input name="kayit" type="submit" value="Formu Gönder"> </form> </body> </html> |
HTML Form ile Dizi olarak Verileri Gönderme
Form elemanları içinde bazın bir dizi aynı veriyi göndermek gerekebilir. Örneğin checkbox verilerini gönderirken dizi olarak göndermek isteyebiliriz.
Bu işlem için name değerini aynı verip name sonuna [] parantez koyarız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>TasarımKodlama</title> </head> <body> <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> Yüzme: <input type="checkbox" name="hobi[]" value="1"><br> Futbol: <input type="checkbox" name="hobi[]" value="2"><br> Basketbol: <input type="checkbox" name="hobi[]" value="3"><br> Golf: <input type="checkbox" name="hobi[]" value="4"><br> <input type="submit" name="gonder" value="Listele"> </form> <?php if(isset($_POST["gonder"])) { echo "<pre>"; var_dump($_POST); } ?> </body> </html> |
Çıktı: iki tane hobi seçip gönder Listele butonuna tıkladığımızda aşağıdaki gibi bir görüntü elde edeceğiz.
1 2 3 4 5 6 7 8 9 10 11 12 13 | array(2) { ["hobi"]=> array(2) { [0]=> string(1) "2" [1]=> string(1) "4" } ["gonder"]=> string(7) "Listele" } |
Diğer yazılar
2 Yorum