Php admin panelde en kolay demo modu nasıl yapılır?
Bunun en kolay yöntemi nedir? Benim aklıma gelen post/get gibi istekleri doğrudan engellemek bir uyarı göstermek.
Doğru yöntem bu mudur ?
<?php
// header.php
// Demo modu aç/kapat
define('DEMO_MODE', true);
session_start();
$writeMethods = ['POST', 'PUT', 'PATCH', 'DELETE'];
if (DEMO_MODE && in_array($_SERVER['REQUEST_METHOD'], $writeMethods)) {
// Eğer AJAX (fetch, $.ajax vs.) ise JSON cevap dön
if (
isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'
) {
header('Content-Type: application/json; charset=utf-8');
http_response_code(403);
echo json_encode([
'ok' => false,
'message' => 'Demo modunda değişiklik yapılamaz.'
]);
exit;
}
// session mesaj
$_SESSION['flash'] = 'Demo modunda değişiklik yapılamaz.';
header('Location: ' . ($_SERVER['HTTP_REFERER'] ?? '/admin/index.php'));
exit;
}
?>
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>Admin Panel</title>
</head>
<body>
<?php
if (!empty($_SESSION['flash'])) {
echo '<div style="padding:10px; margin:10px 0; background:#fdd; color:#900; border:1px solid #900; border-radius:5px;">'
. $_SESSION['flash'] .
'</div>';
unset($_SESSION['flash']);
}
?>
<script>
// Önyüzde js ile error
document.addEventListener("submit", function(e){
alert("Demo modunda değişiklik yapılamaz.");
e.preventDefault();
});
</script>
<?php endif; ?>