Pengecaman dan validasi emel serta URL dalam PHP
Hai sana, para pengembang PHP yang sedang belajar! Hari ini, kita akan masuk ke dunia yang menarik pengesahan formulir, khususnya fokuskan pada pengesahan emel dan URL. Sebagai seseorang yang telah mengajar PHP lebih dari satu dekade, saya tidak bisa menekankan cukup betapa pentingnya topik ini. Percayalah, nanti Anda akan berterima kasih kepada saya saat Anda membuat aplikasi web yang kuat!
Mengapa Mengesahkan Emel dan URL?
Sebelum kita masuk ke hal-hal yang mendalam, mari bicarakan mengapa kita perlu mengesahkan emel dan URL pertama-tama. Bayangkan Anda sedang membuat formulir kontak untuk website pelanggan Anda. Anda ingin memastikan bahwa saat pengguna mengirimkan alamat emel mereka, mereka memberikan Anda yang valid. Jika tidak, Anda mungkin akhirnya memiliki basis data penuh dengan "[email protected]" atau "notanemail". Tidak terlalu berguna, kan?
Hal yang sama berlaku untuk URL. Jika Anda meminta pengguna mengisi alamat website mereka, Anda ingin memastikan bahwa itu dalam format yang benar. Jika tidak, Anda mungkin akhirnya mencoba mengalihkan pengguna Anda ke "www.ilovepizza" (yang, sayangnya, bukanlah website yang sebenarnya... belum).
Pengesahan 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 sekeras yang tampak!
Pengesahan Emel dengan Regex
Mari kita mulai dengan contoh sederhana pengesahan emel 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 "Alamat emel valid!";
} else {
echo "Alamat emel tidak valid!";
}
?>
mari kitauraikan ini:
- Kita mulai dengan menentukan emel kita dan pola regex.
- Fungsi
preg_match()
memeriksa apakah emel kita cocok dengan pola. - Jika cocok, kita anggapnya valid; jika tidak, itu invalid.
Tetapi apa arti pola itu? Mari kitauraikan:
-
^
: 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 minus -
\.
: Titik literal -
[a-zA-Z]{2,}
: Dua atau lebih huruf -
$
: Akhir string
Pengesahan URL dengan Regex
Sekarang, mari kita menangani pengesahan URL:
<?php
$url = "https://www.example.com";
$pattern = '/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/';
if (preg_match($pattern, $url)) {
echo "URL valid!";
} else {
echo "URL tidak valid!";
}
?>
Pola ini sedikit lebih kompleks, tetapi prinsipnya sama. Itu memeriksa komponen tipikal URL: protokol (opsional), nama domain, domain tingkat tinggi, dan path (opsional).
Menggunakan fungsi filter_var()
Meskipun regex kuat, PHP menyediakan fungsi built-in yang dapat membuat hidup kita lebih mudah: filter_var()
. Fungsi ini khusus dirancang untuk mengesahkan dan mensanitasi data.
Pengesahan Emel dengan filter_var()
Berikut cara kita dapat menggunakan filter_var()
untuk mengesahkan alamat emel:
<?php
$email = "[email protected]";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Alamat emel valid!";
} else {
echo "Alamat emel tidak valid!";
}
?>
Apakah itu tidak menarik? Tidak ada pola regex kompleks yang perlu diingat - PHP melakukan pekerjaan berat bagi kita!
Pengesahan URL dengan filter_var()
Secara serupa, kita dapat mengesahkan URL:
<?php
$url = "https://www.example.com";
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo "URL valid!";
} else {
echo "URL tidak valid!";
}
?>
Membandingkan Metode
Sekarang kita telah melihat kedua metode, mari kita bandingkan mereka:
Metode | Keuntungan | Kekurangan |
---|---|---|
Regex | Sangat dapat disesuaikan | Bisa sulit untuk ditulis dan dipelihara |
Kuat dalam pemadanan pola | Mungkin terlalu keras 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 kita gabungkan semuanya dengan formulir sederhana yang mengesahkan emel dan URL:
<!DOCTYPE html>
<html>
<body>
<h2>Formulir Kontak</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 "Alamat emel tidak valid.<br>";
}
if (!filter_var($website, FILTER_VALIDATE_URL)) {
echo "URL tidak valid.";
}
}
}
?>
</body>
</html>
Skrip ini membuat formulir HTML sederhana dan kemudian mengesahkan emel dan URL yang dikirimkan menggunakan filter_var()
. Jika salah satu input invalid, itu memberikan umpan balik khusus kepada pengguna.
Kesimpulan
Dan itu adalah dia, teman-teman! Kita telah meliputi dua metode kuat untuk mengesahkan emel dan URL dalam PHP. Ingat, pengesahan penting untuk menjaga integritas data dan meningkatkan pengalaman pengguna. Apakah Anda memilih fleksibilitas regex atau ke simpelannya 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 yang baru untuk belajar. Terus kode, terus eksplorasi, dan terutama, terus bersenang-senang!
Credits: Image by storyset