0Pricing
PHP Academy · Pelajaran

Teknik Validasi Input

Periksa bidang wajib, tipe, dan panjangnya sebelum memproses data.

Teknik Validasi Input adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Mengapa Memvalidasi Masukan?

Jangan pernah memercayai data dari pengguna. Validasi memastikan data memenuhi persyaratan Anda sebelum data tersebut diproses. Validasi mencegah:

  • Kesalahan basis data akibat tipe yang salah
  • Kesalahan logika bisnis akibat nilai yang tidak terduga
  • Kerentanan keamanan akibat masukan berbahaya

Pemeriksaan Bidang Wajib

Periksa bahwa bidang wajib tidak kosong setelah spasi kosong dihapus:

<?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
}

Validasi Tipe

Validasi bahwa nilai memiliki tipe yang diharapkan sebelum menggunakannya:

<?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';
}

Validasi Email

Validasi alamat email dengan filter FILTER_VALIDATE_EMAIL:

<?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';
    }
}

Validasi Panjang String

Tetapkan panjang string minimum dan maksimum:

<?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';
}

Validasi Daftar Putih

Validasi berdasarkan sekumpulan nilai yang diizinkan (daftar putih), bukan dengan mencoba memblokir nilai yang buruk:

<?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';
}

Validasi URL dan IP

Validasi URL dan alamat IP dengan filter bawaan:

<?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';
}

Validasi Pola dengan Regex

Gunakan preg_match() untuk validasi format khusus:

<?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';
}

Validasi Tanggal

Validasi bahwa sebuah string merepresentasikan tanggal kalender yang benar:

<?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)

Validasi Unggahan Berkas

Validasi berkas yang diunggah berdasarkan tipe, ukuran, dan kode kesalahan:

<?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';
    }
}

Menampilkan Kesalahan Validasi

Tampilkan kesalahan secara langsung di sebelah bidang formulir dan pertahankan nilai yang dimasukkan pengguna:

<?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>

Pemeriksaan Singkat

Apa yang dimaksud dengan pendekatan daftar putih dalam validasi?

Rangkuman: Validasi Masukan

Praktik terbaik validasi:

  • Periksa bidang wajib setelah trim()
  • Gunakan filter_var() untuk validasi tipe dan format
  • Gunakan daftar putih untuk nilai yang diizinkan dengan in_array()
  • Gunakan preg_match() untuk pola khusus
  • Validasi unggahan berkas: kode kesalahan, ukuran, tipe MIME
  • Pertahankan masukan pengguna saat menampilkan ulang formulir dengan kesalahan

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Teknik Validasi Input” gratis?

Ya — teks lengkap “Teknik Validasi Input” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Teknik Validasi Input”?

Periksa bidang wajib, tipe, dan panjangnya sebelum memproses data. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Teknik Validasi Input” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. GET vs POST: Kapan Menggunakan Masing-Masing
  2. Membaca Data Formulir dengan Superglobal
  3. Teknik Validasi Input
  4. Membersihkan Input Pengguna
← Kembali ke PHP Academy