Modern Mimari ve AJAX (v19.x)

1. DLE 19.0+ Controller Sistemi

DLE 19.0 ile birlikte AJAX ve API sistemleri köklü bir değişikliğe uğradı. Artık tüm AJAX istekleri merkezi olarak index.php üzerinden yönetilmektedir.

Özellik Eski Yöntem (V18 ve öncesi) Yeni Yöntem (V19.0+)
AJAX URL engine/ajax/controller.php?mod=... index.php?controller=ajax&mod=...
Güvenlik Dosya bazlı kontroller Sistem düzeyinde CSRF koruması
Antibot engine/modules/antibot.php index.php?controller=antibot

2. AJAX İstekleri ve Kimlik Doğrulama

Yeni sistemde AJAX istekleri gönderirken user_hash mutlaka gönderilmelidir. Aksi takdirde sunucu "Hacking Attempt" hatası verecektir.

Örnek JavaScript İsteği:

$.post(dle_root + "index.php?controller=ajax&mod=my_plugin", {
    action: 'save',
    user_hash: dle_login_hash, // DLE tarafından otomatik tanımlanır
    content: 'test'
}, function(data) {
    if (data.success) {
        DLEPush.success("Başarıyla kaydedildi!");
    }
}, "json");

Örnek Backend (engine/ajax/my_plugin.php):

if (!defined('DATALIFEENGINE')) die("Hacking attempt!");

// user_hash kontrolü sistem tarafından otomatik yapılır, 
// ancak ek güvenlik için eklenti içinde de kontrol edilebilir:
if ($_REQUEST['user_hash'] == "" OR $_REQUEST['user_hash'] != $dle_login_hash) {
    die(json_encode(['error' => 'Geçersiz güvenlik anahtarı']));
}

$action = $_POST['action'];
// İşlemlerinizi burada yapın...

echo json_encode(['success' => true]);

3. DLEPush Bildirim Sistemi

Arayüzde kullanıcıya bilgi vermek için standart alert() yerine modern DLEPush kütüphanesini kullanmalısınız.

DLEPush.success("Mesaj");

Yeşil başarı bildirimi.

DLEPush.error("Hata");

Kırmızı hata bildirimi.

// Uyarı Mesajı (20 saniye görünür kalır)
DLEPush.warning("Dikkatli olun!", "Uyarı", 20000);

// Bilgilendirme
DLEPush.info("Yeni bir mesajınız var.");

4. En İyi Uygulamalar

  • Asenkron Yükleme Mümkünse JS dosyalarınızı eklenti içinde defer parametresi ile ekleyin.
  • Namespace Kullanımı Global değişken çakışmalarını önlemek için const MyPlugin = { ... }; yapısı kullanın.