PHP - Penyetahan Borang

Hai sana, bakal pembangun PHP! Hari ini, kita akan melantikan masuk ke dunia yang menarik penyetahan borang. Seperti guru komputer tetangga yang baik, saya di sini untuk menghidangkan anda melalui aspek penting ini dalam pembangunan web. Percayalah, menguasai penyetahan borang adalah seperti belajar menunggang basikal - sekali anda mengerti, anda tidak akan lupa lagi!

PHP - Form Validation

Mengapa Penyetahan Borang Penting

Sebelum kita masuk ke kod, mari bicarakan mengapa penyetahan borang sangat penting. Bayangkan anda menjalankan perkhidmatan penghantaran pizza dalam talian. Jika seseorang memesan 'ABC' pizza atau memasukkan '-5' sebagai nombor telefon mereka, anda akan berada dalam masalah yang besar! Itulah di mana penyetahan borang datang untuk menyelamatkan, memastikan bahawa data yang anda terima adalah betul dan boleh digunakan.

Penyetahan Klien vs. Penyetahan Pelayan

Dalam dunia penyetahan borang, kita ada dua pemain utama: penyetahan klien dan penyetahan pelayan. Hari ini, kita akan fokus pada penyetahan pelayan menggunakan PHP, tetapi mari sentuh ringkas tentang kedua-duanya:

Penyetahan Klien

Penyetahan klien berlaku dalam pelayar pengguna sebelum data dihantar ke pelayan. Ia pantas dan memberikan maklum balas segera, tetapi ia boleh dilalui oleh pengguna yang berpengetahuan.

Penyetahan Pelayan

Penyetahan pelayan berlaku di pelayan selepas borang dihantar. Ia lebih selamat dan boleh dipercayai, kerana pengguna tidak boleh merosakkannya. Ini adalah apa yang kita akan jelajahi secara mendalam hari ini.

Membuat Penyetahan Borang PHP

Mari kita mula dengan borang mudah dan membina penyetahan langkah demi langkah. Ini adalah borang HTML asas kami:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Nama: <input type="text" name="name"><br>
Umur: <input type="text" name="age"><br>
<input type="submit" name="submit" value="Hantar">
</form>

Sekarang, mari kita tambah sedikit sihir PHP untuk menyetahkan borang ini!

Fungsi Penyetahan

Sebelum kita masuk ke penyetahan khusus, mari buat beberapa fungsi bantuan:

function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

Fungsi test_input() ini melakukan tiga hal yang penting:

  1. trim() menghapuskan ruang kosong dari kedua-dua sisi string
  2. stripslashes() menghapuskan backslash
  3. htmlspecialchars() mengubah karakter khas kepada entiti HTML

Langkah ini membantu mencegah penembusan kod jahat dan memastikan data kami bersih.

Borang Kosong

Mari kita mula dengan penyetahan asas: adakah borang kosong? Berikut adalah cara kita boleh melakukan itu:

<?php
$name = $age = "";
$nameErr = $ageErr = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Nama diperlukan";
} else {
$name = test_input($_POST["name"]);
}

if (empty($_POST["age"])) {
$ageErr = "Umur diperlukan";
} else {
$age = test_input($_POST["age"]);
}
}
?>

Dalam kod ini:

  • Kita inisialisasi variabel untuk menyimpan data borang dan mesej kesalahan.
  • Kita periksa jika borang telah dihantar menggunakan POST.
  • Untuk setiap bidang, kita periksa jika ia kosong. Jika ya, kita set mesej kesalahan. Jika tidak, kita bersihkan input menggunakan fungsi test_input().

Bidang Umur Bukan Nombor

Sekarang, mari tambah penyetahan khusus untuk bidang umur untuk memastikan ia adalah nombor:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
// ... penyetahan sebelumnya ...

if (empty($_POST["age"])) {
$ageErr = "Umur diperlukan";
} else {
$age = test_input($_POST["age"]);
if (!is_numeric($age)) {
$ageErr = "Umur mesti nombor";
}
}
}

Di sini, kita menambah penyetahan tambahan menggunakan is_numeric() untuk memastikan umur adalah sebenarnya nombor. Jika bukan, kita set mesej kesalahan yang sesuai.

Menyatukan Semua

Sekarang, mari lihat skrip penyetahan borang lengkap kami:

<?php
$name = $age = "";
$nameErr = $ageErr = "";

function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Nama diperlukan";
} else {
$name = test_input($_POST["name"]);
}

if (empty($_POST["age"])) {
$ageErr = "Umur diperlukan";
} else {
$age = test_input($_POST["age"]);
if (!is_numeric($age)) {
$ageErr = "Umur mesti nombor";
}
}
}
?>

<h2>Contoh Penyetahan Borang PHP</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Nama: <input type="text" name="name">
<span class="error"><?php echo $nameErr;?></span>
<br><br>
Umur: <input type="text" name="age">
<span class="error"><?php echo $ageErr;?></span>
<br><br>
<input type="submit" name="submit" value="Hantar">
</form>

<?php
echo "<h2>Input Anda:</h2>";
echo $name;
echo "<br>";
echo $age;
?>

Skrip ini:

  1. Menentukan variabel dan fungsi
  2. Menyetahkan borang jika dihantar
  3. Menunjukkan borang dengan mesej kesalahan jika ada
  4. Menunjukkan input yang disetujui

Jadual Metode Penyetahan

Berikut adalah jadual ringkasan metode penyetahan umum dalam PHP:

Metode Keterangan Contoh
empty() Periksa jika variabel kosong if (empty($var))
isset() Periksa jika variabel ditetapkan dan bukan NULL if (isset($var))
is_numeric() Periksa jika variabel adalah nombor atau string numerik if (is_numeric($var))
strlen() Dapatkan panjang string if (strlen($var) > 5)
preg_match() Lakukan padanan ekspresi biasa if (preg_match("/pattern/", $var))
filter_var() Filter variabel dengan penapis yang ditentukan if (filter_var($var, FILTER_VALIDATE_EMAIL))

Ingat, penyetahan borang adalah tentang memastikan integriti data dan meningkatkan pengalaman pengguna. Ia seperti menjadi penjaga di kelab - anda mahu membolehkan data yang baik masuk dan menjaga data yang buruk keluar!

Sementara itu, saya harap panduan ini telah memberikan anda dasar yang kuat dalam penyetahan borang PHP. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencuba bentuk borang dan teknik penyetahan yang berbeza. Dalam waktu yang singkat, anda akan menjadi ahli dalam menyetahkan borang!

Selamat berkoding, dan mungkin borang anda sentiasa sah!

Credits: Image by storyset