• Şuradasınız
  • Anasayfa
  • PHP
  • PHP : Post ve Get Metodlarıyla Değer Gönderme Mantığı

PHP : Post ve Get Metodlarıyla Değer Gönderme Mantığı

Web tabanlı programlama yaparken, klasik masaüstü programlamadan farklı olarak sayfalar arasında veri iletimi / değer gönderme söz konusudur. Bu veriler form alanlarındaki bilgilerden tutun da cookie ve session bilgilerine kadar farklılaşabilirler. Bu yapılar, yani sayfalar arasında iletişim kuran yapılar bir sistemi dinamik yapan en önemli unsurlardır.

Bu yazıda form alanlarından alınan bilgilerin başka sayfalara nasıl taşınacağını not edeceğim.

Kısaca HTML in bünyesinde var olan form yapısına bir göz atmak gerekirse, en basitinden aşağıdaki bileşenlerden oluşur;

<form action="gonderilendosya.php" method="post">
   <input name="ders" type="text" />
   <input name="bolum" type="text" />
   <input type="submit" value="Gönder" />
</form>

Form etiketinde bulunan action parametresi, formdaki bilgilerin nereye / hangi sayfaya gönderileceğini belirtmektedir. method parametresi ise bilgilerin hangi metod ile gönderileceğini belirtmektedir.

Input etiketi, type parametresine göre farklı işlevleri yerine getirmek için tasarlanmıştır.

  • text : metin alanı oluşturur.
  • password : * içerikli metin alanı oluşturur.
  • checkbox : çoklu seçilebilen işaret kutucuğu oluşturur.
  • radio : tek seçimlik işaret kutucuğu oluşturur.
  • submit : gönderme buton oluşturur.
  • reset : formdaki bilgileri sıfırlar.

Input etiketinin name parametresi ise o input nesnesinin içinde bulunan bilgiye ulaşılırken kullanılır.

Yukarıdaki form, input type=”submit” ile oluşturulan buton sayesinde belirtilen adrese belirtilen metod ile değerleri gönderir. Bundan sonra yapılacak iş o sayfaya gidip gönderilen değerleri almak ve kullanmaktır.

POST Metodu ile Değer Gönderme

Bilgiler, gonderilendosya.php adlı dosyaya, post metodu ile gönderildi. Dolayısıyla şu an o bilgileri post metodu ile yakalamamız gerekiyor.

$b = $_POST["ders"];
$d = $_POST["bolum"];
echo "Ders : " . $ders . "Bölüm : " . $bolum;

Değerleri alıp ekrana yazdırdık.

GET Metodu ile Değer Gönderme

Bilgiler post metodu yerine get metodu ile gönderilmiş olsaydı aşağıdaki gibi bir kod yazmamız gerekecekti.

$b = $_GET["ders"];
$d = $_GET["bolum"];
echo "Ders : " . $ders . "Bölüm : " . $bolum;

Post ve Get Metodları Arasındaki Farklar

Post metodu, daha güvenli ve daha yavaştır. Güvenliğin gerektiği yerlerde kullanılabilir.

Get metodu ile gönderilen bilgiler tarayıcının araç çubuğunda aşağıdaki gibi görünecektir.

http://localhost/gonderilendosya.php?$ders=matematik&bolum=bilgisayarmuhendisligi

Dolayısıyla daha güvensiz ve daha hızlı olacaktır. Hızın ön planda olduğu yerlerde kullanılabilir.

Get ve Post metodlarının haricinde bu iki metod ile gönderilen bilgileri de alabilen bir metod daha söz konusudur. Request metodu ile formun gönderilme metodu farketmeksizin bilgileri alıp kullanabilirsiniz. Aslında Request metodu Cookie-çerezleri de alabilen bir global değişkendir. Dolayısıyla biraz daha yavaş çalışacaktır.

$b = $_REQUEST["ders"];
$d = $_REQUEST["bolum"];
echo "Ders : " . $ders . "Bölüm : " . $bolum;

Sonuç olarak; Sayfalar arasında iletişimi kurmak için post ve get metodları kullanılır. Form ve input etiketi ile beraber post ve get metodunun beraber kullanılmasıyla iletişimi sağlayabilirsiniz.

Benzer Yazılar

Yorumlar

  • N , 12 Mayıs 2013 - 18:39:10

    Çok teşekkürler. Gayet iyi açıklamışsınız. :)

    Cevapla
  • Umre Fiyatları , 18 Mayıs 2013 - 16:34:29

    paylaşım için teşekkürler. Ben php öğreniyorum ve bloğunuzu severek takip ediyorum. Okulda GET ve POST methodlarını kullanamıyordum. çok açıklayıcı olmuş

    Cevapla
  • Zeynel , 19 Mart 2015 - 23:54:40

    Paylaşım için teşekkürler…
    Post’un harfleri gönderme şekli nedir? Türkçe’ye has karakterleri ingilizceye çeviren bir kod kullanıyorum. Fonksiyonla aynı dosyada $text=”ğşç” şeklindeki text’i çeviriyor ama başka sayfasan formun içine ğşç yazıp post ettiğimde çevirmiyor nedeni ne olabilir ? Yardımcı olabilirseniz sevinirim

    <?php
    $meslek0=$_POST['meslek'];
    $ilce0=$_POST['ilce'];

    $internal='ş';
    echo 'internal original: ‘.$internal;

    echo ‘posted original: ‘.$meslek0;

    $meslek0=html_entity_decode($meslek0);

    echo ‘posted after decode: ‘.$meslek0;

    $meslek0=replace_tr($meslek0);
    $internal=replace_tr($internal);

    echo ‘internal converted:’.$internal;
    echo ‘posted converted:’.$meslek0;

    echo ”;
    echo $ilce0;

    function replace_tr($text) {
    $text = trim($text);
    $search = array(‘Ç’,'ç’,'Ğ’,'ğ’,'ı’,'İ’,'Ö’,'ö’,'Ş’,'ş’,'Ü’,'ü’,’ ‘);
    $replace = array(‘c’,'c’,'g’,'g’,'i’,'i’,'o’,'o’,'s’,'s’,'u’,'u’,'-’);
    $new_text = str_replace($search,$replace,$text);
    return $new_text;
    }

    ?>

    Cevapla
  • ahmettatar , 10 Haziran 2015 - 10:23:34

    Cem bey mesela get metodu ile veri taşıyan bir linkin aynı zamanda post metodu ile bir veriyi iletmesi mümkünmüdür yani bir link var

    şeklinde formun içinde de type hidden olan birkaç input var linke tıklandığında formun içindeki veriler linkin sayfasına post edilsin stiyorum ama submit olmadığı için post edilemiyor

    Cevapla

Yorum Yazın

Su elementleri kullanabilirsiniz : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Arama
RSS
Beni yukari isinla