Scratch-Card Result Checker — PHP/MySQL Complete Source

Quick description / usage notes
-
Install & database
-
Create the MySQL database and tables by running the SQL in
sql/init.sql
(e.g., in phpMyAdmin ormysql -u root -p < sql/init.sql
). -
Update DB credentials in
db.php
if your MySQL user/password are different.
-
-
Files of interest
-
index.php
— public result-check page (students enter registration number + scratch PIN). -
check_result.php
— validates the PIN, marks it used, and displays the student's results. -
admin/login.php
&admin/dashboard.php
— simple admin area to add students, add results, and generate scratch cards. -
sql/init.sql
— SQL to create the database and insert sample data and a sample scratch PIN (SAMPLEPIN1234
). -
config.php
— contains a simple admin username/password (admin
/admin123
) used by the demo admin login. Change this for production. -
assets/style.css
,assets/script.js
— styling and minimal client-side checks.
-
-
How it works (workflow)
-
Admin: log in at
admin/login.php
, add student records and their results, then generate scratch cards. Scratch card PINs are stored in thescratch_cards
table, initially unused. - admin username and password:
username: adminpassword: admin123
-
Student: go to
index.php
, enter registration number and one scratch card PIN. If valid and unused, the server marks the PIN used and shows the student’s results (subjects, scores, total, average). -
Security notes: This is a simple educational demo. For real deployments:
-
Hash and store admin passwords securely (use password_hash).
-
Protect admin endpoints with stronger auth and CSRF tokens.
-
Rate-limit public result checks to prevent brute force.
-
Use HTTPS and secure database credentials (not hard-coded).
-
-
-
Quick sample data
-
Two students added in
sql/init.sql
(REG2025/001
andREG2025/002
) with sample results. -
Sample PIN:
SAMPLEPIN1234
(unused) — try it onindex.php
withREG2025/001
.
-
If you'd like, I can:
-
Add email delivery for cards, printable card templates, or printable PDF export of generated pins.
-
Replace the simple admin auth with a secure user table and password hashing.
-
Add pagination and CSV export for cards or student lists.
Tell me which enhancements you want in comment section and I’ll update the code.