𝟭𝟬 𝗕𝘂𝗴 𝗣𝗛𝗣 𝗬𝗮𝗻𝗴 𝗠𝗲𝗺𝗯𝘂𝗮𝘁 𝗣𝗿𝗼𝘆𝗲𝗸 𝗡𝘆𝗮𝘁𝗮 𝗚𝗮𝗴𝗮𝗹
Kode berjalan di komputer Anda. Anda melakukan push ke server. Semuanya rusak. Tidak ada error di dalam log. Anda hanya melihat output yang salah.
Bug ini tidak berasal dari buku teks. Bug ini berasal dari sistem login, toko, dan API yang nyata. Mereka terlihat baik-baik saja saat code review, tetapi gagal di lingkungan produksi.
Berikut adalah bug #11 hingga #20 dan cara memperbaikinya.
• Infinite Loops Lupa menambah nilai counter akan mengunci proses PHP. Ini dapat membuat seluruh server Anda crash. Perbaikan: Selalu pastikan counter loop Anda bertambah.
• Masalah Case-Sensitivity PHP menganggap "Admin" dan "admin" sebagai string yang berbeda. Ini merusak kontrol akses. Perbaikan: Gunakan strtolower() sebelum Anda membandingkan string.
• Matematika dan Truncation Menggunakan (int) pada angka desimal tidak akan membulatkannya. Ia hanya memotongnya. Ini menyebabkan kesalahan finansial dalam penagihan. Perbaikan: Gunakan round() atau number_format().
• Kesalahan JSON json_decode mengembalikan sebuah objek secara default. Jika Anda mencoba menggunakannya seperti array, skrip akan gagal. Perbaikan: Masukkan true sebagai argumen kedua untuk mendapatkan array.
• Risiko Keamanan XSS Mencetak input pengguna secara langsung memungkinkan penyerang untuk menyuntikkan skrip. Perbaikan: Selalu gunakan htmlspecialchars().
• Kegagalan Path Path relatif berfungsi di mesin lokal tetapi gagal di server live. Perbaikan: Gunakan konstanta DIR untuk path absolut.
• Data Duplikat Pengguna sering melakukan klik ganda pada tombol submit. Ini menciptakan entri database duplikat. Perbaikan: Periksa apakah record sudah ada terlebih dahulu dan gunakan constraint UNIQUE di database Anda.
• Menggabungkan Array array_merge() mengatur ulang kunci numerik menjadi nol. Ini merusak struktur data Anda. Perbaikan: Gunakan operator + atau array_replace() untuk mempertahankan kunci Anda.
• Error yang Tidak Terlihat Mematikan error di produksi bagus untuk keamanan. Namun, ini buruk untuk debugging jika Anda tidak mencatatnya ke log. Perbaikan: Atur log_errors ke 1 dan tentukan path error_log.
• Referensi Loop Loop foreach memodifikasi salinan data, bukan array aslinya. Perbaikan: Gunakan simbol & untuk membuat referensi, tetapi selalu unset variabel tersebut setelah loop selesai.
Sebagian besar bug ini tidak memunculkan error. PHP tetap berjalan, tetapi menghasilkan hasil yang salah. Hal ini membuatnya berbahaya.
Menulis kode itu mudah. Menulis kode yang siap produksi memerlukan pemahaman tentang bagaimana sesuatu bisa gagal.
Baca panduan lengkapnya di sini: https://dev.to/bikkisingh/10-php-bugs-that-break-real-projects-and-how-to-fix-them-part-2-7hm