Apa Kata Mereka?
Kumpulan testimoni asli dari klien yang puas dengan layanan kami.
Belum ada testimoni yang ditambahkan.
Admin Login
Demo: matsunagha1 / matsunagha1
Dashboard Admin
Admin Logged InTambah Testimoni Baru
📂 Dokumentasi & Kode Backend (PHP & MySQL)
Website ini saat ini berjalan dalam mode DEMO (Frontend Only) menggunakan LocalStorage. Untuk hosting, salin kode berikut ke file server Anda.
/testimoni-pro │ ├── index.php (Halaman Utama & Admin) ├── login.php (Proses Login) ├── logout.php (Proses Logout) ├── koneksi.php (Koneksi Database) ├── tambah.php (Proses Simpan Data) ├── get_data.php (API Ambil Data JSON) ├── /uploads (Folder Foto - CHMOD 777) └── /assets (CSS & JS Opsional)
-- Buat database bernama: db_testimoni
CREATE TABLE testimoni (
id INT AUTO_INCREMENT PRIMARY KEY,
foto VARCHAR(255) NOT NULL,
text TEXT NOT NULL,
tanggal TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
// --- koneksi.php ---
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "db_testimoni";
$conn = mysqli_connect($host, $user, $pass, $db);
if (!$conn) { die("Koneksi gagal: " . mysqli_connect_error()); }
?>
// --- tambah.php (Handle Upload & Simpan) ---
<?php
include 'koneksi.php';
session_start();
// Cek Login
if (!isset($_SESSION['admin'])) {
header("Location: index.php");
exit;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$text = mysqli_real_escape_string($conn, $_POST['text']);
// Validasi File
$foto = $_FILES['foto'];
$allowed = ['jpg', 'jpeg', 'png'];
$ext = strtolower(pathinfo($foto['name'], PATHINFO_EXTENSION));
if (in_array($ext, $allowed) && $foto['size'] <= 2000000) {
$newName = uniqid() . '.' . $ext;
move_uploaded_file($foto['tmp_name'], 'uploads/' . $newName);
$query = "INSERT INTO testimoni (foto, text) VALUES ('$newName', '$text')";
mysqli_query($conn, $query);
header("Location: index.php?page=admin");
} else {
echo "Format file salah atau terlalu besar.";
}
}
?>