Tamamlandı 9 Ocak 2026

419 Page Expired Hata Sayfası Özelleştirmesi

CSRF token süresi dolması kullanıcı dostu hale getirildi

📝 Basit Anlatım (Herkes İçin)

Ne Yapıldı?
Kullanıcılar bir formu doldurup çok uzun süre beklediklerinde (örneğin: kayıt formu açık kaldı, telefon çaldı, 30 dakika sonra gönder'e bastı), "419 Page Expired" gibi teknik bir hata alıyorlardı. Artık bunun yerine, ne olduğunu ve ne yapmaları gerektiğini açıklayan nazik bir sayfa görüyorlar.

Kullanıcı Ne Görüyor?

  • Başlık: "Oturum Süresi Doldu" (anlaşılır)
  • Açıklama: "Formda çok uzun süre beklediniz. Güvenlik nedeniyle sayfayı yenilemeniz gerekiyor."
  • Ne Yapmalıyım Kutusu: Adım adım talimatlar (Sayfa yenile → Form doldur → Devam et)
  • Sayfayı Yenile Butonu: Tek tıkla sorunu çöz
  • Neden Bu Oluyor: Güvenlik açıklaması (teknik detay yok)

Neden Önemliydi?
Kullanıcılar "419 Page Expired" gördüklerinde ne yapacaklarını bilmiyorlar, panik oluyorlar veya siteden çıkıyorlar. Yeni sayfa, sorunu basitçe açıklayıp çözüm sunuyor. Kullanıcı deneyimi dramatiik şekilde iyileşiyor.

Gerçek Dünya Senaryosu

Kullanıcı kayıt formunu dolduruyor, ama bir telefon geliyor. 20 dakika sonra dönüp "Kayıt Ol" butonuna basıyor. Sistem güvenlik nedeniyle formu geçersiz kılıyor (CSRF token expired). Eski hali: "419 Page Expired" (kullanıcı şok!). Yeni hali: "Oturum süresi doldu, sayfayı yenileyin" (kullanıcı anlıyor ve düzeltiyor).

🔧 Teknik Detaylar (Geliştiriciler İçin)

Oluşturulan Dosya

resources/views/errors/419.blade.php → Özel 419 hata sayfası

419 Hatası Nedir?

HTTP 419 Page Expired: Laravel'in CSRF (Cross-Site Request Forgery) koruması nedeniyle oluşur.

  • Her form gönderiminde benzersiz bir token oluşturulur
  • Token'ın belirli bir süresi vardır (genellikle 2 saat)
  • Süre dolunca form gönderimi reddedilir
  • Çözüm: Sayfa yenileme (yeni token oluşur)

Sayfa Özellikleri

1. Görsel Tasarım

  • Amber-sarı gradient arka plan (dikkat rengi)
  • Animasyonlu saat ikonu (clock-rotate-left, pulse efekti)
  • Responsive tasarım (mobil uyumlu)
  • Dark mode desteği (Tailwind CSS)

2. Kullanıcı Rehberliği

  • Bilgilendirme Kutusu: "Ne Yapmalıyım?" adım adım talimatlar
  • Aksiyon Butonları: Sayfayı Yenile (ana), Geri Dön, Ana Sayfa
  • Uyarı Kutusu: "Neden Bu Oluyor?" güvenlik açıklaması

3. Tenant-Aware Sistem

Otomatik tema algılama (domain bazlı):

  • muzibu.com → muzibu teması
  • ixtif.com → ixtif teması
  • Diğer → simple teması (fallback)

JavaScript Fonksiyonlar

  • window.location.reload() - Sayfayı yenile (yeni CSRF token)
  • window.history.back() - Önceki sayfaya dön
  • url('/') - Ana sayfaya git (Laravel helper)

Kullanıcı Akışı (Önce vs Sonra)

Önce (Kötü Deneyim)

  1. 1 Kullanıcı formu dolduruyor
  2. 2 30 dakika bekliyor (telefon, kahve, dikkat dağınıklığı)
  3. 3 "Gönder" butonuna basıyor
  4. 4 "419 PAGE EXPIRED" görüyor
  5. 5 Ne yapacağını bilmiyor, panik oluyor
  6. 6 Siteden çıkıyor veya desteği arıyor

Sonra (İyi Deneyim)

  1. 1 Kullanıcı formu dolduruyor
  2. 2 30 dakika bekliyor
  3. 3 "Gönder" butonuna basıyor
  4. 4 "Oturum Süresi Doldu" görüyor (anlaşılır)
  5. 5 Açıklamayı okuyor, ne yapması gerektiğini öğreniyor
  6. 6 "Sayfayı Yenile" butonuna basıyor, işlemine devam ediyor

Sonuç ve Kazanımlar

Kullanıcı Deneyimi Dramatiik İyileşti

Teknik hata yerine anlaşılır açıklama ve çözüm

Kullanıcı Kendi Başına Çözüyor

Destek talebi azalıyor, kullanıcı memnuniyeti artıyor

Profesyonel Görünüm

Modern, responsive, her cihazda çalışan tasarım

Güvenlik Korundu

CSRF koruması aktif, sadece hata mesajı iyileşti

Tenant-Aware Çalışıyor

Her tenant kendi temasıyla görüyor

Anında Çözüm Sunuyor

"Sayfayı Yenile" butonu ile tek tıkla düzelme

"Hata mesajları kullanıcıya ne yapması gerektiğini söylemeli, onu şaşırtmamalı. İyi bir hata sayfası, kullanıcıyı güçlendirir ve ona kontrol hissi verir."

— UX Best Practices