PHP - Form Email/URL Validation

Halo teman-teman pengembang PHP yang bersemangat! Hari ini, kita akan mendalam ke dunia yang menarik validasi formulir, khususnya fokus pada validasi email dan URL. Sebagai seseorang yang telah mengajar PHP selama lebih dari satu dekade, saya sungguh-sungguh tidak bisa menekankan seberapa penting topik ini. Percayalah, nanti Anda akan berterima kasih kepada saya saat Anda membangun aplikasi web yang kuat!

PHP - Form Email/URL

Mengapa Validasi Email dan URL?

Sebelum kita masuk ke hal yang teknis, mari bicarakan mengapa kita perlu validasi email dan URL pertama kali. Bayangkan Anda sedang membuat formulir kontak untuk website pelanggan Anda. Anda ingin memastikan bahwa saat pengguna mengirimkan alamat email mereka, mereka benar-benar memberikan Anda alamat yang valid. Kalau tidak, Anda mungkin akan akhirnya memiliki database penuh dengan entri seperti "[email protected]" atau "notanemail". Tidak begitu bermanfaat, kan?

Hal yang sama berlaku untuk URL. Jika Anda meminta pengguna untuk memasukkan alamat website mereka, Anda ingin memastikan itu dalam format yang benar. Kalau tidak, Anda mungkin akan mencoba mengalihkan pengguna Anda ke "www.ilovepizza" (yang, sayangnya, bukan website nyata... belum).

Validasi dengan Regex

Senjata pertama kita dalam perang melawan input yang tidak valid adalah Regular Expression, atau Regex untuk pendek. Jangan khawatir jika itu terdengar menakutkan - saya berjanji itu tidak sebanyak yang Anda pikirkan!

Validasi Email dengan Regex

mari mulai dengan contoh sederhana validasi email menggunakan regex:

<?php
$email = "[email protected]";
$pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';

if (preg_match($pattern, $email)) {
echo "Valid email address!";
} else {
echo "Invalid email address!";
}
?>

mariuraikan ini:

  1. Kita mulai dengan mendefinisikan email kita dan pola regex.
  2. Fungsi preg_match() memeriksa apakah email kita cocok dengan pola.
  3. Jika cocok, kita anggapnya valid; jika tidak, itu invalid.

Tapi apa arti pola itu? mariuraikan ini:

  • ^ : Awal string
  • [a-zA-Z0-9._%+-]+ : Satu atau lebih huruf, angka, atau karakter khusus tertentu
  • @ : Simbol "@" literal
  • [a-zA-Z0-9.-]+ : Satu atau lebih huruf, angka, titik, atau tanda hubung
  • \. : Titik literal
  • [a-zA-Z]{2,} : Dua atau lebih huruf
  • $ : Akhir string

Validasi URL dengan Regex

Sekarang, mari kita selesaikan validasi URL:

<?php
$url = "https://www.example.com";
$pattern = '/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/';

if (preg_match($pattern, $url)) {
echo "Valid URL!";
} else {
echo "Invalid URL!";
}
?>

Pola ini sedikit lebih kompleks, tetapi prinsipnya sama. Itu memeriksa komponen tipikal URL: protokol (opsional), nama domain, top-level domain, dan path (opsional).

Menggunakan fungsi filter_var()

Meskipun regex kuat, PHP menyediakan fungsi built-in yang dapat membuat kehidupan kita lebih mudah: filter_var(). Fungsi ini secara khusus dirancang untuk validasi dan sanitasi data.

Validasi Email dengan filter_var()

mari lihat bagaimana kita dapat menggunakan filter_var() untuk validasi alamat email:

<?php
$email = "[email protected]";

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Valid email address!";
} else {
echo "Invalid email address!";
}
?>

Apakah itu menakjubkan? Tidak ada pola regex yang kompleks untuk diingat - PHP melakukan pekerjaan berat bagi kita!

Validasi URL dengan filter_var()

Secara serupa, kita dapat validasi URL:

<?php
$url = "https://www.example.com";

if (filter_var($url, FILTER_VALIDATE_URL)) {
echo "Valid URL!";
} else {
echo "Invalid URL!";
}
?>

Mengkomparasi Metode

Sekarang kita telah melihat kedua metode, mari kita bandingkan mereka:

Metode Pros Cons
Regex Sangat dapat disesuaikan Bisa sulit untuk ditulis dan dipelihara
Kuat dalam pencocokan pola Mungkin terlalu berlebihan untuk validasi sederhana
filter_var() Mudah digunakan Kurang fleksibel daripada regex
Fungsi PHP built-in Terbatas pada jenis validasi yang telah ditentukan
Biasanya lebih cepat daripada regex

Aplikasi Praktis

mari gabungkan semua itu dengan formulir sederhana yang validasi email dan URL:

<!DOCTYPE html>
<html>
<body>

<h2>Contact Form</h2>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
E-mail: <input type="text" name="email"><br>
Website: <input type="text" name="website"><br>
<input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = $_POST['email'];
$website = $_POST['website'];

if (filter_var($email, FILTER_VALIDATE_EMAIL) && filter_var($website, FILTER_VALIDATE_URL)) {
echo "Both email and website are valid!";
} else {
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Invalid email address.<br>";
}
if (!filter_var($website, FILTER_VALIDATE_URL)) {
echo "Invalid URL.";
}
}
}
?>

</body>
</html>

Skrip ini membuat formulir HTML sederhana dan kemudian validasi email dan URL yang dikirimkan menggunakan filter_var(). Jika salah satu input invalid, itu memberikan umpan balik khusus kepada pengguna.

Kesimpulan

Dan begitulah, teman-teman! Kita telah menutup dua metode kuat untuk validasi email dan URL dalam PHP. Ingat, validasi sangat penting untuk menjaga integritas data dan meningkatkan pengalaman pengguna. Apakah Anda memilih fleksibilitas regex atau kecepatan filter_var(), Anda sekarang dilengkapi untuk menangani input pengguna seperti seorang pro!

Sebagai biasa, latihan membuat sempurna. Cobalah membuat formulir Anda sendiri dan eksperimen dengan teknik validasi yang berbeda. Dan ingat, di dunia pengembangan web, ada selalu hal baru untuk belajar. Tetap mengoding, tetap menjelajah, dan terutama, tetap bersenang-senang!

Credits: Image by storyset