PHP GET ve POST Metotları Nedir? Aralarındaki Farklar ve Kullanımı
Web sitelerinde kullanıcılar ile sunucular arasında sürekli veri alışverişi gerçekleşir. Bir web sayfasını açtığımızda, arama yaptığımızda veya bir form gönderdiğimizde tarayıcımız sunucuya bir HTTP isteği gönderir.
Bu isteklerde kullanılan en yaygın yöntemlerden ikisi GET ve POST metotlarıdır.
PHP programlama dilinde GET ve POST metotları, kullanıcıdan gelen verilerin alınması ve işlenmesi açısından önemli bir yere sahiptir.
1. HTTP NEDİR?
HTTP (Hypertext Transfer Protocol), tarayıcı ile web sunucusu arasındaki iletişimi sağlayan bir protokoldür.
Bir web sitesini ziyaret ettiğimizde tarayıcımız sunucuya bir istek gönderir. Sunucu bu isteği değerlendirir ve uygun yanıtı tarayıcıya iletir.
Bu iletişim genel olarak iki aşamadan oluşur:
- HTTP Request (İstek): Tarayıcının sunucuya gönderdiği istektir.
- HTTP Response (Yanıt): Sunucunun tarayıcıya gönderdiği yanıttır.
Örneğin tarayıcının adres çubuğuna bir web sitesinin adresini yazdığımızda, tarayıcı genellikle sunucuya GET isteği gönderir.
Sunucu da istenen sayfanın içeriğini tarayıcıya gönderir.
2. GET METODU NEDİR?
GET, HTTP protokolünde sunucudan bir kaynak veya bilgi istemek amacıyla kullanılan metottur.
Bir web sayfasını ziyaret ettiğimizde veya arama yaptığımızda genellikle GET istekleri kullanılır.
GET yöntemiyle gönderilen parametreler, çoğunlukla URL adresinin sorgu bölümünde bulunur.
Örneğin aşağıdaki adresi inceleyelim:
https://ornek.com/arama.php?kelime=php
Bu adreste soru işaretinden (?) sonraki bölüm bir sorgu parametresidir.
- arama.php: İstek gönderilen PHP dosyasıdır.
- ?: URL'nin sorgu bölümünü başlatır.
- kelime: Parametrenin adıdır.
- php: Parametrenin değeridir.
Bu örnekte sunucuya kelime adında bir parametre gönderilmiş ve değeri php olarak belirlenmiştir.
GET METODUNUN ÖZELLİKLERİ
- Sunucudan bilgi veya kaynak istemek amacıyla kullanılır.
- HTML formlarında kullanıldığında veriler genellikle URL'ye eklenir.
- URL üzerindeki parametreler kullanıcı tarafından görülebilir.
- Oluşturulan bağlantılar paylaşılabilir ve yer imlerine eklenebilir.
- Arama, sıralama, filtreleme ve sayfalama işlemlerinde sıkça kullanılır.
- Sunucu üzerindeki verileri değiştiren işlemler için kullanılmamalıdır.
3. POST METODU NEDİR?
POST, HTTP protokolünde sunucuya veri göndermek ve sunucudan bu veriler üzerinde işlem yapılmasını istemek amacıyla kullanılan metottur.
Örneğin bir kullanıcı kayıt formunu doldurup gönderdiğinde, bilgiler genellikle POST yöntemiyle sunucuya iletilir.
POST yönteminde gönderilen form verileri URL'nin sorgu bölümüne otomatik olarak eklenmez. Bunun yerine HTTP isteğinin gövdesinde taşınır.
POST metodu aşağıdaki işlemlerde sıklıkla kullanılır:
- Kullanıcı kayıt işlemleri
- Kullanıcı giriş işlemleri
- İletişim formlarının gönderilmesi
- Veritabanına yeni kayıt eklenmesi
- Mevcut kayıtların güncellenmesi
- Dosya ve resim yükleme işlemleri
POST METODUNUN ÖZELLİKLERİ
- Veriler HTTP isteğinin gövdesinde taşınır.
- Gönderilen form verileri URL'nin sorgu bölümünde otomatik olarak görünmez.
- Sunucu üzerinde işlem yapılması gereken durumlarda kullanılabilir.
- Dosya yükleme işlemlerini destekler.
- Gönderilebilecek veri miktarı sunucu yapılandırmasına bağlıdır.
- Tek başına veri güvenliği sağlamaz.
4. GET VE POST METOTLARI ARASINDAKİ FARKLAR
GET ve POST metotları sunucu ile iletişim kurmak için kullanılsa da kullanım amaçları ve verilerin gönderilme şekilleri birbirinden farklıdır.
| Özellik |
GET |
POST |
| Kullanım amacı |
Bilgi veya kaynak istemek |
Sunucuya veri göndererek işlem yaptırmak |
| Verilerin taşınması |
Formlarda genellikle URL sorgu bölümünde |
HTTP isteğinin gövdesinde |
| Adres çubuğunda görünme |
URL parametreleri görünür |
Form verileri otomatik olarak görünmez |
| Bağlantı paylaşımı |
Parametreli URL paylaşılabilir |
İstek gövdesindeki veriler URL ile paylaşılmaz |
| Veri miktarı |
URL uzunluğu sınırlarından etkilenir |
Sunucu yapılandırmasına bağlıdır |
| Yaygın kullanım |
Arama, filtreleme, sayfalama |
Kayıt, giriş, güncelleme, dosya yükleme |
5. PHP'DE GET VE POST VERİLERİNE NASIL ULAŞILIR?
PHP, GET ve POST yöntemiyle gönderilen verilere ulaşabilmemiz için önceden tanımlanmış süper global diziler sunar.
Bunlar $_GET ve $_POST dizileridir.
$_GET KULLANIMI
URL'nin sorgu bölümünde bulunan parametreleri almak için $_GET kullanılır.
Örneğin aşağıdaki URL üzerinden bir isim gönderildiğini düşünelim:
http://localhost/ornek.php?isim=Ahmet
PHP tarafında bu değere şu şekilde ulaşabiliriz:
<?php
$isim = $_GET["isim"] ?? "";
if (is_string($isim)) {
echo htmlspecialchars($isim, ENT_QUOTES, "UTF-8");
}
?>
Ekran Çıktısı: Ahmet
Bu örnekte URL'den gönderilen isim parametresinin değeri PHP tarafından alınmış ve ekrana yazdırılmıştır.
$_POST KULLANIMI
POST yöntemiyle gönderilen HTML form verilerine ulaşmak için $_POST dizisi kullanılır.
Örneğin aşağıdaki formu inceleyelim:
<form method="post">
<input type="text" name="isim">
<button type="submit">Gönder</button>
</form>
Form gönderildiğinde PHP tarafında isim bilgisi şu şekilde alınabilir:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$isim = $_POST["isim"] ?? "";
if (is_string($isim)) {
echo htmlspecialchars($isim, ENT_QUOTES, "UTF-8");
}
}
?>
Bu örnekte formun POST yöntemiyle gönderilip gönderilmediği kontrol edilmiş ve gönderilen isim bilgisi alınmıştır.
Form verilerinin ayrıntılı olarak nasıl alındığını, farklı form elemanlarını ve uygulama örneklerini PHP ile Form Verilerini Almak dersimizde inceleyeceğiz.
6. HTML FORMLARINDA METHOD VE ACTION KULLANIMI
HTML formlarında verilerin hangi yöntemle ve hangi adrese gönderileceğini belirlemek için method ve action özellikleri kullanılır.
METHOD ÖZELLİĞİ
Method, form verilerinin hangi HTTP metoduyla gönderileceğini belirtir.
GET yöntemiyle gönderim:
<form action="arama.php" method="get">
<input type="text" name="kelime">
<button type="submit">Ara</button>
</form>
POST yöntemiyle gönderim:
<form action="kayit.php" method="post">
<input type="text" name="isim">
<button type="submit">Kaydet</button>
</form>
ACTION ÖZELLİĞİ
Action, form verilerinin gönderileceği adresi belirtir.
Örneğin aşağıdaki form gönderildiğinde veriler kayit.php dosyasına iletilir.
<form action="kayit.php" method="post">
Action özelliği boş bırakılırsa form genellikle bulunduğu sayfaya gönderilir.
<form action="" method="post">
Bu yöntem, formun ve PHP işlemlerinin aynı dosyada bulunması gereken basit uygulamalarda kullanılabilir.
7. PHP'DE İSTEK METODUNU KONTROL ETME
PHP'de bir isteğin GET veya POST yöntemiyle gönderildiğini öğrenmek için $_SERVER dizisindeki REQUEST_METHOD değeri kullanılabilir.
<?php
if ($_SERVER["REQUEST_METHOD"] == "GET") {
echo "GET isteği gönderildi.";
} elseif ($_SERVER["REQUEST_METHOD"] == "POST") {
echo "POST isteği gönderildi.";
}
?>
Bu kodda gelen HTTP isteğinin metodu kontrol edilerek uygun mesaj ekrana yazdırılır.
Not: Bir sayfayı tarayıcının adres çubuğundan normal şekilde açtığımızda genellikle GET isteği gerçekleşir.
8. GET VE POST METOTLARINDA GÜVENLİK
GET ve POST metotları arasında veri taşıma açısından farklılıklar bulunsa da güvenlik yalnızca kullanılan HTTP metoduna bağlı değildir.
Özellikle kullanıcıdan gelen bilgilerin doğrulanması ve güvenli şekilde işlenmesi gerekir.
POST KULLANMAK VERİLERİ ŞİFRELER Mİ?
Hayır. POST metodu verileri otomatik olarak şifrelemez.
POST ile gönderilen bilgiler URL'nin sorgu bölümünde görünmez ancak HTTP isteğinin gövdesinde bulunur.
Verilerin ağ üzerinden güvenli şekilde iletilmesi için HTTPS kullanılmalıdır.
KULLANICI VERİLERİNE NEDEN GÜVENMEMELİYİZ?
GET veya POST yöntemiyle gelen veriler kullanıcı tarafından değiştirilebilir.
Bu nedenle uygulamalarda aşağıdaki önlemler alınmalıdır:
- Gelen verilerin beklenen türde ve biçimde olup olmadığı kontrol edilmelidir.
- Zorunlu alanların boş bırakılıp bırakılmadığı denetlenmelidir.
- HTML içerisinde gösterilen kullanıcı verileri uygun şekilde dönüştürülmelidir.
- Veritabanı işlemlerinde PDO prepared statement kullanılmalıdır.
- Veri değiştiren formlarda CSRF saldırılarına karşı koruma uygulanmalıdır.
- Şifre gibi hassas bilgiler URL parametreleriyle gönderilmemelidir.
9. GET VE POST HANGİ DURUMLARDA KULLANILMALIDIR?
GET ve POST metotlarının seçimi, yapılacak işlemin amacına göre belirlenmelidir.
| İşlem |
Tercih Edilen Metot |
| Web sayfası görüntüleme |
GET |
| Ürün arama |
GET |
| Liste filtreleme |
GET |
| Sayfalama |
GET |
| Kullanıcı kayıt formu |
POST |
| Kullanıcı giriş formu |
POST |
| Veritabanına kayıt ekleme |
POST |
| Form üzerinden kayıt güncelleme |
POST |
| Dosya yükleme |
POST |
10. ÖĞRENCİLER İÇİN UYGULAMA SORULARI
Soru 1: GET ve POST metotlarının temel kullanım amaçlarını açıklayınız.
Soru 2: GET yöntemiyle gönderilen parametrelerin URL üzerinde nasıl gösterildiğini bir örnekle açıklayınız.
Soru 3: Bir kullanıcı kayıt formunda neden POST metodunun tercih edildiğini açıklayınız.
Soru 4: HTML formundaki method ve action özelliklerinin görevlerini açıklayınız.
Soru 5: PHP'de gelen isteğin GET veya POST olduğunu kontrol eden bir uygulama hazırlayınız.
11. SONUÇ
Bu dersimizde HTTP protokolünde kullanılan GET ve POST metotlarının ne olduğunu, nasıl çalıştığını ve aralarındaki farkları öğrendik.
GET metodu genellikle sunucudan bilgi istemek, arama yapmak ve filtreleme işlemlerini gerçekleştirmek için kullanılır.
POST metodu ise sunucuya veri göndererek kayıt oluşturma, güncelleme ve benzeri işlemleri gerçekleştirmek için tercih edilir.
Her iki metot da PHP ile web uygulamaları geliştirirken önemli bir yere sahiptir.
Bir sonraki dersimizde HTML formlarındaki textbox, radio button, checkbox ve select gibi elemanlardan gönderilen verilerin PHP ile nasıl alınacağını örnek uygulamalar üzerinden öğreneceğiz.