diff --git a/koneksi.php b/koneksi.php new file mode 100644 index 0000000..4b94fec --- /dev/null +++ b/koneksi.php @@ -0,0 +1,73 @@ +connect_error) { + http_response_code(500); + die(json_encode([ + 'status' => 'error', + 'message' => 'Koneksi database gagal: ' . $conn->connect_error + ])); +} + +// Set Charset ke UTF-8 agar aman membaca data koordinat spasial/GeoJSON +$conn->set_charset('utf8mb4'); + + +// 2. DETEKSI LOKASI PATH RELATIF (Cerdas mencegah error No Such File / Wrong Redirect) +if (!function_exists('getRedirectPath')) { + function getRedirectPath($targetFile) { + // Ambil nama folder tempat file PHP yang sedang berjalan berada + $currentDir = basename(dirname($_SERVER['SCRIPT_FILENAME'])); + + // Jika file pengakses ada di dalam subfolder tugas (misal: tugas1_polyline, tugas2_polygon) + // atau berada di dalam folder 'includes', mundurkan path satu tingkat ke luar menggunakan '../' + if (strpos($currentDir, 'tugas') !== false || $currentDir === 'includes') { + return '../' . $targetFile; + } + return $targetFile; + } +} + + +// 3. FUNGSI OTENTIKASI GLOBAL (Bisa langsung dipanggil di semua folder tugas Anda) +if (!function_exists('cekLogin')) { + function cekLogin() { + if (session_status() === PHP_SESSION_NONE) { + session_start(); + } + // Jika belum ada session user_id, tendang paksa ke halaman login.php dengan path yang benar + if (!isset($_SESSION['user_id'])) { + $loginPath = getRedirectPath('login.php'); + header("Location: " . $loginPath); + exit; + } + } +} + +if (!function_exists('cekRole')) { + function cekRole($role_wajib) { + if (session_status() === PHP_SESSION_NONE) { + session_start(); + } + // Jika role user tidak sesuai dengan kriteria halaman, tendang ke dashboard utama + if (!isset($_SESSION['role']) || $_SESSION['role'] !== $role_wajib) { + $dashboardPath = getRedirectPath('dashboard.php?error=unauthorized'); + header("Location: " . $dashboardPath); + exit; + } + } +} \ No newline at end of file