PHP GET ve POST ile Veri Göndermek
HTML5 sayfalarında PHP’ye veya diğer bir sunucu taraflı programlama dillerinden herhangi birine veri gönderilirken iki farklı metot uygulanır. Bunları şimdi bir inceleyelim…
GET ve POST Nedir
GET ile veri gönderilirken, adres çubuğunda gönderilir. Gönderilen değişkenler ve veriler adres çubuğunda görüntülendiği için güvenilir değildir. Ancak bu veriler MD5 şifreleme ile güvenli bir şekilde de gönderilebilir. GET ile veri gönderirken, 512 KB kadar veri gönderilir. Bu nedenle basit işlemler için kullanılır. En yaygın kullanım örneği SEF URL kodlamalarında görülür.
POST ise, doğrudan PHP sayfasına veri gönderir. Yani veriler adres çubuğunda görünmez. Daha güvenli bir yöntemdir.
Aşağıdaki şekilde GET ve POST farklılıkları daha rahat bir şekilde görülmektedir.
GET ile PHP’ye Veri Göndermek ve PHP’de Verileri Okumak
Bir örnek ile konuyu işleyelim…
<?php
$_isim=$_GET['isim'];
$_soyisim=$_GET['soyisim'];
echo "Hoşgeldin $_isim $_soyisim";
?>
Yukarıda yer alan PHP kodlarına göre, bu sayfaya GET metodu ile URL satırında iki adet değişken değeri gönderilebiliyor. Bu tanımlamaya göre adres şuna benzer olmalı:
http://localhost/php_get.php?isim=UĞUR&soyisim=GELİŞKEN
Bu satıra göre isim ve soyisim değerleri değişkendir. PHP’de bu isimlerle erişim sağlanacak. Veriler de UĞUR ve GELİŞKEN String’leridir.
GET ile değer gönderirken ? operatörünün kullanıldığına dikkat edin. Soru işaretinden sonra, bu sayfaya GET ile veri gönderileceği belirtilir. Sonrasında ilk olarak değişken, sonra = atama operatörü, sonra da değer gelir. Eğer birden fazla değişken ile çalışılacaksa, her birinin arasına & ve işareti eklenir.
Yazdığımız kodların sonucuna göre sayfamızın çıktısı şu şekilde olacaktır.
POST ile PHP’ye Veri Göndermek ve PHP’de Verileri Okumak
Şimdi yapacağımız örneğimizde şöyle bir metot uygulayacağız. Sayfamızda basit bir form olacak, isim ve soyisim değerlerini alacağız. Formdaki Gönder butonuna tıklandığında, yine kendi sayfasına değerleri gönderecek. Gelen veriler POST ile alınıp bir mesajda yazdırılacak. Ek olarak, form ile işimiz kalmadığı için, PHP’de bir CSS stili yazdırıp formu oluşturan kutuyu gizleyeceğiz.
<!DOCTYPE html>
<html>
<header> <?php if(isset($_POST['gonder'])){ $_isim=$_POST['isim']; $_soyisim=$_POST['soyisim']; echo "Hoşgeldin $_isim $_soyisim"; echo "<style type='text/css'> #form_kutusu{ display:none; } </style>"; } ?> </header>
<body>
<div id="form_kutusu" />
<form action="php_post_kendine.php" method="POST">
<p>İsim</p>
<input type="text" name="isim" /><br />
<p>Soyisim</p>
<input type="text" name="soyisim" />
<p><input type="submit" name="gonder" value="Gönder" /></p>
</form>
</div>
</body>
</html>
Kodumuzu çalıştırdığımızda ekran görüntümüz şöyle olacak:
Formu doldurup gönderdiğimizde de şu şekilde olacak:
Yazmış olduğumuz bu kodu şimdi farklı sayfaya veri gönderecek şekilde hazırlayalım. Bunun için bir HTML5 sayfası ve bir de PHP sayfası hazırlayacağız. Yapacağımız iş, sadece kodları birbirinden ayırmak ve POST edilecek sayfanın ismini değiştirmek olacak.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<div id="form_kutusu" />
<form action="form_oku.php" method="POST">
<p>İsim</p>
<input type="text" name="isim" /><br />
<p>Soyisim</p>
<input type="text" name="soyisim" />
<p><input type="submit" name="gonder" value="Gönder" /></p>
</form>
</div>
</body>
</html>
form_oku.php
<!DOCTYPE html>
<html>
<header> </header>
<body>
<?php
$_isim=$_POST['isim'];
$_soyisim=$_POST['soyisim'];
echo "Hoşgeldin $_isim $_soyisim";
?>
</body>
</html>