GET ve POST Metodu

 bcakir
 13 Aralık 2011

Merhaba arkadaşlar, bu yazımda genelde sizler tarafından çokça karıştırılan ve bu konuda çokça soru sorulan POST ve GET metodlarından bahsedeceğim. Bu metodlar Html form elemanlarına girilen bilgileri Php’ye aktarmak için kullanılırlar. Ayrıca, Ajax’ın Php ile iletişimi de bu metodlar ile sağlanıyor. Bu metodlar kullanıcıdan bilgi almak için gerekli olduğundan dolayı, kesinlikle öğrenmeliyiz. Aksi halde, herhangi bir bilgi almamız ve bu bilgileri işlememiz söz konusu olamaz. İlk önce bu iki metod arasındaki farkı anlatayım.

GET: Bu metod daha çok adres satırındaki bir değişkeni almak için kullanılır. Adres satırına kullanıcı erişebildiği için de POST metoduna göre güvenli bir yöntem değildir.

POST: Bu metod ile veri gizli gönderildiği için kullanıcının veri transferine müdahalesi söz konusu değildir. Bundan dolayı da veri transferinde kullanılan en güvenli metoddur. Daha çok forumdan elemanlarından kullanıcının girdiği bilgileri alma ve Ajax ile Php betiğine veri göndermek için kullanılır.

index.php?yazar=bcakir&sayfa_id=61&konu=metodlar şeklindeki bir bağlantıda yer alan değerleri aşağıdaki şekilde alıyoruz.

<?php
//bağlantıdaki değerleri alma
$yazar=$_GET['yazar'];
$sayfa_id=$_GET['sayfa_id'];
$konu=$_GET['konu'];

//değerleri ekrana yazdırma
echo 'Yazar:'.$yazar.' Sayfa Id:'.$sayfa_id.' Konu:'.$konu;
?>

Yukarıda GET ile linkten değer alma işlemini anlattım. Burada önemli olan linkteki parametreleri doğru seçmekte. Linkte olmayan parametreyi alamayız. Yani yukarıda yazar şeklinde parametre var, bu değeri başka bir parametre ismiyle almamız ya da bu linkte olmayan tarih şeklinde bir değeri almamız mümkün değil. Şimdi de POST ile ilgili örneklerimizi yapalım.

<?php
//form.php olarak kaydedin
if(isset($_POST['gonder'])){
    $ad=$_POST['ad'];
    $soyad=$_POST['soyad'];
    echo 'Ad:'.$ad.' Soyad:'.$soyad;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Post Metodu</title>
</head>
<body>
<form action="form.php" method="POST">
Ad: <input type="text" name="ad" /><br />
Soyad: <input type="text" name="soyad" />
<input type="submit" name="gonder" value="Gönder" />
</form>
</body>
</html>

Yukarıda POST ile forma girilen verileri alma işlemini yaptım. Şimdi de bu metod yardımıyla Ajax ile Php arasında veri alışverişini yapalım. Bu işlemi JQuery kütüphanesinden yararlanarak yapacağım. Çünkü bu kütüphane Ajax metodları kullanımını hem kolaylaştırıyor hem de çok az kod satırına indiriyor.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>JQuery ve Php ile Veri Alış-Verişi</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
function gonder(){
    //Verileri gönderme işlemi
    $.ajax({
        type:'POST',
        url:'veri.php',
        data:$('#form1').serialize(),
        success: function(msg){
            //Dönen sonucu ekranda gösterme
            $('#sonuc').html(msg);
        }
    });
}
</script>
</head>
<body>
<form id="form1" style="display:inline;">
Ad: <input type="text" id="ad" name="ad" />
Soyad: <input type="text" id="soyad" name="soyad" />
</form>
<input type="submit" id="btn" value="Gönder" onclick="gonder()" />
<div id="sonuc"></div>
</body>
</html>

Yukarıda uygulamamızın formdan girilen verileri almayı ve Ajax metodları ile veri.php sayfamıza gönderme işlemini yaptık. Son olarak bu uygulamanın Php betiğini yazalım.

<?php
//veri.php olarak kaydedin
$ad=$_POST['ad'];
$soyad=$_POST['soyad'];
echo 'Ad:'.$ad.' Soyad:'.$soyad;
?>

Yukarıda bütün metodlarımızı açıkladık ve örneklerimizi de yaptık ama son olarak birkaç önemli noktaya daha değinmek istiyorum. POST ile gönderilen veri POST metoduyla GET ile gönderilen veri GET metoduyla alınır. Fakat REQUEST ile de bu iki metoddan gelen veriler alınabilir. Örneğin; yukarıda ki örnekte $_POST[‘ad’] yerine $_REQUEST[‘ad’] kullanabiliriz. Ama bunu sizlere tavsiye etmiyorum çünkü POST seviyesinde gönderilen veriyi tarayıcımızın adres satırında gösteriyor, diğer bir deyişle; GET metoduyla gönderilmiş gibi yapıyor. Bu da verilerimize erişilebileceği anlamına gelir. Ayrıca, formdan veri alırken addslashes, strip_tags, trim, mysql_real_escape gibi Php’nin veri temizleme araçlarını mutlaka kullanalım. Çünkü art niyetli kişiler form alanlarına bilgi girmek yerine, sitenizin yapısını bozacak ya da sunucunuzu ele geçirecek kodlar yazabilir. Bu güvenlik açığını da kapatmayı ihmal etmeyin. Böylece bütün konulara değinerek bir yazımızın daha sonuna gelmiş oldum. Yararlı olması dileğiyle.

 6.793 Okunma

Bu yazıya 4 yorum yapılmış.

  1. Konuya merak ve ilgisi olan, fakat kodlardan hiç anlamayan birçok insanımız var. Yardımın için teşekkürler.

  2. teşekkürler faydalı oldu. ayrıntısına girince güzel oluyor. bu tür yazılar yazmanız temennisiyle.

  3. Merhaba, çok beğendim.

  4. yazı için teşekkürler

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla JQuery, Php
Kapat