Langsung ke konten utama

Membuat Aplikasi E-Voting Sederhana dengan PHP dan MySQL – Panduan Lengkap + Download Source Code

 

Di era digital ini, sistem pemungutan suara elektronik (E-Voting) semakin populer karena efisiensi dan keamanannya. Aplikasi E-Voting memungkinkan pemilihan dilakukan secara online dengan proses yang lebih cepat, transparan, dan minim kesalahan.

Dalam artikel ini, kita akan membangun aplikasi E-Voting sederhana menggunakan PHP dan MySQL dengan fitur:

 Login multi-role (Admin & Pemilih)
 Pendaftaran kandidat
 Pemungutan suara elektronik
 Statistik hasil voting real-time
 Antarmuka responsif (desktop & mobile)
 Keamanan password hashing

📥 Download Source Code Lengkap di Akhir Artikel!


Daftar Isi

  1. Persiapan Sistem

    • Software yang Dibutuhkan

    • Struktur Database

  2. Membuat Halaman Login & Registrasi

  3. Fitur Admin: Tambah & Kelola Kandidat

  4. Fitur Pemilih: Pemungutan Suara

  5. Menampilkan Hasil Voting

  6. Keamanan Sistem

  7. Cara Menjalankan Aplikasi

  8. Download Source Code Lengkap


1. Persiapan Sistem

Software yang Dibutuhkan

  • XAMPP (PHP 7.4+, MySQL, Apache)

  • Text Editor (VS Code, Sublime Text)

  • Browser (Chrome, Firefox)

Struktur Database

Kita membutuhkan 3 tabel utama:

Tabel users (Penyimpanan data pengguna)

sql

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    role ENUM('admin', 'voter') DEFAULT 'voter',
    has_voted BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Tabel candidates (Data kandidat)

sql

CREATE TABLE candidates (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    photo VARCHAR(255),
    description TEXT,
    votes INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Tabel votes (Rekam jejak voting)

sql

CREATE TABLE votes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    candidate_id INT NOT NULL,
    voted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (candidate_id) REFERENCES candidates(id)
);

2. Membuat Halaman Login & Registrasi

Login System dengan Password Hash

php

<?php
session_start();
require 'config.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
    $stmt->execute([$username]);
    $user = $stmt->fetch();

    if ($user && password_verify($password, $user['password'])) {
        $_SESSION['user_id'] = $user['id'];
        $_SESSION['role'] = $user['role'];
        header('Location: dashboard.php');
        exit;
    } else {
        $error = "Username atau password salah!";
    }
}
?>

Form Registrasi dengan Password Hashing

php

$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$stmt = $pdo->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
$stmt->execute([$username, $email, $password]);

3. Fitur Admin: Tambah & Kelola Kandidat

Admin dapat:

  • Menambah kandidat baru

  • Upload foto profil

  • Melihat daftar kandidat

  • Menghapus kandidat

Contoh Form Tambah Kandidat

html

<form method="POST" enctype="multipart/form-data">
    <input type="text" name="name" placeholder="Nama Kandidat" required>
    <textarea name="description" placeholder="Deskripsi"></textarea>
    <input type="file" name="photo" accept="image/*">
    <button type="submit" name="add_candidate">Tambah Kandidat</button>
</form>

Proses Upload Foto

php

$uploadDir = 'uploads/';
if (!file_exists($uploadDir)) {
    mkdir($uploadDir, 0755, true);
}

$photoName = uniqid() . '.' . pathinfo($_FILES['photo']['name'], PATHINFO_EXTENSION);
move_uploaded_file($_FILES['photo']['tmp_name'], $uploadDir . $photoName);

4. Fitur Pemilih: Pemungutan Suara

Logika Voting

php

if (!$_SESSION['has_voted']) {
    $pdo->beginTransaction();
    
    // Update jumlah suara
    $pdo->prepare("UPDATE candidates SET votes = votes + 1 WHERE id = ?")
        ->execute([$candidate_id]);

    // Catat voting
    $pdo->prepare("INSERT INTO votes (user_id, candidate_id) VALUES (?, ?)")
        ->execute([$_SESSION['user_id'], $candidate_id]);

    // Update status user
    $pdo->prepare("UPDATE users SET has_voted = TRUE WHERE id = ?")
        ->execute([$_SESSION['user_id']]);

    $pdo->commit();
}

5. Menampilkan Hasil Voting

Tampilan Statistik

php

$stmt = $pdo->query("
    SELECT c.name, c.photo, c.votes, 
           ROUND((c.votes / (SELECT SUM(votes) FROM candidates)) * 100, 2) AS percentage
    FROM candidates c
    ORDER BY c.votes DESC
");

Grafik Hasil (Menggunakan Chart.js)

html

<canvas id="resultsChart"></canvas>
<script>
    new Chart(document.getElementById('resultsChart'), {
        type: 'bar',
        data: {
            labels: <?php echo json_encode($candidateNames); ?>,
            datasets: [{
                label: 'Jumlah Suara',
                data: <?php echo json_encode($votes); ?>,
                backgroundColor: '#4a6bff'
            }]
        }
    });
</script>

6. Keamanan Sistem

Proteksi Penting

  1. Password Hashing (password_hash())

  2. Prepared Statements (Anti SQL Injection)

  3. Validasi File Upload (Hanya gambar)

  4. Session Management (Cek login tiap halaman)

  5. HTTPS (Jika online)


7. Cara Menjalankan Aplikasi

  1. Install XAMPP (Apache + MySQL)

  2. Import Database (evoting.sql)

  3. Letakkan File PHP di htdocs/evoting

  4. Buat Folder uploads (Permission 755)

  5. Akses di Browser: http://localhost/evoting


8. Download Source Code Lengkap

📥 Download Aplikasi E-Voting Lengkap
(Termasuk database, semua file PHP, CSS, dan panduan instalasi)

Fitur Download:

  • Full source code siap pakai

  • Dokumentasi lengkap

  • Contoh database SQL

  • Bonus: Skrip backup otomatis


Kesimpulan

Aplikasi E-Voting ini cocok untuk:

  • Pemilihan OSIS

  • Voting internal organisasi

  • Polling online

  • Sistem pemilihan kecil lainnya

Dengan mengikuti panduan ini, Anda sudah membangun sistem voting digital yang aman, efisien, dan mudah dikembangkan.

🚀 Tertarik mengembangkannya lebih lanjut? Coba tambahkan fitur:

  • Verifikasi email

  • Login dengan OTP

  • E-KTP digital

  • Audit trail lengkap

Jangan lupa download source code-nya dan customisasi sesuai kebutuhan!

Komentar

Postingan populer dari blog ini

Cara Mengkonversi File Python (.py) ke Executable (.exe) di Linux

  Berikut adalah panduan lengkap untuk mengkonversi script Python ke file .exe yang bisa dijalankan di Windows, meskipun Anda menggunakan Linux sebagai sistem operasi pengembangan. Persyaratan Python 3.x terinstall di Linux Virtual environment (direkomendasikan) Wine (untuk build Windows executable dari Linux) Langkah 1: Persiapan Install Wine (untuk build Windows executable dari Linux) bash Copy Download sudo apt update sudo apt install wine Buat dan aktifkan virtual environment bash Copy Download python3 -m venv myenv source myenv/bin/activate Langkah 2: Install PyInstaller dan Dependencies bash Copy Download pip install pyinstaller pip install PyQt5 mysql-connector-python psutil # atau dependencies proyek Anda Langkah 3: Konversi ke .exe Untuk aplikasi console biasa: bash Copy Download pyinstaller --onefile --clean --name MyApp script_anda.py Untuk aplikasi GUI (seperti PyQt5): bash Copy Download pyinstaller --onefile --windowed --clean --name MyApp script_anda....

Dari Dunia Nyata ke Rak Mainan: Panduan Magic Membuat Figur Miniatur AI yang Hidup dan Bergerak

  Belakangan ini, linimasa media sosial dihiasi oleh sebuah magic digital: foto-foto biasa yang berubah menjadi figur miniatur yang ultra-realistis, layaknya action figure koleksi terbatas yang dipajang di rak. Bahkan, si figur miniatur ini bisa hidup dan bergerak! Tren yang memadukan nostalgia mainan masa kecil dengan kecanggihan AI ini memang sedang viral. Bagi yang penasaran, rahasia di balik magic ini adalah kombinasi dua tool AI powerful: Google Gemini sebagai "pematung digital" dan PixVerse sebagai "sihir animasi". Berikut adalah panduan lengkapnya untuk mengubah foto Anda, motor, atau hewan peliharaan menjadi karya miniatur yang mengagumkan. Langkah 1: Memahat Digital dengan Google Gemini Bayangkan Gemini sebagai seorang pematung berbakat yang butuh instruksi jelas. Tugas Anda adalah memberinya gambaran terperinci. Akses Workshop Digital: Buka browser dan kunjungi https://gemini.google.com/ . Pilih Bahan Baku: Klik ikon "+" (unggah) dan...

Cara Install XAMPP di Windows: Pengertian, Kegunaan, dan Langkah-Langkahnya

Daftar Isi Apa Itu XAMPP? Kegunaan XAMPP Persiapan Sebelum Menginstall XAMPP Langkah-Langkah Install XAMPP di Windows Cara Menjalankan XAMPP Menguji XAMPP Berhasil Terinstall Masalah Umum dan Solusi Saat Install XAMPP Kesimpulan Apa Itu XAMPP? XAMPP  adalah sebuah paket perangkat lunak ( software stack ) yang digunakan untuk mengembangkan aplikasi web berbasis PHP, MySQL, dan Apache. XAMPP merupakan singkatan dari: X  (Cross-platform, bisa digunakan di Windows, Linux, dan macOS) A  (Apache – web server) M  (MySQL/MariaDB – database management system) P  (PHP – bahasa pemrograman server-side) P  (Perl – bahasa scripting tambahan) XAMPP dikembangkan oleh  Apache Friends  dan menyediakan lingkungan pengembangan ( local server ) yang memudahkan developer untuk membuat, menguji, dan menjalankan aplikasi web sebelum di- upload  ke server online. Kegunaan XAMPP XAMPP memiliki beberapa fungsi utama, di antaranya: Membuat Server Lokal Memungkinkan pen...