A comprehensive web-based management system for tracking and managing UHF RFID sticker-based attendance and user information. This system is designed for the College of Engineering Education, Electronics Engineering department to efficiently manage users, devices, and attendance logs.
- Features
- Screenshots
- Requirements
- Installation
- Configuration
- Usage
- Database Structure
- File Structure
- Security Notes
- Contributing
- License
- Add/Update/Remove Users: Complete CRUD operations for user management
- User Information: Store name, ID number, email, gender, and department
- Sticker Color Management: Assign and track different colored RFID stickers (Yellow, Orange, Red, White, Blue, Green)
- UHF RFID Card Association: Link UHF RFID cards to users for attendance tracking
- Multi-Device Support: Manage multiple RFID reader devices
- Department-Based Organization: Assign devices to specific departments
- Device Configuration: Configure device names, UIDs, and operational modes
- Real-Time Logging: Automatic time-in and time-out tracking via RFID stickers
- Daily Logs View: View user attendance logs with date and time information
- Advanced Filtering: Filter logs by:
- Date range (start and end dates)
- Time range (time-in or time-out)
- Specific user (by RFID card)
- Device department
- Auto-Refresh: Logs automatically update every 5 seconds
- Excel Export: Export filtered attendance logs to Excel format (.xls)
- Customizable Filters: Apply multiple filters before exporting
- Interactive Maps: Dual-map view (Map 1 and Map 2) showing building floor plans with real-time user locations
- Live User Tracking: Display users' current locations on interactive maps using Leaflet.js and MapTiler
- Online Users Display: Real-time table showing currently online users with:
- Name and ID number
- Gender
- Contact information
- Emergency contact
- Medical history
- Current room location
- Room Count Visualization: Animated circular progress indicators showing:
- Total persons in BE Building
- First Floor count
- Second Floor count
- Individual room counts (BE 111, BE 213, BE 216)
- Auto-Refresh: Maps and user data automatically update every 5 seconds
- CSV Integration: Reads location prediction data from CSV files for accurate positioning
- Marker Clustering: Groups multiple users at the same location for better visualization
- User Information Popups: Click markers to view detailed user information (name, SSID, coordinates)
- Secure Authentication: Admin login with email and password
- Password Reset: Password recovery functionality
- Account Management: Update admin profile information
- Session Management: Secure session-based authentication
- Web Server: Apache 2.4+ or Nginx
- PHP: Version 7.3 or higher
- Database: MySQL 5.7+ or MariaDB 10.1+
- PHP Extensions:
- mysqli
- session
- mbstring
- Browser: Modern browsers (Chrome, Firefox, Safari, Edge)
- External Libraries (loaded via CDN):
- Leaflet.js 1.9.4+ (for interactive maps)
- MapTiler SDK (for map tiles)
- PapaParse 5.3.0+ (for CSV parsing)
- CSV Files: Location prediction CSV files for map functionality (see Configuration section)
git clone https://github.com/reyden142/UHF_RFID_sticker_system.git
cd UHF_RFID_sticker_system-
Create a MySQL database:
CREATE DATABASE UHF_RFID_STICKER;
-
Import the database schema:
mysql -u root -p UHF_RFID_STICKER < UHF_RFID_STICKER.sqlOr use phpMyAdmin:
- Open phpMyAdmin
- Select the
UHF_RFID_STICKERdatabase - Go to Import tab
- Choose
UHF_RFID_STICKER.sqlfile and click Go
Edit connectDB.php and update the database credentials:
$servername = "localhost";
$username = "root"; // Your MySQL username
$password = ""; // Your MySQL password
$dbname = "UHF_RFID_STICKER";- Copy the project folder to your web server directory (e.g.,
htdocsorwww) - Ensure mod_rewrite is enabled
- Set proper file permissions
- Copy the project folder to
C:\xampp\htdocs\(Windows) or/opt/lampp/htdocs/(Linux) - Access via:
http://localhost/UHF_RFID_sticker_system/
After importing the database, you can log in with:
- Email:
admin@gmail.com - Password: Check the database or use the password reset feature
- Edit
connectDB.phpto match your database settings - Ensure the database name matches:
UHF_RFID_STICKER
The system uses Asia/Manila timezone. To change it:
- Update timezone settings in
UsersLog.phpand related files - Configure PHP timezone in
php.ini:date.timezone = "Asia/Manila"
The map feature requires:
- CSV Files: Location prediction CSV files must be placed in the
css/directory:final_predicted_values_aggregated_map1.csvfinal_predicted_values_aggregated_map2.csvroom_counts.csv
- MapTiler API Key: The system uses MapTiler for map tiles. Update the API key in
map.phpif needed:const key = 'aF7HhncV5bhT2pqqWdRV'; // Replace with your MapTiler API key
- CSV File Paths: Update CSV file paths in
map.phpto match your system:$csvFiles = [ 'path/to/final_predicted_values_aggregated_map1.csv', 'path/to/final_predicted_values_aggregated_map2.csv' ];
- User SSID: Ensure users have SSID (MAC address) values in the database for location tracking
- Session settings can be modified in
php.ini - Default session timeout can be adjusted in PHP configuration
- Navigate to
login.php - Enter admin email and password
- Click "Login"
- Go to Manage Users from the navigation menu
- Add User:
- Fill in user information (name, ID number, email)
- Select department
- Choose gender
- Select sticker color
- Click "Add User"
- Update User: Select user from table, modify information, click "Update User"
- Remove User: Select user from table, click "Remove User"
- Go to Devices from the navigation menu
- Click "New Device" button
- Enter device name and department
- Click "Create new Device"
- Go to Users Log from the navigation menu
- View real-time attendance logs
- Use Log Filter/Export to Excel button to:
- Filter logs by date, time, user, or department
- Export filtered results to Excel
- Navigate to Users Log
- Click "Log Filter/Export to Excel"
- Apply desired filters
- Click "Export" to download Excel file
- Go to Map from the navigation menu
- View the Online Users table showing currently active users with their information
- Check the Room Count indicators for real-time occupancy statistics
- View Map 1 and Map 2 side-by-side showing:
- Building floor plans with room boundaries
- User location markers (blue circles)
- Click markers to see user details and coordinates
- Maps automatically refresh every 5 seconds with the latest location data
Stores administrator account information.
id: Primary keyadmin_name: Administrator nameadmin_email: Administrator emailadmin_pwd: Hashed password
Stores registered user information.
id: Primary keyusername: User's nameserialnumber: User ID numbersex: Gender (Male/Female)stickercolor: RFID sticker coloremail: User emailcard_uid: UHF RFID card unique identifiercard_select: Card selection statususer_date: Registration datedevice_uid: Associated device UIDdevice_dep: Device departmentadd_card: Card addition statusssid: MAC address/SSID for location trackingContact: User contact informationEmergencyContact: Emergency contact detailsMedicalHistory: Medical history information
Stores RFID reader device information.
id: Primary keydevice_name: Device namedevice_dep: Device departmentdevice_uid: Device unique identifierdevice_date: Device registration datedevice_mode: Device operational mode
Stores attendance and logging information.
id: Primary keyusername: User's nameserialnumber: User ID numbercard_uid: RFID card UIDdevice_uid: Device UIDdevice_dep: Device departmentcheckindate: Check-in datetimein: Time-intimeout: Time-outcard_out: Card out statusstickercolor: Sticker color
UHF_RFID_sticker_system/
│
├── index.php # Main users listing page
├── login.php # Admin login page
├── logout.php # Logout handler
├── ManageUsers.php # User management interface
├── UsersLog.php # Attendance logs viewer
├── devices.php # Device management interface
├── Export_Excel.php # Excel export functionality
├── map.php # Real-time location tracking map interface
│
├── connectDB.php # Database connection configuration
├── ac_login.php # Login authentication handler
├── ac_update.php # Admin account update handler
├── manage_users_conf.php # User management backend
├── manage_users_up.php # User list updater (AJAX)
├── user_log_up.php # Log list updater (AJAX)
├── dev_config.php # Device configuration handler
├── dev_up.php # Device list updater (AJAX)
├── getdata.php # Data retrieval handler
├── map1_fetchUsername.php # Fetch username for Map 1 markers
├── map2_fetchUsername.php # Fetch username for Map 2 markers
├── map_room_counts_csv_updated.php # Update room counts CSV
│
├── header.php # Navigation header component
├── install.php # Database installation script
│
├── UHF_RFID_STICKER.sql # Database schema file
│
├── css/ # Stylesheets directory
│ ├── Users.css
│ ├── login.css
│ ├── manageusers.css
│ ├── userslog.css
│ ├── devices.css
│ ├── header.css
│ ├── map.css # Map interface styles
│ └── bootstrap.css
│
├── js/ # JavaScript files directory
│ ├── jquery-2.2.3.min.js
│ ├── bootstrap.js
│ ├── bootbox.min.js
│ ├── manage_users.js
│ └── user_log.js
│
└── img/ # Images directory
├── RFID_STICKER_LOGO.jpg
├── login.png
├── users.png
├── map1.png
├── map2.png
└── map3.png
- Change Default Credentials: Immediately change the default admin password after installation
- Database Security:
- Use strong database passwords
- Restrict database user permissions
- Don't use root user in production
- File Permissions: Set appropriate file permissions (644 for files, 755 for directories)
- HTTPS: Use HTTPS in production environments
- Input Validation: The system includes basic validation, but consider adding more robust input sanitization
- SQL Injection: Uses prepared statements, but always validate and sanitize inputs
- Session Security: Ensure secure session configuration in production
- Error Handling: Disable error display in production (
display_errors = Offin php.ini)
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2025 Reyden Jenn Cagata
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- Reyden Jenn Cagata - Initial work - reyden142
- Edwin Jr. Ligan - JMazeikeen
- Shen Wa Lai
- University of Mindanao - College of Engineering Education, Electronics Engineering
- Bootstrap team for the CSS framework
- jQuery team for the JavaScript library
- All contributors and users of this system
For support, email reydencagata@gmail.com or open an issue in the repository.
Made with ❤️ for efficient RFID-based attendance management




