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!
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:
-
trim()
menghapuskan ruang kosong dari kedua-dua sisi string -
stripslashes()
menghapuskan backslash -
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:
- Menentukan variabel dan fungsi
- Menyetahkan borang jika dihantar
- Menunjukkan borang dengan mesej kesalahan jika ada
- 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