/** * College Visa Portal * cPanel Production Configuration */ // ======================================== // SESSION CONFIGURATION // ======================================== $sessionPath = '/home1/sunrisel/php_sessions'; if (!is_dir($sessionPath) || !is_writable($sessionPath)) { error_log( 'College Portal: Session directory missing or not writable: ' . $sessionPath ); http_response_code(503); exit('Session storage unavailable. Contact administrator.'); } if (session_status() === PHP_SESSION_NONE) { ini_set('session.save_path', $sessionPath); ini_set('session.use_strict_mode', '1'); ini_set('session.cookie_httponly', '1'); ini_set('session.cookie_secure', '1'); ini_set('session.cookie_samesite', 'Lax'); if (!session_start()) { error_log('College Portal: Session start failed.'); http_response_code(503); exit('Unable to initialize session.'); } } // ======================================== // DATABASE CONFIGURATION // ======================================== $settingsFile = __DIR__ . '/portal_settings.php'; if (!is_file($settingsFile)) { http_response_code(503); exit('Portal configuration file is missing.'); } $settings = require $settingsFile; if (!is_array($settings)) { http_response_code(503); exit('Invalid portal configuration.'); } $host = $settings['db_host'] ?? 'localhost'; $user = $settings['db_user'] ?? ''; $pass = $settings['db_password'] ?? ''; $db = $settings['db_name'] ?? ''; if ($user === '' || $db === '') { error_log('College Portal: Incomplete database configuration.'); http_response_code(503); exit('Database configuration incomplete.'); } // ======================================== // MYSQL CONNECTION // ======================================== try { mysqli_report( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT ); $conn = new mysqli( $host, $user, $pass, $db ); $conn->set_charset('utf8mb4'); } catch (mysqli_sql_exception $ex) { error_log( 'College Portal Database Error: ' . $ex->getMessage() ); http_response_code(503); exit('Database connection unavailable.'); } // ======================================== // HTML ESCAPING // ======================================== function e($value) { return htmlspecialchars( (string)$value, ENT_QUOTES, 'UTF-8' ); } // ======================================== // AUTHENTICATION // ======================================== function isLoggedIn() { return isset($_SESSION['user_id']); } function isAdmin() { return isset($_SESSION['role']) && $_SESSION['role'] === 'admin'; } // ======================================== // LOGIN PROTECTION // ======================================== function requireLogin() { if (!isLoggedIn()) { header('Location: login.php'); exit; } } // ======================================== // ADMIN PROTECTION // ======================================== function requireAdmin() { if (!isAdmin()) { header('Location: ../index.php'); exit; } }