Upload files to "/"

This commit is contained in:
2026-06-10 10:06:38 +00:00
parent 5587f9cdb4
commit 54f97123d5
5 changed files with 391 additions and 389 deletions
+56 -73
View File
@@ -1,73 +1,56 @@
<?php
// ============================================================================
// koneksi.php - KONEKSI UTAMA INTEGRATED (ANTI-ERROR FOLDER PATH)
// Sistem WebGIS Poverty Mapping & Geometri Sigma
// Penyusun: Tiara Chontesa (D1041231070)
// ============================================================================
// 1. KREDENSIAL DATABASE LOCALHOST (XAMPP)
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', ''); // Kosongkan jika menggunakan XAMPP standar lokal
define('DB_NAME', 'db_poverty_mapping'); // Mengarah ke nama database gabungan baru
// Eksekusi Koneksi MySQLi
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
// Validasi Kegagalan Koneksi
if ($conn->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;
}
}
}
<?php
// koneksi.php - versi deploy Coolify untuk Tugas_SIG Tiara
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
$host = getenv('DB_HOST') ?: 'localhost';
$user = getenv('DB_USER') ?: 'root';
$pass = getenv('DB_PASS') ?: (getenv('DB_PASSWORD') ?: '');
$db = getenv('DB_NAME') ?: 'db_poverty_mapping';
$port = (int)(getenv('DB_PORT') ?: 3306);
$conn = new mysqli($host, $user, $pass, $db, $port);
if ($conn->connect_error) {
http_response_code(500);
die(json_encode([
'status' => 'error',
'message' => 'Koneksi database gagal: ' . $conn->connect_error
]));
}
$conn->set_charset('utf8mb4');
function getRedirectPath($targetFile) {
$currentDir = basename(dirname($_SERVER['SCRIPT_FILENAME']));
if (stripos($currentDir, 'Tugas') !== false || stripos($currentDir, 'tugas') !== false || $currentDir === 'includes') {
return '../' . $targetFile;
}
return $targetFile;
}
function cekLogin() {
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
if (!isset($_SESSION['user_id'])) {
header('Location: ' . getRedirectPath('login.php'));
exit;
}
}
function cekRole($role_wajib) {
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
if (!isset($_SESSION['role']) || $_SESSION['role'] !== $role_wajib) {
header('Location: ' . getRedirectPath('dashboard.php?error=unauthorized'));
exit;
}
}
function bersih($str, $conn) {
return $conn->real_escape_string(htmlspecialchars(strip_tags(trim($str))));
}
?>