DLE 19 AJAX Sistemi Rehberi

DLE 19 sürümünde AJAX sistemi, önceki sürümlerden tamamen yenilenmiş durumda. Artık tek bir giriş noktası index.php üzerinden tüm AJAX istekleri yönlendirilir.

1. Eski Sistem (DLE 17 ve Öncesi)


$.post('/engine/ajax/controller.php?mod=dbmovies', {action: 'import'}, function(data) {
    console.log(data);
});
            

Burada mod parametresi hangi AJAX modülünü çalıştıracağını belirliyordu, fakat artık bu yöntem 403 hatası ile engelleniyor.

2. Yeni Sistem (DLE 19)


$.post('index.php?controller=ajax&mod=dbmovies', {action: 'import'}, function(data) {
    console.log(data);
});
            

Yeni mantık:

  • index.php çağrılır ve controller=ajax ile AJAX yönlendirmesi başlar.
  • mod=dbmovies → engine/ajax/dbmovies.php dosyası yüklenir.
  • $_POST veya $_GET parametreleri işlenir ve JSON formatında geri döner.

3. Güvenlik Mantığı

Artık AJAX çağrılarında:

  • Doğrudan PHP dosyalarına erişim engellenir (403 Forbidden).
  • CSRF token ve user_hash parametresi gereklidir.
  • $member_id oturum bilgisi çekirdekten düzgün gelir.
  • DLE'nin $_REQUEST süzgeç sistemi çalışır.

4. Örnek: DLE 19 AJAX Kullanımı

JavaScript:


function importMovie(currentId, user_hash) {
    $.ajax({
        type: 'POST',
        url: 'index.php?controller=ajax&mod=dbmovies',
        data: {
            action: 'import_movie',
            id: currentId,
            user_hash: user_hash
        },
        dataType: 'json',
        success: function(response) {
            if(response.success) {
                DLEPush.success('Film başarıyla içe aktarıldı!');
            } else {
                DLEPush.error('Hata: ' + response.message);
            }
        },
        error: function() {
            DLEPush.error('Sunucu bağlantı hatası.');
        }
    });
}
            

PHP (engine/ajax/dbmovies.php):


<?php
if(!defined('DATALIFEENGINE')) die('Hacking attempt!');

if(!$is_logged) {
    die(json_encode(['success' => false, 'message' => 'Giriş yapılmadı']));
}

if($_POST['action'] == 'import_movie') {
    $id = intval($_POST['id']);
    // API işlemleri yapılabilir
    echo json_encode(['success' => true, 'message' => 'Film başarıyla aktarıldı.']);
}
?>
            

5. Özet Farklar

Özellik Eski Sistem (DLE 17) Yeni Sistem (DLE 19)
Giriş Noktası /engine/ajax/controller.php index.php?controller=ajax
Güvenlik Zayıf (doğrudan erişim) CSRF + user_hash korumalı
Erişim PHP’ye direkt erişim Sanal yönlendirme (core route)
Modül yolu /engine/ajax/ Aynı klasör ama index yönlendirmesiyle
Yanıt formatı HTML / JSON karışık Tam JSON

6. user_hash

DLE, CSRF saldırılarına karşı koruma sağlamak için AJAX isteklerinde user_hash gerektirir:


var user_hash = '{$dle_login_hash}';
            
Bu sayfa, DLE 19 AJAX sistemi hakkında rehber niteliğindedir. Kod örnekleri çalıştırılabilir ve doğrudan şablonunuza eklenebilir.