Form Verilerini İşlerken GET ve POST Metotları Arasındaki Kritik Farklar
PHP form işlemlerinde GET ve POST metotları arasındaki hayati farkları öğrenin. Güvenlik, veri boyutu ve kullanım alanlarına göre hangi metodu seçmeniz gerektiğini kod örnekleriyle keşfedin.
Web geliştirme dünyasında kullanıcıdan veri almak için en temel yapı taşları HTML formlarıdır. Bir kullanıcı kayıt olurken, arama yaparken veya giriş yaparken bilgilerini sisteme iletir. PHP bu verileri yakalamak için iki ana global dizi (superglobal) kullanır: $_GET ve $_POST.
Peki, bir formu oluştururken hangi metodu tercih etmelisiniz? Bu iki yapı arasındaki teknik ve güvenlik odaklı farkları, yeni başlayanlar için en anlaşılır örneklerle inceliyoruz.
GET Metodu Nedir ve Ne Zaman Kullanılır?
GET metodu, formdaki verileri doğrudan tarayıcının adres çubuğuna (URL'ye) ekleyerek sunucuya gönderir. Bu nedenle gönderilen tüm veriler herkes tarafından görülebilir. Genellikle arama motoru sorguları veya filtreleme işlemleri gibi hassas olmayan verilerin taşınmasında tercih edilir.
- Veriler URL üzerinde taşındığı için sayfa yer imlerine (bookmark) eklenebilir ve kolayca paylaşılabilir.
- URL uzunluk sınırı olduğu için (tarayıcıya göre değişir, genelde 2048 karakter) büyük veriler gönderilemez.
- Kesinlikle şifre veya kredi kartı gibi hassas bilgiler için kullanılmamalıdır.
GET Metodu İçin Örnek Kod
<!-- HTML Formu (arama.php) -->
<form action="islem.php" method="GET">
<label>Arama Yap:</label>
<input type="text" name="kelime">
<button type="submit">Ara</button>
</form>
<!-- PHP İşlem Dosyası (islem.php) -->
<?php
if (isset($_GET['kelime'])) {
$aranan = $_GET['kelime'];
echo "Aradığınız kelime: " . htmlspecialchars($aranan);
// URL şu şekilde görünür: islem.php?kelime=aradiginiz_sey
}
?>
POST Metodu Nedir ve Ne Zaman Kullanılır?
POST metodu, verileri adres çubuğu yerine arka planda, HTTP istek gövdesi (body) içerisinde saklayarak gönderir. Bu sayede veriler dışarıdan bakan bir göz veya tarayıcı geçmişi tarafından doğrudan görülemez.
- Kullanıcı kaydı, şifre girişi, uzun metinler veya dosya yükleme (resim, video) gibi işlemler için zorunludur.
- Gönderilebilecek veri miktarında teorik olarak bir sınır yoktur (sunucu limitleri belirler).
- Sayfa yenilendiğinde "Formu yeniden gönder" uyarısı verir ve yer imlerine eklenemez.
POST Metodu İçin Örnek Kod
<!-- HTML Formu (giris.php) -->
<form action="kontrol.php" method="POST">
<label>Kullanıcı Adı:</label>
<input type="text" name="kullanici">
<label>Şifre:</label>
<input type="password" name="sifre">
<button type="submit">Giriş Yap</button>
</form>
<!-- PHP İşlem Dosyası (kontrol.php) -->
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$kullanici = $_POST['kullanici'];
// Güvenlik için şifreleri veritabanına kaydederken daima hash'leyin!
$sifre = $_POST['sifre'];
echo "Hoş geldiniz, " . htmlspecialchars($kullanici);
// URL sadece kontrol.php olarak kalır, veriler adres çubuğunda görünmez.
}
?>
Sıkça Sorulan Sorular
Şifre gönderirken neden kesinlikle GET kullanılmaz?
Çünkü GET metoduyla gönderilen veriler tarayıcının adres çubuğuna (URL) açık metin olarak yazılır. Bu durum, şifrenizin yanınızdaki biri tarafından görülmesine, tarayıcı geçmişine kaydedilmesine ve sunucu loglarında açıkça yer almasına sebep olarak büyük bir güvenlik zafiyeti yaratır.
Web siteme bir arama motoru (Search) yaparken hangisini seçmeliyim?
Arama çubukları için her zaman GET metodu tercih edilmelidir. Böylece kullanıcılar yaptıkları aramanın sonuç sayfasını (URL'sini) kopyalayıp başkalarıyla paylaşabilir veya tarayıcılarında favorilere ekleyebilirler.
POST metodu %100 güvenli midir?
Hayır. POST metodu verileri sadece URL'den gizler. Ancak veriler internet üzerinde şifrelenmeden iletiliyorsa (HTTP üzerinden), ağ dinleme (sniffing) araçlarıyla yine ele geçirilebilir. Tam güvenlik için POST işlemleri mutlaka HTTPS (SSL sertifikası) ile birlikte kullanılmalıdır.
Yorumlar (0)
Yorum Yaz