Süper spor ve lüks otomobil servisi. İşin kendisi ciddi — bu arabaları getiren müşteri kitlesinin beklentisi de.
Taslak hazırlamadan önce her zaman yaptığımı yaptım: mevcut siteyi açtım. Sonra çoğu kişinin atladığını yaptım — butona bastım.
Ekranda ne vardı
Warning: Undefined array key "tarih" in /home/…/randevu.php on line 84
Warning: Undefined array key "saat" in /home/…/randevu.php on line 85
Fatal error: Uncaught mysqli_sql_exception: Column 'appointment_at'
cannot be null in /home/…/randevu.php:91
Randevu formu çalışmıyordu. Bir müşteri arabası için randevu almaya kalkıyor, bunu görüyor ve gidiyor.
Burada iki ayrı sorun var
Görünür olan: form kırık. Gönderilen alanlar beklenen adlarla gelmiyor, veritabanı boş tarih kabul etmiyor, istek çöküyor. Bu bir hata; düzeltilir.
Daha ciddi olan: bu hatanın ekranda görünmesi.
O dört satır şunları açık ediyor: sunucudaki tam dosya yolu, betiğin adı, kaç satır olduğu, veritabanı sütununun adı ve kısıtı, hangi sürücünün kullanıldığı. Saldırgan için bedava keşif.
Canlı ortamda display_errors kapalı, log_errors açık olur — hata kaybolmaz, yer değiştirir.
Bunu sunuma nasıl koyarsın
Kolay yol: ekran görüntüsünü basıp “sitenizin hali bu” demek. Çalışır ama karşındakini savunmaya geçirir.
Ben üç cümle yazdım:
5 Ağustos 2026, 14:20 — randevu formu doldurulup gönderildiğinde sayfa hata mesajıyla sonlanıyor, kayıt oluşmuyor. Aynı ekranda sunucu dosya yolları ve veritabanı sütun adları görünür durumda. Her iki durum da tekrar edilebilir.
Fark: birincisi bir eleştiri, ikincisi bir kayıt. Kayıt tartışılmaz — ya doğrudur ya değildir, açıp bakılır.
Ve asıl soruyu sordurur
Bir servis sahibinin bu bulguyu okuyunca aklına gelen ilk soru “bu nasıl düzelir?” olmuyor.
Şu oluyor: “bu ne zamandır böyle?”
Cevabı kimse bilmiyor. Çünkü kırık bir form sessizdir. Sunucu logunda bir satır, kullanıcıda bir hayal kırıklığı, işletmede hiçbir iz bırakmaz. Randevu gelmediğinde kimse “form mu bozuk” demez; “bu ay sakin geçti” der.
Ölçülmeyen bir kayıp, kayıp olarak görünmez. Teklifin gerçek konusu buydu.
Taslak tarafında
Bu firmaya jenerik bir “oto servis” şablonu yakışmıyordu. Getirilen arabalar koyu, ağır, pahalı; site de öyle oldu — koyu zemin, geniş boşluk, az ama iri tipografi.
Randevu akışını da yeniden kurguladım: önce araç, sonra hizmet, sonra tarih. Her adımda tek karar. Ve en önemlisi — gönderim başarısız olursa kullanıcı bunu anlıyor. Sessizce yutmuyor, hata mesajını da yüzüne basmıyor; “kaydedemedik, şu numaradan ulaşın” diyor.
Ne öğrendim
Bir siteye bakmakla bir siteyi denemek aynı şey değil. Ana sayfa mükemmel görünebilir; işi yapan yer formun gönder tarafıdır ve orası hiç açılmadan bozuk kalabilir.
Artık her denetimde en az bir formu gerçekten dolduruyorum. Beş dakika sürüyor ve teklifin en güçlü cümlesi oradan çıkıyor.