File manager - Edit - /home/webapp69.cm.in.th/u69319090039/Shop39/core/Controller.php
Back
<?php abstract class Controller { /** * Render view template with optional layout wrapper */ protected function render(string $view, array $data = [], string $layout = 'header'): void { extract($data); // Global variables for views $csrf_token = Session::getCsrfToken(); $currentUser = Auth::user(); $sellerProfile = Auth::sellerProfile(); $viewFile = SITE_ROOT . "/app/Views/{$view}.php"; if (!file_exists($viewFile)) { die("View file not found: {$viewFile}"); } // Standard layout includes header, view, footer if ($layout === 'header' || $layout === 'main') { require_once SITE_ROOT . "/app/Views/layouts/header.php"; require_once SITE_ROOT . "/app/Views/layouts/navbar.php"; require_once $viewFile; require_once SITE_ROOT . "/app/Views/layouts/footer.php"; } elseif ($layout === 'seller') { require_once SITE_ROOT . "/app/Views/layouts/seller_header.php"; require_once $viewFile; require_once SITE_ROOT . "/app/Views/layouts/seller_footer.php"; } elseif ($layout === 'admin') { require_once SITE_ROOT . "/app/Views/layouts/admin_header.php"; require_once $viewFile; require_once SITE_ROOT . "/app/Views/layouts/admin_footer.php"; } else { require_once $viewFile; } } /** * Send JSON response */ protected function json(array $data, int $statusCode = 200): void { // Discard any previous output buffer (e.g. notices/whitespace) if (ob_get_level() > 0) { ob_clean(); } http_response_code($statusCode); header('Content-Type: application/json; charset=utf-8'); echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); exit; } /** * Redirect to relative path */ protected function redirect(string $path): void { header("Location: " . APP_URL . '/' . ltrim($path, '/')); exit; } /** * Validate CSRF token from POST request */ protected function validateCsrf(): void { $token = $_POST['csrf_token'] ?? $_SERVER['HTTP_X_CSRF_TOKEN'] ?? null; if (!Session::validateCsrfToken($token)) { if ($this->isAjax()) { $this->json(['status' => 'error', 'message' => 'CSRF Token Mismatch'], 403); } else { Session::setFlash('danger', 'Invalid security token. Please try again.'); $this->redirect(''); } } } protected function isAjax(): bool { return !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'; } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.22 |
proxy
|
phpinfo
|
Settings