2.1a
This commit is contained in:
parent
c8641b65f7
commit
d51486c0fb
368
admin.php
Normal file
368
admin.php
Normal file
@ -0,0 +1,368 @@
|
|||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
require_once 'db/config.php';
|
||||||
|
|
||||||
|
// If user is not logged in, redirect to login page
|
||||||
|
if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) {
|
||||||
|
header('Location: login.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$message = '';
|
||||||
|
$pdo = db();
|
||||||
|
|
||||||
|
// --- State Variables ---
|
||||||
|
$edit_mode_paket = false;
|
||||||
|
$paket_to_edit = null;
|
||||||
|
$edit_mode_kendaraan = false;
|
||||||
|
$kendaraan_to_edit = null;
|
||||||
|
|
||||||
|
// --- DATABASE SCHEMA SETUP ---
|
||||||
|
try {
|
||||||
|
// Paket Wisata Table
|
||||||
|
$pdo->exec("CREATE TABLE IF NOT EXISTS paket_wisata (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
nama VARCHAR(255) NOT NULL,
|
||||||
|
deskripsi TEXT,
|
||||||
|
durasi VARCHAR(100),
|
||||||
|
harga INT NOT NULL,
|
||||||
|
gambar VARCHAR(255)
|
||||||
|
)");
|
||||||
|
|
||||||
|
// Kendaraan Table
|
||||||
|
$pdo->exec("CREATE TABLE IF NOT EXISTS kendaraan (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
nama VARCHAR(255) NOT NULL,
|
||||||
|
jenis VARCHAR(100),
|
||||||
|
transmisi VARCHAR(50),
|
||||||
|
harga INT NOT NULL,
|
||||||
|
status VARCHAR(50) DEFAULT 'Tersedia',
|
||||||
|
gambar VARCHAR(255)
|
||||||
|
)");
|
||||||
|
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
die("Error creating table: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- HANDLE ACTIONS (DELETE & EDIT) ---
|
||||||
|
if (isset($_GET['action'])) {
|
||||||
|
$action = $_GET['action'];
|
||||||
|
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
|
||||||
|
|
||||||
|
// Paket Wisata Actions
|
||||||
|
if ($action == 'delete_paket' && $id > 0) {
|
||||||
|
$stmt = $pdo->prepare("SELECT gambar FROM paket_wisata WHERE id = ?");
|
||||||
|
$stmt->execute([$id]);
|
||||||
|
$item = $stmt->fetch();
|
||||||
|
if ($item && !empty($item['gambar']) && file_exists($item['gambar'])) {
|
||||||
|
unlink($item['gambar']);
|
||||||
|
}
|
||||||
|
$stmt = $pdo->prepare("DELETE FROM paket_wisata WHERE id = ?");
|
||||||
|
if ($stmt->execute([$id])) {
|
||||||
|
$message .= '<div class="alert alert-success">Paket wisata berhasil dihapus.</div>';
|
||||||
|
}
|
||||||
|
} elseif ($action == 'edit_paket' && $id > 0) {
|
||||||
|
$stmt = $pdo->prepare("SELECT * FROM paket_wisata WHERE id = ?");
|
||||||
|
$stmt->execute([$id]);
|
||||||
|
$paket_to_edit = $stmt->fetch();
|
||||||
|
if ($paket_to_edit) $edit_mode_paket = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kendaraan Actions
|
||||||
|
if ($action == 'delete_kendaraan' && $id > 0) {
|
||||||
|
$stmt = $pdo->prepare("SELECT gambar FROM kendaraan WHERE id = ?");
|
||||||
|
$stmt->execute([$id]);
|
||||||
|
$item = $stmt->fetch();
|
||||||
|
if ($item && !empty($item['gambar']) && file_exists($item['gambar'])) {
|
||||||
|
unlink($item['gambar']);
|
||||||
|
}
|
||||||
|
$stmt = $pdo->prepare("DELETE FROM kendaraan WHERE id = ?");
|
||||||
|
if ($stmt->execute([$id])) {
|
||||||
|
$message .= '<div class="alert alert-success">Kendaraan berhasil dihapus.</div>';
|
||||||
|
}
|
||||||
|
} elseif ($action == 'edit_kendaraan' && $id > 0) {
|
||||||
|
$stmt = $pdo->prepare("SELECT * FROM kendaraan WHERE id = ?");
|
||||||
|
$stmt->execute([$id]);
|
||||||
|
$kendaraan_to_edit = $stmt->fetch();
|
||||||
|
if ($kendaraan_to_edit) $edit_mode_kendaraan = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// --- FORM PROCESSING (ADD, UPDATE, LOGO) ---
|
||||||
|
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||||
|
$upload_dir = 'assets/images/';
|
||||||
|
$allowed_types = ['image/png', 'image/jpeg', 'image/gif', 'image/x-icon'];
|
||||||
|
$action = $_POST['action'] ?? '';
|
||||||
|
|
||||||
|
// Handle Logo Upload
|
||||||
|
if ($action == 'upload_logo') {
|
||||||
|
if (isset($_FILES['main_logo']) && $_FILES['main_logo']['error'] == 0) {
|
||||||
|
if (in_array($_FILES['main_logo']['type'], $allowed_types)) {
|
||||||
|
if (move_uploaded_file($_FILES['main_logo']['tmp_name'], $upload_dir . 'logo.png')) {
|
||||||
|
$message .= '<div class="alert alert-success">Logo utama berhasil diunggah.</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isset($_FILES['logo_icon']) && $_FILES['logo_icon']['error'] == 0) {
|
||||||
|
if (in_array($_FILES['logo_icon']['type'], $allowed_types)) {
|
||||||
|
if (move_uploaded_file($_FILES['logo_icon']['tmp_name'], $upload_dir . 'favicon.png')) {
|
||||||
|
$message .= '<div class="alert alert-success">Ikon logo berhasil diunggah.</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle Add/Update Tour Package
|
||||||
|
if (in_array($action, ['add_paket', 'update_paket'])) {
|
||||||
|
$nama = $_POST['nama'] ?? '';
|
||||||
|
$harga = $_POST['harga'] ?? 0;
|
||||||
|
$id = isset($_POST['id']) ? (int)$_POST['id'] : 0;
|
||||||
|
|
||||||
|
if (!empty($nama) && $harga > 0) {
|
||||||
|
$deskripsi = $_POST['deskripsi'] ?? '';
|
||||||
|
$durasi = $_POST['durasi'] ?? '';
|
||||||
|
$gambar = $_POST['gambar_existing'] ?? '';
|
||||||
|
|
||||||
|
if (isset($_FILES['gambar']) && $_FILES['gambar']['error'] == 0) {
|
||||||
|
if ($id > 0 && !empty($gambar) && file_exists($gambar)) unlink($gambar);
|
||||||
|
$img_name = time() . '_' . basename($_FILES['gambar']['name']);
|
||||||
|
$img_path = $upload_dir . $img_name;
|
||||||
|
if (move_uploaded_file($_FILES['gambar']['tmp_name'], $img_path)) $gambar = $img_path;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($action == 'add_paket') {
|
||||||
|
$stmt = $pdo->prepare("INSERT INTO paket_wisata (nama, deskripsi, durasi, harga, gambar) VALUES (?, ?, ?, ?, ?)");
|
||||||
|
if ($stmt->execute([$nama, $deskripsi, $durasi, $harga, $gambar])) $message .= '<div class="alert alert-success">Paket wisata berhasil ditambahkan.</div>';
|
||||||
|
} elseif ($action == 'update_paket' && $id > 0) {
|
||||||
|
$stmt = $pdo->prepare("UPDATE paket_wisata SET nama = ?, deskripsi = ?, durasi = ?, harga = ?, gambar = ? WHERE id = ?");
|
||||||
|
if ($stmt->execute([$nama, $deskripsi, $durasi, $harga, $gambar, $id])) $message .= '<div class="alert alert-success">Paket wisata berhasil diperbarui.</div>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$message .= '<div class="alert alert-warning">Nama dan Harga wajib diisi.</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle Add/Update Kendaraan
|
||||||
|
if (in_array($action, ['add_kendaraan', 'update_kendaraan'])) {
|
||||||
|
$nama = $_POST['nama_kendaraan'] ?? '';
|
||||||
|
$harga = $_POST['harga_kendaraan'] ?? 0;
|
||||||
|
$id = isset($_POST['id_kendaraan']) ? (int)$_POST['id_kendaraan'] : 0;
|
||||||
|
|
||||||
|
if (!empty($nama) && $harga > 0) {
|
||||||
|
$jenis = $_POST['jenis_kendaraan'] ?? '';
|
||||||
|
$transmisi = $_POST['transmisi_kendaraan'] ?? '';
|
||||||
|
$status = $_POST['status_kendaraan'] ?? 'Tersedia';
|
||||||
|
$gambar = $_POST['gambar_kendaraan_existing'] ?? '';
|
||||||
|
|
||||||
|
if (isset($_FILES['gambar_kendaraan']) && $_FILES['gambar_kendaraan']['error'] == 0) {
|
||||||
|
if ($id > 0 && !empty($gambar) && file_exists($gambar)) unlink($gambar);
|
||||||
|
$img_name = 'kendaraan_' . time() . '_' . basename($_FILES['gambar_kendaraan']['name']);
|
||||||
|
$img_path = $upload_dir . $img_name;
|
||||||
|
if (move_uploaded_file($_FILES['gambar_kendaraan']['tmp_name'], $img_path)) $gambar = $img_path;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($action == 'add_kendaraan') {
|
||||||
|
$stmt = $pdo->prepare("INSERT INTO kendaraan (nama, jenis, transmisi, harga, status, gambar) VALUES (?, ?, ?, ?, ?, ?)");
|
||||||
|
if ($stmt->execute([$nama, $jenis, $transmisi, $harga, $status, $gambar])) $message .= '<div class="alert alert-success">Kendaraan berhasil ditambahkan.</div>';
|
||||||
|
} elseif ($action == 'update_kendaraan' && $id > 0) {
|
||||||
|
$stmt = $pdo->prepare("UPDATE kendaraan SET nama = ?, jenis = ?, transmisi = ?, harga = ?, status = ?, gambar = ? WHERE id = ?");
|
||||||
|
if ($stmt->execute([$nama, $jenis, $transmisi, $harga, $status, $gambar, $id])) $message .= '<div class="alert alert-success">Kendaraan berhasil diperbarui.</div>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$message .= '<div class="alert alert-warning">Nama dan Harga Kendaraan wajib diisi.</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// To prevent re-submission on refresh, we redirect.
|
||||||
|
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||||
|
header("Location: admin.php");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fetch all data
|
||||||
|
$paket_wisata = $pdo->query("SELECT * FROM paket_wisata ORDER BY id DESC")->fetchAll();
|
||||||
|
$kendaraan = $pdo->query("SELECT * FROM kendaraan ORDER BY id DESC")->fetchAll();
|
||||||
|
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="id">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Admin Dashboard - JatimTour</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="assets/css/custom.css">
|
||||||
|
<?php if (file_exists('assets/images/favicon.png')): ?>
|
||||||
|
<link rel="icon" href="assets/images/favicon.png?v=<?php echo time(); ?>">
|
||||||
|
<?php endif; ?>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark sticky-top">
|
||||||
|
<div class="container">
|
||||||
|
<a class="navbar-brand" href="admin.php">
|
||||||
|
<?php if (file_exists('assets/images/logo.png')): ?>
|
||||||
|
<img src="assets/images/logo.png?v=<?php echo time(); ?>" alt="Logo" style="height: 30px;">
|
||||||
|
<?php else: ?>
|
||||||
|
Admin Dashboard
|
||||||
|
<?php endif; ?>
|
||||||
|
</a>
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
<div class="collapse navbar-collapse" id="navbarNav">
|
||||||
|
<ul class="navbar-nav ms-auto">
|
||||||
|
<li class="nav-item"><span class="navbar-text me-3">Selamat datang, <strong><?php echo htmlspecialchars($_SESSION['username']); ?></strong></span></li>
|
||||||
|
<li class="nav-item"><a class="btn btn-danger" href="logout.php">Logout</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="container py-5">
|
||||||
|
<?php echo $message; ?>
|
||||||
|
|
||||||
|
<div class="row g-5">
|
||||||
|
<!-- Main Content -->
|
||||||
|
<div class="col-lg-8">
|
||||||
|
|
||||||
|
<!-- Manajemen Paket Wisata -->
|
||||||
|
<div class="mb-5" id="manajemen-paket">
|
||||||
|
<h2 class="mb-4">Manajemen Paket Wisata</h2>
|
||||||
|
<div class="card mb-4">
|
||||||
|
<div class="card-header"><h5 class="card-title mb-0"><?php echo $edit_mode_paket ? 'Edit Paket Wisata' : 'Tambah Paket Wisata Baru'; ?></h5></div>
|
||||||
|
<div class="card-body">
|
||||||
|
<form action="admin.php" method="post" enctype="multipart/form-data">
|
||||||
|
<input type="hidden" name="action" value="<?php echo $edit_mode_paket ? 'update_paket' : 'add_paket'; ?>">
|
||||||
|
<?php if ($edit_mode_paket): ?>
|
||||||
|
<input type="hidden" name="id" value="<?php echo $paket_to_edit['id']; ?>">
|
||||||
|
<input type="hidden" name="gambar_existing" value="<?php echo htmlspecialchars($paket_to_edit['gambar']); ?>">
|
||||||
|
<?php endif; ?>
|
||||||
|
<div class="row g-3">
|
||||||
|
<div class="col-md-6"><label for="nama" class="form-label">Nama Paket</label><input type="text" class="form-control" id="nama" name="nama" value="<?php echo $edit_mode_paket ? htmlspecialchars($paket_to_edit['nama']) : ''; ?>" required></div>
|
||||||
|
<div class="col-md-6"><label for="harga" class="form-label">Harga (IDR)</label><input type="number" class="form-control" id="harga" name="harga" value="<?php echo $edit_mode_paket ? $paket_to_edit['harga'] : ''; ?>" required></div>
|
||||||
|
<div class="col-12"><label for="deskripsi" class="form-label">Deskripsi</label><textarea class="form-control" id="deskripsi" name="deskripsi" rows="3"><?php echo $edit_mode_paket ? htmlspecialchars($paket_to_edit['deskripsi']) : ''; ?></textarea></div>
|
||||||
|
<div class="col-md-6"><label for="durasi" class="form-label">Durasi</label><input type="text" class="form-control" id="durasi" name="durasi" value="<?php echo $edit_mode_paket ? htmlspecialchars($paket_to_edit['durasi']) : ''; ?>"></div>
|
||||||
|
<div class="col-md-6"><label for="gambar" class="form-label">Gambar <?php echo $edit_mode_paket ? '(Opsional)' : ''; ?></label><input class="form-control" type="file" id="gambar" name="gambar" accept="image/png, image/jpeg"></div>
|
||||||
|
<div class="col-12"><button type="submit" class="btn btn-primary"><?php echo $edit_mode_paket ? 'Update Paket' : 'Tambah Paket'; ?></button>
|
||||||
|
<?php if ($edit_mode_paket): ?><a href="admin.php" class="btn btn-secondary">Batal</a><?php endif; ?></div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header"><h5 class="card-title mb-0">Daftar Paket Wisata</h5></div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-striped align-middle">
|
||||||
|
<thead><tr><th>Gambar</th><th>Nama</th><th>Harga</th><th>Durasi</th><th>Aksi</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<?php if (empty($paket_wisata)): ?>
|
||||||
|
<tr><td colspan="5" class="text-center">Belum ada paket wisata.</td></tr>
|
||||||
|
<?php else: foreach ($paket_wisata as $paket): ?>
|
||||||
|
<tr>
|
||||||
|
<td><img src="<?php echo htmlspecialchars($paket['gambar']); ?>?v=<?php echo time(); ?>" style="width: 100px;"></td>
|
||||||
|
<td><?php echo htmlspecialchars($paket['nama']); ?></td>
|
||||||
|
<td>Rp <?php echo number_format($paket['harga'], 0, ',', '.'); ?></td>
|
||||||
|
<td><?php echo htmlspecialchars($paket['durasi']); ?></td>
|
||||||
|
<td>
|
||||||
|
<a href="admin.php?action=edit_paket&id=<?php echo $paket['id']; ?>#manajemen-paket" class="btn btn-sm btn-warning">Edit</a>
|
||||||
|
<a href="admin.php?action=delete_paket&id=<?php echo $paket['id']; ?>" class="btn btn-sm btn-danger" onclick="return confirm('Yakin hapus paket ini?');">Hapus</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; endif; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Manajemen Kendaraan -->
|
||||||
|
<div id="manajemen-kendaraan">
|
||||||
|
<h2 class="mb-4">Manajemen Kendaraan</h2>
|
||||||
|
<div class="card mb-4">
|
||||||
|
<div class="card-header"><h5 class="card-title mb-0"><?php echo $edit_mode_kendaraan ? 'Edit Kendaraan' : 'Tambah Kendaraan Baru'; ?></h5></div>
|
||||||
|
<div class="card-body">
|
||||||
|
<form action="admin.php" method="post" enctype="multipart/form-data">
|
||||||
|
<input type="hidden" name="action" value="<?php echo $edit_mode_kendaraan ? 'update_kendaraan' : 'add_kendaraan'; ?>">
|
||||||
|
<?php if ($edit_mode_kendaraan): ?>
|
||||||
|
<input type="hidden" name="id_kendaraan" value="<?php echo $kendaraan_to_edit['id']; ?>">
|
||||||
|
<input type="hidden" name="gambar_kendaraan_existing" value="<?php echo htmlspecialchars($kendaraan_to_edit['gambar']); ?>">
|
||||||
|
<?php endif; ?>
|
||||||
|
<div class="row g-3">
|
||||||
|
<div class="col-md-6"><label for="nama_kendaraan" class="form-label">Nama Kendaraan</label><input type="text" class="form-control" id="nama_kendaraan" name="nama_kendaraan" value="<?php echo $edit_mode_kendaraan ? htmlspecialchars($kendaraan_to_edit['nama']) : ''; ?>" required></div>
|
||||||
|
<div class="col-md-6"><label for="harga_kendaraan" class="form-label">Harga / Hari (IDR)</label><input type="number" class="form-control" id="harga_kendaraan" name="harga_kendaraan" value="<?php echo $edit_mode_kendaraan ? $kendaraan_to_edit['harga'] : ''; ?>" required></div>
|
||||||
|
<div class="col-md-6"><label for="jenis_kendaraan" class="form-label">Jenis (e.g., MPV, SUV)</label><input type="text" class="form-control" id="jenis_kendaraan" name="jenis_kendaraan" value="<?php echo $edit_mode_kendaraan ? htmlspecialchars($kendaraan_to_edit['jenis']) : ''; ?>"></div>
|
||||||
|
<div class="col-md-6"><label for="transmisi_kendaraan" class="form-label">Transmisi</label>
|
||||||
|
<select class="form-select" id="transmisi_kendaraan" name="transmisi_kendaraan">
|
||||||
|
<option <?php if($edit_mode_kendaraan && $kendaraan_to_edit['transmisi'] == 'Manual') echo 'selected'; ?>>Manual</option>
|
||||||
|
<option <?php if($edit_mode_kendaraan && $kendaraan_to_edit['transmisi'] == 'Matic') echo 'selected'; ?>>Matic</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6"><label for="status_kendaraan" class="form-label">Status</label>
|
||||||
|
<select class="form-select" id="status_kendaraan" name="status_kendaraan">
|
||||||
|
<option <?php if($edit_mode_kendaraan && $kendaraan_to_edit['status'] == 'Tersedia') echo 'selected'; ?>>Tersedia</option>
|
||||||
|
<option <?php if($edit_mode_kendaraan && $kendaraan_to_edit['status'] == 'Disewa') echo 'selected'; ?>>Disewa</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6"><label for="gambar_kendaraan" class="form-label">Gambar <?php echo $edit_mode_kendaraan ? '(Opsional)' : ''; ?></label><input class="form-control" type="file" id="gambar_kendaraan" name="gambar_kendaraan" accept="image/png, image/jpeg"></div>
|
||||||
|
<div class="col-12">
|
||||||
|
<button type="submit" class="btn btn-primary"><?php echo $edit_mode_kendaraan ? 'Update Kendaraan' : 'Tambah Kendaraan'; ?></button>
|
||||||
|
<?php if ($edit_mode_kendaraan): ?><a href="admin.php#manajemen-kendaraan" class="btn btn-secondary">Batal</a><?php endif; ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header"><h5 class="card-title mb-0">Daftar Kendaraan</h5></div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-striped align-middle">
|
||||||
|
<thead><tr><th>Gambar</th><th>Nama</th><th>Jenis</th><th>Harga/Hari</th><th>Status</th><th>Aksi</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<?php if (empty($kendaraan)): ?>
|
||||||
|
<tr><td colspan="6" class="text-center">Belum ada kendaraan.</td></tr>
|
||||||
|
<?php else: foreach ($kendaraan as $mobil): ?>
|
||||||
|
<tr>
|
||||||
|
<td><img src="<?php echo htmlspecialchars($mobil['gambar']); ?>?v=<?php echo time(); ?>" style="width: 100px;"></td>
|
||||||
|
<td><?php echo htmlspecialchars($mobil['nama']); ?></td>
|
||||||
|
<td><?php echo htmlspecialchars($mobil['jenis']); ?></td>
|
||||||
|
<td>Rp <?php echo number_format($mobil['harga'], 0, ',', '.'); ?></td>
|
||||||
|
<td><span class="badge bg-<?php echo $mobil['status'] == 'Tersedia' ? 'success' : 'warning'; ?>"><?php echo htmlspecialchars($mobil['status']); ?></span></td>
|
||||||
|
<td>
|
||||||
|
<a href="admin.php?action=edit_kendaraan&id=<?php echo $mobil['id']; ?>#manajemen-kendaraan" class="btn btn-sm btn-warning">Edit</a>
|
||||||
|
<a href="admin.php?action=delete_kendaraan&id=<?php echo $mobil['id']; ?>" class="btn btn-sm btn-danger" onclick="return confirm('Anda yakin ingin menghapus kendaraan ini?');">Hapus</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; endif; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Sidebar -->
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header"><h5 class="card-title mb-0">Pengaturan Logo</h5></div>
|
||||||
|
<div class="card-body">
|
||||||
|
<form action="admin.php" method="post" enctype="multipart/form-data">
|
||||||
|
<input type="hidden" name="action" value="upload_logo">
|
||||||
|
<div class="mb-3"><label for="main_logo" class="form-label">Logo Utama</label><input class="form-control" type="file" id="main_logo" name="main_logo" accept="image/png, image/jpeg"></div>
|
||||||
|
<div class="mb-3"><label for="logo_icon" class="form-label">Favicon</label><input class="form-control" type="file" id="logo_icon" name="logo_icon" accept="image/png, image/x-icon"></div>
|
||||||
|
<button type="submit" class="btn btn-primary w-100">Simpan Logo</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
169
index.php
169
index.php
@ -1,16 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
require_once 'db/config.php';
|
||||||
|
|
||||||
|
// --- Data Fetching ---
|
||||||
|
$pdo = db();
|
||||||
|
|
||||||
|
// Fetch Tour Packages from DB
|
||||||
|
$tour_packages = $pdo->query("SELECT * FROM paket_wisata ORDER BY id DESC")->fetchAll();
|
||||||
|
|
||||||
|
// Fetch Vehicles from DB
|
||||||
|
$rental_vehicles = $pdo->query("SELECT * FROM kendaraan WHERE status = 'Tersedia' ORDER BY id DESC")->fetchAll();
|
||||||
|
|
||||||
|
// Ganti nomor WhatsApp di bawah ini dengan nomor Admin/Operator Anda.
|
||||||
|
$admin_whatsapp_number = '6281234567890'; // Format internasional tanpa '+' atau '0' di depan
|
||||||
|
|
||||||
|
// --- Helper Function ---
|
||||||
|
function generate_whatsapp_link($number, $product_name) {
|
||||||
|
$text = "Halo, saya tertarik untuk memesan " . $product_name . ". Mohon informasinya.";
|
||||||
|
return "https://api.whatsapp.com/send?phone=" . $number . "&text=" . urlencode($text);
|
||||||
|
}
|
||||||
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="id">
|
<html lang="id">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Transport Rental Tour Travel</title>
|
<title>JatimTour - Rental Transport & Paket Wisata Jawa Timur</title>
|
||||||
<meta name="description" content="Sistem Manajemen Transportasi, Rental Kendaraan, dan Paket Wisata di Jawa Timur.">
|
<meta name="description" content="JatimTour menyediakan layanan rental mobil, sewa bus pariwisata, dan paket wisata terbaik di Jawa Timur. Jelajahi Bromo, Ijen, Malang, dan lainnya bersama kami.">
|
||||||
<meta name="keywords" content="rental mobil jawa timur, sewa mobil surabaya, paket wisata bromo, tour travel malang, sewa bus pariwisata, travel jawa timur, wisata kawah ijen, flatlogic generator">
|
<meta name="keywords" content="rental mobil jawa timur, sewa mobil surabaya, paket wisata bromo, tour travel malang, sewa bus pariwisata, travel jawa timur, wisata kawah ijen, flatlogic">
|
||||||
<meta property="og:title" content="Transport Rental Tour Travel">
|
<meta property="og:title" content="JatimTour - Rental Transport & Paket Wisata Jawa Timur">
|
||||||
<meta property="og:description" content="Sistem Manajemen Transportasi, Rental Kendaraan, dan Paket Wisata di Jawa Timur.">
|
<meta property="og:description" content="Layanan profesional untuk rental kendaraan dan paket wisata di seluruh Jawa Timur.">
|
||||||
<meta property="og:image" content="<?php echo htmlspecialchars($_SERVER['PROJECT_IMAGE_URL'] ?? ''); ?>">
|
<meta property="og:image" content="<?php echo htmlspecialchars($_SERVER['PROJECT_IMAGE_URL'] ?? ''); ?>">
|
||||||
<meta name="twitter:card" content="summary_large_image">
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
<meta name="twitter:image" content="<?php echo htmlspecialchars($_SERVER['PROJECT_IMAGE_URL'] ?? ''); ?>">
|
<meta name="twitter:image" content="<?php echo htmlspecialchars($_SERVER['PROJECT_IMAGE_URL'] ?? ''); ?>">
|
||||||
|
<?php if (file_exists('assets/images/favicon.png')): ?>
|
||||||
|
<link rel="icon" href="assets/images/favicon.png?v=<?php echo time(); ?>">
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
@ -26,64 +50,16 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<?php
|
|
||||||
// --- Data Placeholder ---
|
|
||||||
// Ganti nomor WhatsApp di bawah ini dengan nomor Admin/Operator Anda.
|
|
||||||
$admin_whatsapp_number = '6281234567890'; // Format internasional tanpa '+' atau '0' di depan
|
|
||||||
|
|
||||||
$tour_packages = [
|
|
||||||
[
|
|
||||||
'name' => 'Bromo Sunrise Adventure',
|
|
||||||
'description' => 'Nikmati keindahan matahari terbit di Gunung Bromo, lautan pasir, dan kawah yang menakjubkan.',
|
|
||||||
'price' => 'IDR 450.000 / orang',
|
|
||||||
'image' => 'assets/images/bromo.jpg'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Kawah Ijen Blue Fire',
|
|
||||||
'description' => 'Saksikan fenomena api biru yang langka di Kawah Ijen dan pemandangan danau kawah yang memesona.',
|
|
||||||
'price' => 'IDR 550.000 / orang',
|
|
||||||
'image' => 'assets/images/ijen.jpg'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Malang City Tour',
|
|
||||||
'description' => 'Jelajahi spot-spot ikonik di Kota Malang, mulai dari Jodipan, Alun-Alun, hingga kuliner legendaris.',
|
|
||||||
'price' => 'IDR 300.000 / orang',
|
|
||||||
'image' => 'assets/images/malang.jpg'
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
||||||
$rental_vehicles = [
|
|
||||||
[
|
|
||||||
'name' => 'Toyota Avanza',
|
|
||||||
'description' => 'Kapasitas 6 penumpang, AC, cocok untuk perjalanan keluarga di dalam kota.',
|
|
||||||
'price' => 'IDR 400.000 / hari',
|
|
||||||
'image' => 'assets/images/avanza.jpg'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Hiace Commuter',
|
|
||||||
'description' => 'Kapasitas 14 penumpang, ideal untuk rombongan wisata dengan kenyamanan ekstra.',
|
|
||||||
'price' => 'IDR 1.200.000 / hari',
|
|
||||||
'image' => 'assets/images/hiace.jpg'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Bus Pariwisata',
|
|
||||||
'description' => 'Kapasitas 50 penumpang, fasilitas lengkap untuk perjalanan jarak jauh antar kota.',
|
|
||||||
'price' => 'IDR 3.000.000 / hari',
|
|
||||||
'image' => 'assets/images/bus.jpg'
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
||||||
// --- Helper Function ---
|
|
||||||
function generate_whatsapp_link($number, $product_name) {
|
|
||||||
$text = "Halo, saya tertarik untuk memesan " . $product_name . ". Mohon informasinya.";
|
|
||||||
return "https://api.whatsapp.com/send?phone=" . $number . "&text=" . urlencode($text);
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<nav class="navbar navbar-expand-lg navbar-light bg-white fixed-top shadow-sm">
|
<nav class="navbar navbar-expand-lg navbar-light bg-white fixed-top shadow-sm">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<a class="navbar-brand fw-bold text-primary" href="#">JatimTour</a>
|
<a class="navbar-brand fw-bold text-primary" href="#">
|
||||||
|
<?php if (file_exists('assets/images/logo.png')): ?>
|
||||||
|
<img src="assets/images/logo.png?v=<?php echo time(); ?>" alt="JatimTour Logo" style="height: 40px;">
|
||||||
|
<?php else: ?>
|
||||||
|
JatimTour
|
||||||
|
<?php endif; ?>
|
||||||
|
</a>
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
@ -92,6 +68,7 @@
|
|||||||
<li class="nav-item"><a class="nav-link active" href="#hero">Beranda</a></li>
|
<li class="nav-item"><a class="nav-link active" href="#hero">Beranda</a></li>
|
||||||
<li class="nav-item"><a class="nav-link" href="#tours">Paket Wisata</a></li>
|
<li class="nav-item"><a class="nav-link" href="#tours">Paket Wisata</a></li>
|
||||||
<li class="nav-item"><a class="nav-link" href="#rentals">Rental Kendaraan</a></li>
|
<li class="nav-item"><a class="nav-link" href="#rentals">Rental Kendaraan</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="login.php">Admin Login</a></li>
|
||||||
<li class="nav-item"><a class="nav-link btn btn-primary text-white ms-lg-2" href="<?php echo generate_whatsapp_link($admin_whatsapp_number, 'layanan JatimTour'); ?>">Hubungi Kami</a></li>
|
<li class="nav-item"><a class="nav-link btn btn-primary text-white ms-lg-2" href="<?php echo generate_whatsapp_link($admin_whatsapp_number, 'layanan JatimTour'); ?>">Hubungi Kami</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -112,39 +89,65 @@
|
|||||||
<section id="tours" class="py-5">
|
<section id="tours" class="py-5">
|
||||||
<h2 class="text-center fw-bold mb-4">Paket Wisata Populer</h2>
|
<h2 class="text-center fw-bold mb-4">Paket Wisata Populer</h2>
|
||||||
<div class="row g-4">
|
<div class="row g-4">
|
||||||
<?php foreach ($tour_packages as $package): ?>
|
<?php if (empty($tour_packages)): ?>
|
||||||
<div class="col-lg-4 col-md-6">
|
<div class="col-12 text-center">
|
||||||
<div class="card h-100 shadow-sm border-0 tour-card">
|
<p>Saat ini belum ada paket wisata yang tersedia. Silakan cek kembali nanti.</p>
|
||||||
<img src="<?php echo htmlspecialchars($package['image']); ?>" class="card-img-top" alt="<?php echo htmlspecialchars($package['name']); ?>">
|
</div>
|
||||||
<div class="card-body d-flex flex-column">
|
<?php else: ?>
|
||||||
<h5 class="card-title fw-bold"><?php echo htmlspecialchars($package['name']); ?></h5>
|
<?php foreach ($tour_packages as $package): ?>
|
||||||
<p class="card-text flex-grow-1"><?php echo htmlspecialchars($package['description']); ?></p>
|
<div class="col-lg-4 col-md-6">
|
||||||
<p class="card-text fw-bold text-primary"><?php echo htmlspecialchars($package['price']); ?></p>
|
<div class="card h-100 shadow-sm border-0 tour-card">
|
||||||
<a href="<?php echo generate_whatsapp_link($admin_whatsapp_number, $package['name']); ?>" class="btn btn-success mt-auto w-100"><i class="bi bi-whatsapp me-2"></i>Pesan via WhatsApp</a>
|
<?php
|
||||||
|
$image_path = !empty($package['gambar']) && file_exists($package['gambar'])
|
||||||
|
? htmlspecialchars($package['gambar'])
|
||||||
|
: 'https://via.placeholder.com/400x300.png?text=JatimTour'; // Fallback image
|
||||||
|
?>
|
||||||
|
<img src="<?php echo $image_path; ?>" class="card-img-top" alt="<?php echo htmlspecialchars($package['nama']); ?>">
|
||||||
|
<div class="card-body d-flex flex-column">
|
||||||
|
<h5 class="card-title fw-bold"><?php echo htmlspecialchars($package['nama']); ?></h5>
|
||||||
|
<p class="card-text flex-grow-1"><?php echo nl2br(htmlspecialchars($package['deskripsi'])); ?></p>
|
||||||
|
<p class="card-text fw-bold text-primary">Rp <?php echo number_format($package['harga'], 0, ',', '.'); ?> / orang</p>
|
||||||
|
<p class="card-text"><small class="text-muted"><?php echo htmlspecialchars($package['durasi']); ?></small></p>
|
||||||
|
<a href="<?php echo generate_whatsapp_link($admin_whatsapp_number, $package['nama']); ?>" class="btn btn-success mt-auto w-100"><i class="bi bi-whatsapp me-2"></i>Pesan via WhatsApp</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<?php endforeach; ?>
|
||||||
<?php endforeach; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Rental Kendaraan Section -->
|
<!-- Rental Kendaraan Section -->
|
||||||
<section id="rentals" class="py-5">
|
<section id="rentals" class="py-5 bg-light rounded-3">
|
||||||
<h2 class="text-center fw-bold mb-4">Pilihan Kendaraan</h2>
|
<h2 class="text-center fw-bold mb-4">Pilihan Kendaraan</h2>
|
||||||
<div class="row g-4">
|
<div class="row g-4">
|
||||||
<?php foreach ($rental_vehicles as $vehicle): ?>
|
<?php if (empty($rental_vehicles)): ?>
|
||||||
<div class="col-lg-4 col-md-6">
|
<div class="col-12 text-center">
|
||||||
<div class="card h-100 shadow-sm border-0 tour-card">
|
<p>Saat ini belum ada kendaraan yang tersedia untuk disewa.</p>
|
||||||
<img src="<?php echo htmlspecialchars($vehicle['image']); ?>" class="card-img-top" alt="<?php echo htmlspecialchars($vehicle['name']); ?>">
|
</div>
|
||||||
<div class="card-body d-flex flex-column">
|
<?php else: ?>
|
||||||
<h5 class="card-title fw-bold"><?php echo htmlspecialchars($vehicle['name']); ?></h5>
|
<?php foreach ($rental_vehicles as $vehicle): ?>
|
||||||
<p class="card-text flex-grow-1"><?php echo htmlspecialchars($vehicle['description']); ?></p>
|
<div class="col-lg-4 col-md-6">
|
||||||
<p class="card-text fw-bold text-primary"><?php echo htmlspecialchars($vehicle['price']); ?></p>
|
<div class="card h-100 shadow-sm border-0 tour-card">
|
||||||
<a href="<?php echo generate_whatsapp_link($admin_whatsapp_number, 'Rental ' . $vehicle['name']); ?>" class="btn btn-success mt-auto w-100"><i class="bi bi-whatsapp me-2"></i>Pesan via WhatsApp</a>
|
<?php
|
||||||
|
$image_path = !empty($vehicle['gambar']) && file_exists($vehicle['gambar'])
|
||||||
|
? htmlspecialchars($vehicle['gambar'])
|
||||||
|
: 'https://via.placeholder.com/400x300.png?text=JatimTour'; // Fallback image
|
||||||
|
?>
|
||||||
|
<img src="<?php echo $image_path; ?>" class="card-img-top" alt="<?php echo htmlspecialchars($vehicle['nama']); ?>">
|
||||||
|
<div class="card-body d-flex flex-column">
|
||||||
|
<h5 class="card-title fw-bold"><?php echo htmlspecialchars($vehicle['nama']); ?></h5>
|
||||||
|
<div class="d-flex justify-content-between text-muted small mb-2">
|
||||||
|
<span><i class="bi bi-car-front-fill me-1"></i> <?php echo htmlspecialchars($vehicle['jenis']); ?></span>
|
||||||
|
<span><i class="bi bi-gear-fill me-1"></i> <?php echo htmlspecialchars($vehicle['transmisi']); ?></span>
|
||||||
|
</div>
|
||||||
|
<p class="card-text fw-bold text-primary fs-5">Rp <?php echo number_format($vehicle['harga'], 0, ',', '.'); ?> / hari</p>
|
||||||
|
<a href="<?php echo generate_whatsapp_link($admin_whatsapp_number, 'Rental ' . $vehicle['nama']); ?>" class="btn btn-success mt-auto w-100"><i class="bi bi-whatsapp me-2"></i>Pesan via WhatsApp</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<?php endforeach; ?>
|
||||||
<?php endforeach; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
87
login.php
Normal file
87
login.php
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
// Hardcoded credentials for simplicity
|
||||||
|
define('ADMIN_USERNAME', 'admin');
|
||||||
|
define('ADMIN_PASSWORD', 'password');
|
||||||
|
|
||||||
|
$error_message = '';
|
||||||
|
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
|
$username = $_POST['username'] ?? '';
|
||||||
|
$password = $_POST['password'] ?? '';
|
||||||
|
|
||||||
|
if ($username === ADMIN_USERNAME && $password === ADMIN_PASSWORD) {
|
||||||
|
$_SESSION['loggedin'] = true;
|
||||||
|
$_SESSION['username'] = $username;
|
||||||
|
header('Location: admin.php');
|
||||||
|
exit;
|
||||||
|
} else {
|
||||||
|
$error_message = 'Username atau password salah.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If user is already logged in, redirect to admin page
|
||||||
|
if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true) {
|
||||||
|
header('Location: admin.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="id">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Login Admin - Juanda Rent & Tour</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="assets/css/custom.css">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background-color: #f8f9fa;
|
||||||
|
}
|
||||||
|
.login-container {
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.login-card {
|
||||||
|
max-width: 400px;
|
||||||
|
width: 100%;
|
||||||
|
padding: 2rem;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0.75rem;
|
||||||
|
box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,0.1);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="login-container">
|
||||||
|
<div class="card login-card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h3 class="card-title text-center mb-4">Admin Login</h3>
|
||||||
|
<?php if ($error_message): ?>
|
||||||
|
<div class="alert alert-danger"><?php echo htmlspecialchars($error_message); ?></div>
|
||||||
|
<?php endif; ?>
|
||||||
|
<form action="login.php" method="POST">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="username" class="form-label">Username</label>
|
||||||
|
<input type="text" class="form-control" id="username" name="username" required>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="password" class="form-label">Password</label>
|
||||||
|
<input type="password" class="form-control" id="password" name="password" required>
|
||||||
|
</div>
|
||||||
|
<div class="d-grid">
|
||||||
|
<button type="submit" class="btn btn-primary">Login</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div class="text-center mt-3">
|
||||||
|
<a href="index.php">Kembali ke Halaman Utama</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
20
logout.php
Normal file
20
logout.php
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
// Unset all of the session variables
|
||||||
|
$_SESSION = [];
|
||||||
|
|
||||||
|
// Destroy the session.
|
||||||
|
if (ini_get("session.use_cookies")) {
|
||||||
|
$params = session_get_cookie_params();
|
||||||
|
setcookie(session_name(), '', time() - 42000,
|
||||||
|
$params["path"], $params["domain"],
|
||||||
|
$params["secure"], $params["httponly"]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
session_destroy();
|
||||||
|
|
||||||
|
// Redirect to login page
|
||||||
|
header('Location: login.php');
|
||||||
|
exit;
|
||||||
|
?>
|
||||||
Loading…
x
Reference in New Issue
Block a user