Skip to content

AmcaQt/Competition-Registration-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ Competition Registration System for Pertandingan Innovasi

A Cyber-Themed registration system for the Inovasi KKTM PJ competition. Built with 💻 PHP, 🐘 MySQL, and 💌 PHPMailer.

📜 Key Functionalities

  • Form handling & Sanitization
  • File Upload Logic ( PDF, DOC, DOCX )
  • Multiple E-Mail validation
  • Sends multiple emails to:
    • 👨‍🏫 Lecturer(s) - About the New Registration
    • 👥 Participant(s) - Confirmation email [ Approved / Not Approved ]
  • Log every registration to a file:
    $log_entry = "[" . date('Y-m-d H:i:s') . "] $team_name | $full_name | $email_combined | $phone_number | $category" . PHP_EOL;
    file_put_contents('logs/registration.log', $log_entry, FILE_APPEND);
    

PHPMailer Integration

  • Configured via Gmail SMTP
  • Email styling using uses HTML with headings, strong elements, and clean formatting
        $participantMail->isSMTP();
        $participantMail->Host = 'smtp.gmail.com';
        $participantMail->SMTPAuth = true;
        $participantMail->Username = $config['EMAIL_USERNAME'];
        $participantMail->Password = $config['EMAIL_APP_PASSWORD'];
        $participantMail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $participantMail->Port = xxx;
        $participantMail->setFrom($config['EMAIL_FROM'], $config['EMAIL_FROM_NAME']);
        $participantMail->addAddress($participantEmail);

Admin Panel

  • Login System, ( Currently hardcoded or session-based )
  • Approve/Rejected status for Participants
  • Pagination, CSV Export, and stats

Styling & UI

  • Using Orbitron Font for futuristic vibe
  • Cyber-Style elements: neon borders, AOS scroll animations.
  • Fully responsive with Bootstrap 5.

Tree Of This Project

Innovation.kktmpj.edu.my/
├── PHPMailer/                  # PHPMailer library
│   ├── src/
│   └── ... 
│
├── img/                        # Images (e.g., logo & banner)
│   └── LOGO-WEBSITE.png
│
├── uploads/                    # Uploaded payment proof documents
│   └── receipt.pdf                
│
├── logs/                       # Log folder for participant logs
│   └── registration.log
│
├── css/                        # CSS Folder for UI and Animation
│   └── style.css
│   └── register.css
│   └── about.css
│   └── competition.css
│
├── index.html                  # Landing page
│
├── Register/                   # Participant registration form
│   └── index.html
│
├── About/                      # Info of KKTM PJ
│   └── index.html
│
├── Competition/                # Info About the Competition
│   └── index.html
│
├── admin/
│   ├── dashboard.php          # Admin panel interface
│   ├── login.php              # Admin login page
│   └── manage_participants.php # View & manage participants
│
├── submit_registration.php     # Form handler with email & logging
│
├── config.php                  # Config file (DO NOT commit!)
│
├── innovation_db.sql           # Database dump (optional, add if needed)
│
└── README.md                   # This file

🚀 Getting Started

1. Clone this repo

git clone https://github.com/AmcaQt/Competition-Registration-System.git

2. Setup Environment

  • Download or Git Clone PHPMailer
  • Upload PHPMailer to root folder (public_html, www, htdocs)
  • Import or Create you database into local MySQL/MariaDB server
  • Locate the config.php file, update it according to your setup
  • Publish it to your Live Server

Question & Answer

  1. Does this work only on MySQL and MariaDB ?
    • It's built for MySQL, but it can work with other DB's with some changes:
      • Right now Im using this which is specified to MySQL / MariaDB:
        $conn = new mysqli(
            $config['DB_HOST'],
            $config['DB_USER'],
            $config['DB_PASS'],
            $config['DB_NAME'],
        );
        
      • If you wanted to use another :
        • PostgreSQL -> you can switch to pg_connect() or use PDO ( PHP Data Objects ).
        • PDO also work with SQLite.
  2. It doesn't work on my Server, how can I fix it.
    • Check if your server supports PHP + MySQL
    • Check if you upload the file on the right folder ( public_html/, htdocs/, www depends on the host ).
    • Update the DB Credentials on config.php to match the Live Server DB.
    • Check if your SMTP (PHPMailer) setup is correct and the server allows outbound SMTP traffic ( Some shared hosts block ). P/S : Check it Out here

Future Ideas

  • Capture Log
    • Log every new Registration
  • Registration Page for Jury
    • Calling for jury that open for Public who have experience
  • Google reCAPTCHA
  • Notification System ( WhatsApp ) ( Maybe ?? )

📬 Contact

Need help or want to Contribute ? Reach out via E-Mail or Instagram or open an Issue


Made with 💙 by Fahim Amsyar for Kolej Kemahiran Tinggi Mara Petaling Jaya ( KKTM PJ )

About

A cyber-themed registration system for the Innovation Competition at KKTM PJ.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published