28 Eylül 2026 - 11:38
PHP'de filter_input Neden NULL Döndürür? Görseli
PHP

PHP'de filter_input Neden NULL Döndürür?

Yorumlar

filter_input() ile okunan bir alanın NULL dönmesi yalnızca “form boş geldi” anlamına gelmez. Alan istekte bulunmayabilir, yanlış giriş kaynağı seçilmiş olabilir veya doğrulama filtresi başarısız olabilir. Önce bu durumları birbirinden ayırmak gerekir.

İstek yöntemini ve alan adını doğrulayın

PHP
var_dump($_SERVER['REQUEST_METHOD']);
var_dump(array_keys($_GET));
var_dump(array_keys($_POST));

Form method="post" kullanıyorsa INPUT_GET ile veri beklemeyin. Alanın HTML içindeki name değeri de PHP tarafındaki adla birebir eşleşmelidir.

Varlık ile geçerliliği ayrı test edin

PHP
$raw = filter_input(INPUT_POST, 'age', FILTER_UNSAFE_RAW);

if ($raw === null) {
    echo 'Alan istekte yok';
} elseif ($raw === '') {
    echo 'Alan gönderildi fakat boş';
}

Ardından doğrulama uygulayın:

PHP
$age = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT, [
    'options' => ['min_range' => 18, 'max_range' => 120],
]);

if ($age === false) {
    echo 'Değer var fakat geçerli bir yaş değil';
}

Sıkı karşılaştırma önemlidir. 0, boş değer ve false gevşek karşılaştırmada birbirine karışabilir.

filter_input ile $_POST neden farklı görünebilir?

PHP kılavuzuna göre filter_input(), süper globalin kod tarafından değiştirilmiş hâlini değil, SAPI tarafından alınan özgün dış girdiyi okur. Uygulama daha önce $_POST['age'] değerini değiştirdiyse iki sonuç farklı olabilir. Değiştirilmiş değeri filtrelemek için:

PHP
$age = filter_var($_POST['age'] ?? null, FILTER_VALIDATE_INT);

JSON gövdesi filter_input ile okunmaz

Content-Type: application/json isteklerinde veri klasik form alanı değildir. Ham gövdeyi okuyup JSON olarak çözün:

PHP
$body = file_get_contents('php://input');
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
$email = filter_var($data['email'] ?? null, FILTER_VALIDATE_EMAIL);

Güvenli akış; önce girişin hangi kanaldan geldiğini belirlemek, alanın varlığını kontrol etmek, sonra beklenen veri türüne uygun doğrulama uygulamaktır. Filtreleme çıktısını veritabanına veya iş kuralına geçmeden önce açık biçimde ele alın.

Başvuru: PHP filter_input kılavuzu.

Benzer Yazılar

Yorumlar ()

Henüz yorum yok. İlk yorum yapan sen ol!

Yorum Yap