Membandingkan dua teks tampak mudah, tetapi menyimpan banyak jebakan: apakah “Admin” sama dengan “admin”? Apakah spasi tersembunyi membuat dua teks yang terlihat sama menjadi berbeda? Artikel ini membahas cara membandingkan string di PHP dengan tepat.
Perbandingan Persis dengan ===
<?php $a = "halo"; $b = "halo"; var_dump($a === $b); // true ?>
Operator === membandingkan nilai sekaligus tipenya, dan merupakan cara paling aman untuk mengecek dua string identik.
Contoh Kasus: Verifikasi Konfirmasi Kata Sandi
<?php
$password = trim($_POST["password"]);
$konfirmasi = trim($_POST["konfirmasi"]);
if ($password === $konfirmasi) {
echo "Kata sandi cocok";
} else {
echo "Kata sandi tidak sama";
}
?>
Perbandingan Tanpa Peduli Huruf Besar/Kecil
Untuk membandingkan seperti “Admin” dan “admin” sebagai sama, gunakan strcasecmp() yang mengembalikan 0 bila sama:
<?php
if (strcasecmp("Admin", "admin") === 0) {
echo "Dianggap sama";
}
?>
Peringatan Keamanan: Membandingkan Token
Saat membandingkan data sensitif seperti token atau hash, gunakan hash_equals() yang tahan terhadap serangan berbasis waktu (timing attack):
<?php
if (hash_equals($token_asli, $token_dikirim)) {
echo "Token valid";
}
?>
Kesalahan Umum
- Memakai
==alih-alih===, sehingga"0"dan""bisa berperilaku tak terduga. - Lupa
trim()sehingga spasi tersembunyi membuat perbandingan gagal. - Membandingkan kata sandi/token dengan
===biasa alih-alihhash_equals().
Kesimpulan
Gunakan === untuk perbandingan string yang aman, strcasecmp() bila ingin mengabaikan besar-kecil huruf, dan hash_equals() khusus untuk data sensitif. Selalu trim() input agar spasi tak terlihat tidak merusak hasil.
Referensi: untuk penjelasan lebih mendalam, kunjungi dokumentasi resmi PHP (php.net).

