𝗧𝗼𝗽 𝟭𝟬 𝗣𝗛𝗣 𝗕𝘂𝗴𝘀 𝗘𝘃𝗲𝗿𝘆 𝗕𝗲𝗴𝗶𝗻𝗻𝗲𝗿 𝗠𝗮𝗸𝗲𝘀 (Yeni Başlayanların Yaptığı En Yaygın 10 PHP Hatası)
Kod yazarsınız. Sayfayı yenilersiniz. Karşınızda boş, beyaz bir ekran görürsünüz.
Bu durum, PHP'nin varsayılan olarak hataları sessizce geçiştirmesinden kaynaklanır. Geliştirme aşamasında hataları göstermeye zorlamalısınız.
Dosyalarınızın en üstüne şu satırları ekleyin:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Bunu canlı ortamda (production) kullanmayın. Bunun yerine dosya günlüklerini (logs) kullanın.
İşte 10 yaygın hata ve bunları düzeltme yolları:
Eksik Noktalı Virgüller Bir noktalı virgülü unutursanız PHP çalışmayı durdurur. Bu genellikle sessiz bir çöküşe neden olur. Çözüm: Her ifadenin noktalı virgül ile bittiğinden emin olun.
Zayıf Karşılaştırma (== vs ===) Çift eşittir işareti tip dönüşümü (type coercion) yapar. Bu da mantık hatalarına yol açar. Çözüm: Üçlü eşittir (===) kullanın. Bu, hem değeri hem de tipi kontrol eder.
Tanımlanmamış Değişkenler Bir değişkeni atama yapmadan kullanmak mantığınızı bozar. Çözüm: Null birleştirme operatörünü (null coalescing operator) kullanın. Örnek:
$name = $_GET['name'] ?? 'Guest';Global Değişken Kapsamı Fonksiyonlar, kendi dışlarındaki değişkenleri göremezler. Çözüm: Değişkenleri fonksiyonlara parametre olarak geçirin.
SQL Injection Kullanıcı girdisiyle sorgu oluşturmak, hackerların veri çalmasına olanak tanır. Çözüm: Yer tutucular (?) ile birlikte prepared statements kullanın.
Cross-Site Scripting (XSS) Kullanıcı girdisini doğrudan yazdırmak, kötü amaçlı betiklerin tarayıcılarda çalışmasına neden olur. Çözüm: Çıktıyı
htmlspecialchars()içine alın.Başlıklar Çoktan Gönderildi (Headers Already Sent) Tarayıcıya halihazırda metin gönderdiyseniz kullanıcıyı yönlendiremezsiniz. Tek bir boşluk bile bu hataya neden olur. Çözüm:
header()çağrılarını en başa koyun. Bir yönlendirmeden sonra her zamanexit()kullanın.Tanımlanmamış Dizi Anahtarları Mevcut olmayan bir form anahtarına erişmek uyarılara (warnings) neden olur. Çözüm: Tüm
$_POSTve$_GETverileri için null birleştirme operatörünü kullanın.Include vs Require
includebir dosya eksik olduğunda sadece bir uyarı gösterir. Betik çalışmaya devam eder ve daha sonra çöker. Çözüm: Veritabanı bağlantıları gibi kritik dosyalar içinrequire_oncekullanın.Kontrol Edilmemiş Dönüş Değerleri Birçok PHP fonksiyonu başarısızlık durumunda
falsedöndürür. Eğer bu sonucu hemen kullanırsanız, daha fazla hata alırsınız. Çözüm: Kullanmadan önce sonucunfalseolup olmadığını kontrol edin.
Başarı için özet:
- Geliştirme aşamasında hata raporlamayı açın.
- Tüm karşılaştırmalar için
===kullanın. - Tüm kullanıcı girdilerini temizleyin (sanitize).
- Dönüş değerlerini kontrol edin.
Kaynak: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh