$_POST ve $_GET Kullanımı Nedir ? Nasıl Olur

$_POST ve $_GET Kullanımı Nedir ? Nasıl Olur

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).


Kod:
 <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.

Kod:
<?php

echo $_POST["ad"]." ".$_POST["soyad"];

?>

php-form-post-kullanimi.gif


$_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.


Kod:
<?php

echo "<pre>";
var_dump($_POST);

?>

Ekran Çıktısı:

Kod:
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


Kod:
 <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

Kod:
<?php

echo $_GET["ad"]." ".$_GET["soyad"];

?>

Çıktı:

Hüseyin Öz

Örnek: Aynı şekilde URL sorgularını da get yöntemi ile okuyabiliriz. Aşağıdaki linkten gönderilen verileri okuyalım.


Kod:
<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.

Kod:
<?php

echo $_GET["ograd"]." ".$_GET["ogrno"];

?>

Çıktı:
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


Kod:
<!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

Kod:
<!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.

Kod:
<!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.


Kod:
array(2) {
  ["hobi"]=>
  array(2) {
    [0]=>
    string(1) "2"
    [1]=>
    string(1) "4"
  }
  ["gonder"]=>
  string(7) "Listele"
}


















 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.