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.
$.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.
$.post('index.php?controller=ajax&mod=dbmovies', {action: 'import'}, function(data) {
console.log(data);
});
Yeni mantık:
Artık AJAX çağrılarında:
user_hash parametresi gereklidir.
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ı.']);
}
?>
| Ö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 |
DLE, CSRF saldırılarına karşı koruma sağlamak için AJAX isteklerinde user_hash gerektirir:
var user_hash = '{$dle_login_hash}';