Cara Membandingkan Dua String di PHP

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-alih hash_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).

Baca Juga

Ali Akbar

Software Developer yang fokus mengembangkan aplikasi berbasis Web dan Desktop. Senang mempelajari teknologi baru terutama di bidang web design dan web development.

View all posts by Ali Akbar →

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *