Girdi Doğrulama Teknikleri
İşlemeden önce zorunlu alanları, türleri ve uzunlukları kontrol edin.
Girdi Doğrulama Teknikleri, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.
Girdi Neden Doğrulanır?
Kullanıcılardan gelen verilere asla güvenmeyin. Doğrulama, verileri işlemeden önce gereksinimlerinizi karşılamalarını sağlar. Şunları önler:
- Yanlış türlerden kaynaklanan veritabanı hataları
- Beklenmeyen değerlerden kaynaklanan iş mantığı hataları
- Kötü amaçlı girdilerden kaynaklanan güvenlik açıkları
Zorunlu Alan Kontrolü
Boşluk karakterlerini kırptıktan sonra zorunlu alanların boş olmadığını kontrol edin:
<?php
$errors = [];
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
if (empty($name)) {
$errors['name'] = 'Name is required';
}
if (empty($email)) {
$errors['email'] = 'Email is required';
}
if (!empty($errors)) {
// show errors
}Tür Doğrulaması
Değerleri kullanmadan önce beklenen türde olduklarını doğrulayın:
<?php
$age = $_POST['age'] ?? '';
// Method 1: filter_var
$validAge = filter_var($age, FILTER_VALIDATE_INT, [
'options' => ['min_range' => 1, 'max_range' => 120]
]);
if ($validAge === false) {
$errors[] = 'Age must be a number between 1 and 120';
}E-posta Doğrulaması
E-posta adreslerini FILTER_VALIDATE_EMAIL filtresiyle doğrulayın:
<?php
$email = trim($_POST['email'] ?? '');
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = 'Invalid email address';
}
// Also check domain has MX record for extra validation
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
[$user, $domain] = explode('@', $email);
if (!checkdnsrr($domain, 'MX')) {
$errors[] = 'Email domain not found';
}
}Dize Uzunluğu Doğrulaması
Dizeler için minimum ve maksimum uzunlukları zorunlu kılın:
<?php
$username = trim($_POST['username'] ?? '');
$len = mb_strlen($username);
if ($len < 3) {
$errors[] = 'Username must be at least 3 characters';
}
if ($len > 30) {
$errors[] = 'Username must be at most 30 characters';
}İzin Listesiyle Doğrulama
Kötü değerleri engellemeye çalışmak yerine, izin verilen değer kümesine (izin listesine) göre doğrulayın:
<?php
$allowedRoles = ['admin', 'editor', 'viewer'];
$allowedSorts = ['name', 'date', 'price'];
$role = $_POST['role'] ?? '';
$sort = $_GET['sort'] ?? 'name';
if (!in_array($role, $allowedRoles, true)) {
$errors[] = 'Invalid role selected';
}
// Default to 'name' if sort value invalid
if (!in_array($sort, $allowedSorts, true)) {
$sort = 'name';
}URL ve IP Doğrulaması
URL'leri ve IP adreslerini yerleşik filtrelerle doğrulayın:
<?php
$url = $_POST['website'] ?? '';
$ip = $_POST['ip'] ?? '';
if (!filter_var($url, FILTER_VALIDATE_URL)) {
$errors[] = 'Invalid URL';
}
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$errors[] = 'Invalid IPv4 address';
}Düzenli İfadeyle Örüntü Doğrulaması
Özel biçim doğrulaması için preg_match() kullanın:
<?php
$phone = preg_replace('/[^0-9+]/', '', $_POST['phone'] ?? '');
// Validate format: +1234567890
if (!preg_match('/^\+?[0-9]{7,15}$/', $phone)) {
$errors[] = 'Invalid phone number';
}
// Validate date format YYYY-MM-DD
$date = $_POST['date'] ?? '';
if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $date)) {
$errors[] = 'Date must be in YYYY-MM-DD format';
}Tarih Doğrulaması
Bir dizenin geçerli bir takvim tarihini temsil ettiğini doğrulayın:
<?php
function isValidDate(string $date, string $format = 'Y-m-d'): bool {
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) === $date;
}
var_dump(isValidDate('2024-02-29')); // true (2024 is leap year)
var_dump(isValidDate('2023-02-29')); // false (not a leap year)
var_dump(isValidDate('2024-13-01')); // false (no month 13)Dosya Yükleme Doğrulaması
Yüklenen dosyaları türüne, boyutuna ve hata koduna göre doğrulayın:
<?php
$file = $_FILES['photo'] ?? null;
if ($file) {
if ($file['error'] !== UPLOAD_ERR_OK) {
$errors[] = 'Upload failed with error: ' . $file['error'];
} elseif ($file['size'] > 2 * 1024 * 1024) {
$errors[] = 'File exceeds 2MB limit';
} elseif (!in_array(mime_content_type($file['tmp_name']), ['image/jpeg', 'image/png'])) {
$errors[] = 'Only JPEG and PNG files allowed';
}
}Doğrulama Hatalarını Görüntüleme
Hataları form alanlarının yanında satır içi gösterin ve kullanıcının girdiği değerleri koruyun:
<?php
// Preserve entered values:
$name = htmlspecialchars($_POST['name'] ?? '');
?>
<form method="POST">
<input name="name" value="<?= $name ?>">
<?php if (isset($errors['name'])): ?>
<p class="error"><?= htmlspecialchars($errors['name']) ?></p>
<?php endif; ?>
<button type="submit">Submit</button>
</form>Hızlı Kontrol
Doğrulamada izin listesi yaklaşımı nedir?
Özet: Girdi Doğrulaması
Doğrulama için en iyi uygulamalar:
- trim() sonrasında zorunlu alanları kontrol edin
- Tür ve biçim doğrulaması için
filter_var()kullanın in_array()ile izin verilen değerleri izin listesine alın- Özel örüntüler için
preg_match()kullanın - Dosya yüklemelerini doğrulayın: hata kodu, boyut, MIME türü
- Formları hatalarla yeniden görüntülerken kullanıcı girdisini koruyun
Sıkça Sorulan Sorular
“Girdi Doğrulama Teknikleri” dersi ücretsiz mi?
Evet — “Girdi Doğrulama Teknikleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.
“Girdi Doğrulama Teknikleri” dersinde ne öğreneceğim?
İşlemeden önce zorunlu alanları, türleri ve uzunlukları kontrol edin. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
PHP Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Girdi Doğrulama Teknikleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- GET ve POST: Hangisi Ne Zaman Kullanılmalı
- Süper Küresellerle Form Verilerini Okuma
- Girdi Doğrulama Teknikleri
- Kullanıcı Girdisini Temizleme