{"id":1425,"date":"2026-04-03T22:20:30","date_gmt":"2026-04-03T15:20:30","guid":{"rendered":"https:\/\/arnut.com\/home\/?p=1425"},"modified":"2026-04-04T20:51:36","modified_gmt":"2026-04-04T13:51:36","slug":"classroom-attendance-management-system","status":"publish","type":"post","link":"https:\/\/arnut.com\/home\/classroom-attendance-management-system\/","title":{"rendered":"\u0e01\u0e32\u0e23\u0e1e\u0e31\u0e12\u0e19\u0e32 Apps \u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19-Classroom attendance \u0e14\u0e49\u0e27\u0e22 Codex"},"content":{"rendered":"<h1 data-section-id=\"w0f5qo\" data-start=\"200\" data-end=\"250\">\u0e01\u0e32\u0e23\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19 (Classroom attendance management system)<\/h1>\n<h2 data-section-id=\"c7z8j8\" data-start=\"252\" data-end=\"289\">\u0e04\u0e27\u0e32\u0e21\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23<\/h2>\n<p><strong>Tech stack:<\/strong><br \/>\n&#8211; ChatGPT \u0e17\u0e35\u0e48\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Add-ons Codex \u0e41\u0e25\u0e49\u0e27 \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14 <a href=\"https:\/\/chatgpt.com\/codex\/get-started\">Codex \u0e44\u0e14\u0e49\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48\u00a0<\/a><br \/>\n&#8211; PHP 8.x (plain PHP, no framework)<br \/>\n&#8211; MySQL 8.x<br \/>\n&#8211; Bootstrap 5<br \/>\n&#8211; JavaScript (vanilla JS)<br \/>\n&#8211; PDO for database access<br \/>\n&#8211; Responsive UI<br \/>\n&#8211; Compatible with XAMPP<\/p>\n<hr \/>\n<h2 data-section-id=\"c7z8j8\" data-start=\"252\" data-end=\"289\">\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19<br \/>\nStep 1 \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19<\/h2>\n<p data-start=\"290\" data-end=\"407\">\u0e40\u0e23\u0e34\u0e48\u0e21\u0e08\u0e32\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e01\u0e48\u0e2d\u0e19\u0e27\u0e48\u0e32 \u0e23\u0e30\u0e1a\u0e1a\u0e19\u0e35\u0e49\u0e08\u0e30\u0e17\u0e33\u0e2d\u0e30\u0e44\u0e23\u0e1a\u0e49\u0e32\u0e07 \u0e41\u0e25\u0e30\u0e43\u0e04\u0e23\u0e40\u0e1b\u0e47\u0e19\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2b\u0e25\u0e31\u0e01 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e25\u0e30\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e44\u0e21\u0e48\u0e2a\u0e31\u0e1a\u0e2a\u0e19\u0e20\u0e32\u0e22\u0e2b\u0e25\u0e31\u0e07<\/p>\n<p data-start=\"409\" data-end=\"621\">\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2b\u0e25\u0e31\u0e01\u0e04\u0e27\u0e23\u0e21\u0e35 3 \u0e01\u0e25\u0e38\u0e48\u0e21 \u0e44\u0e14\u0e49\u0e41\u0e01\u0e48<br data-start=\"442\" data-end=\"445\" \/><strong data-start=\"445\" data-end=\"468\">\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a (Admin)<\/strong> \u0e43\u0e0a\u0e49\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<br data-start=\"491\" data-end=\"494\" \/><strong data-start=\"494\" data-end=\"524\">\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c\u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e19 (Instructor)<\/strong> \u0e43\u0e0a\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e27\u0e34\u0e0a\u0e32 \u0e40\u0e1b\u0e34\u0e14\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d \u0e41\u0e25\u0e30\u0e14\u0e39\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19<br data-start=\"565\" data-end=\"568\" \/><strong data-start=\"568\" data-end=\"590\">\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 (Student)<\/strong> \u0e43\u0e0a\u0e49\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\u0e41\u0e25\u0e30\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19<\/p>\n<p data-start=\"623\" data-end=\"653\">\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35 \u0e44\u0e14\u0e49\u0e41\u0e01\u0e48<\/p>\n<ul data-start=\"654\" data-end=\"859\">\n<li data-section-id=\"mdq047\" data-start=\"654\" data-end=\"676\">\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a<\/li>\n<li data-section-id=\"14euoy5\" data-start=\"677\" data-end=\"694\">\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32<\/li>\n<li data-section-id=\"5e1kuh\" data-start=\"695\" data-end=\"720\">\u0e40\u0e1b\u0e34\u0e14\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e23\u0e32\u0e22\u0e04\u0e32\u0e1a<\/li>\n<li data-section-id=\"gfio01\" data-start=\"721\" data-end=\"757\">\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e14\u0e49\u0e27\u0e22\u0e23\u0e39\u0e1b check-in<\/li>\n<li data-section-id=\"1vax7ne\" data-start=\"758\" data-end=\"792\">\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e40\u0e27\u0e25\u0e32 IP \u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c \u0e41\u0e25\u0e30\u0e1e\u0e34\u0e01\u0e31\u0e14<\/li>\n<li data-section-id=\"1oicl1l\" data-start=\"793\" data-end=\"818\">\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e0b\u0e49\u0e33<\/li>\n<li data-section-id=\"h51tni\" data-start=\"819\" data-end=\"844\">\u0e14\u0e39\u0e1b\u0e23\u0e30\u0e27\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19<\/li>\n<li data-section-id=\"1qkvz5f\" data-start=\"845\" data-end=\"859\">\u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19<\/li>\n<\/ul>\n<p data-start=\"861\" data-end=\"946\">\u0e43\u0e19\u0e02\u0e31\u0e49\u0e19\u0e19\u0e35\u0e49\u0e04\u0e27\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 requirement \u0e2a\u0e31\u0e49\u0e19 \u0e46 \u0e01\u0e48\u0e2d\u0e19 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e48\u0e07 Codex<\/p>\n<hr data-start=\"948\" data-end=\"951\" \/>\n<h2 data-section-id=\"5c7irl\" data-start=\"953\" data-end=\"982\">Step 2 \u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e30\u0e1a\u0e1a<\/h2>\n<p data-start=\"983\" data-end=\"1053\">\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14 \u0e04\u0e27\u0e23\u0e41\u0e1a\u0e48\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e2d\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e42\u0e21\u0e14\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e44\u0e02\u0e07\u0e48\u0e32\u0e22\u0e43\u0e19\u0e20\u0e32\u0e22\u0e2b\u0e25\u0e31\u0e07<\/p>\n<p data-start=\"1055\" data-end=\"1093\">\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e27\u0e23\u0e41\u0e1a\u0e48\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e25\u0e31\u0e01\u0e14\u0e31\u0e07\u0e19\u0e35\u0e49<\/p>\n<ul data-start=\"1095\" data-end=\"1533\">\n<li data-section-id=\"x1xwpg\" data-start=\"1095\" data-end=\"1165\"><strong data-start=\"1097\" data-end=\"1122\">Authentication Module<\/strong> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a \u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a \u0e41\u0e25\u0e30\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c<\/li>\n<li data-section-id=\"px4mxn\" data-start=\"1166\" data-end=\"1213\"><strong data-start=\"1168\" data-end=\"1194\">User Management Module<\/strong> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49<\/li>\n<li data-section-id=\"1opcgc5\" data-start=\"1214\" data-end=\"1267\"><strong data-start=\"1216\" data-end=\"1233\">Course Module<\/strong> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19<\/li>\n<li data-section-id=\"1vwgi3l\" data-start=\"1268\" data-end=\"1322\"><strong data-start=\"1270\" data-end=\"1299\">Attendance Session Module<\/strong> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/li>\n<li data-section-id=\"1ib2qc9\" data-start=\"1323\" data-end=\"1370\"><strong data-start=\"1325\" data-end=\"1344\">Check-in Module<\/strong> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/li>\n<li data-section-id=\"sliqop\" data-start=\"1371\" data-end=\"1413\"><strong data-start=\"1373\" data-end=\"1396\">Photo Upload Module<\/strong> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b<\/li>\n<li data-section-id=\"1ewrusi\" data-start=\"1414\" data-end=\"1487\"><strong data-start=\"1416\" data-end=\"1455\">Location &amp; Device Validation Module<\/strong> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e1e\u0e34\u0e01\u0e31\u0e14 IP \u0e41\u0e25\u0e30\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c<\/li>\n<li data-section-id=\"p62qb3\" data-start=\"1488\" data-end=\"1533\"><strong data-start=\"1490\" data-end=\"1507\">Report Module<\/strong> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e41\u0e25\u0e30\u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01 CSV<\/li>\n<\/ul>\n<p data-start=\"1535\" data-end=\"1604\">\u0e41\u0e19\u0e27\u0e04\u0e34\u0e14\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e04\u0e37\u0e2d \u0e41\u0e22\u0e01\u0e2a\u0e48\u0e27\u0e19\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e15\u0e49\u0e19 \u0e44\u0e21\u0e48\u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e38\u0e01\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e23\u0e27\u0e21\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27<\/p>\n<hr data-start=\"1606\" data-end=\"1609\" \/>\n<h2 data-section-id=\"3qfgw4\" data-start=\"1611\" data-end=\"1636\">Step 3 \u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/h2>\n<p data-start=\"1637\" data-end=\"1695\">\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e21\u0e32\u0e01 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e16\u0e49\u0e32\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e27\u0e32\u0e07\u0e14\u0e35 \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e15\u0e48\u0e2d\u0e22\u0e2d\u0e14\u0e07\u0e48\u0e32\u0e22<\/p>\n<p data-start=\"1697\" data-end=\"1721\">\u0e15\u0e32\u0e23\u0e32\u0e07\u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e21\u0e35 \u0e44\u0e14\u0e49\u0e41\u0e01\u0e48<\/p>\n<h3 data-section-id=\"em7w64\" data-start=\"1723\" data-end=\"1735\">1) users<\/h3>\n<p data-start=\"1736\" data-end=\"1768\">\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b \u0e40\u0e0a\u0e48\u0e19<\/p>\n<ul data-start=\"1769\" data-end=\"1832\">\n<li data-section-id=\"yhmsn9\" data-start=\"1769\" data-end=\"1773\">id<\/li>\n<li data-section-id=\"13tcmji\" data-start=\"1774\" data-end=\"1784\">username<\/li>\n<li data-section-id=\"1nl9mev\" data-start=\"1785\" data-end=\"1795\">password<\/li>\n<li data-section-id=\"1j3r5z0\" data-start=\"1796\" data-end=\"1802\">role<\/li>\n<li data-section-id=\"16amjk4\" data-start=\"1803\" data-end=\"1810\">email<\/li>\n<li data-section-id=\"1lpej18\" data-start=\"1811\" data-end=\"1819\">status<\/li>\n<li data-section-id=\"yaajm\" data-start=\"1820\" data-end=\"1832\">created_at<\/li>\n<\/ul>\n<h3 data-section-id=\"10oxotj\" data-start=\"1834\" data-end=\"1849\">2) students<\/h3>\n<p data-start=\"1850\" data-end=\"1877\">\u0e40\u0e01\u0e47\u0e1a\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e40\u0e0a\u0e48\u0e19<\/p>\n<ul data-start=\"1878\" data-end=\"1949\">\n<li data-section-id=\"yhmsn9\" data-start=\"1878\" data-end=\"1882\">id<\/li>\n<li data-section-id=\"e4c2p7\" data-start=\"1883\" data-end=\"1892\">user_id<\/li>\n<li data-section-id=\"bdug7n\" data-start=\"1893\" data-end=\"1907\">student_code<\/li>\n<li data-section-id=\"iu19ib\" data-start=\"1908\" data-end=\"1919\">full_name<\/li>\n<li data-section-id=\"1sxp6ti\" data-start=\"1920\" data-end=\"1933\">class_group<\/li>\n<li data-section-id=\"16wxymo\" data-start=\"1934\" data-end=\"1949\">profile_photo<\/li>\n<\/ul>\n<h3 data-section-id=\"15bb85e\" data-start=\"1951\" data-end=\"1969\">3) instructors<\/h3>\n<p data-start=\"1970\" data-end=\"1996\">\u0e40\u0e01\u0e47\u0e1a\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c \u0e40\u0e0a\u0e48\u0e19<\/p>\n<ul data-start=\"1997\" data-end=\"2036\">\n<li data-section-id=\"yhmsn9\" data-start=\"1997\" data-end=\"2001\">id<\/li>\n<li data-section-id=\"e4c2p7\" data-start=\"2002\" data-end=\"2011\">user_id<\/li>\n<li data-section-id=\"iu19ib\" data-start=\"2012\" data-end=\"2023\">full_name<\/li>\n<li data-section-id=\"1844b9o\" data-start=\"2024\" data-end=\"2036\">department<\/li>\n<\/ul>\n<h3 data-section-id=\"1s5py51\" data-start=\"2038\" data-end=\"2052\">4) courses<\/h3>\n<p data-start=\"2053\" data-end=\"2075\">\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32 \u0e40\u0e0a\u0e48\u0e19<\/p>\n<ul data-start=\"2076\" data-end=\"2134\">\n<li data-section-id=\"yhmsn9\" data-start=\"2076\" data-end=\"2080\">id<\/li>\n<li data-section-id=\"35gvbb\" data-start=\"2081\" data-end=\"2094\">course_code<\/li>\n<li data-section-id=\"35em31\" data-start=\"2095\" data-end=\"2108\">course_name<\/li>\n<li data-section-id=\"1wffpj5\" data-start=\"2109\" data-end=\"2118\">section<\/li>\n<li data-section-id=\"15x5b3r\" data-start=\"2119\" data-end=\"2134\">instructor_id<\/li>\n<\/ul>\n<h3 data-section-id=\"f7ibzh\" data-start=\"2136\" data-end=\"2154\">5) enrollments<\/h3>\n<p data-start=\"2155\" data-end=\"2191\">\u0e43\u0e0a\u0e49\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e27\u0e48\u0e32\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e04\u0e19\u0e44\u0e2b\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19\u0e27\u0e34\u0e0a\u0e32\u0e43\u0e14<\/p>\n<ul data-start=\"2192\" data-end=\"2221\">\n<li data-section-id=\"yhmsn9\" data-start=\"2192\" data-end=\"2196\">id<\/li>\n<li data-section-id=\"f2ishz\" data-start=\"2197\" data-end=\"2208\">course_id<\/li>\n<li data-section-id=\"sg5s5v\" data-start=\"2209\" data-end=\"2221\">student_id<\/li>\n<\/ul>\n<h3 data-section-id=\"js9qoc\" data-start=\"2223\" data-end=\"2249\">6) attendance_sessions<\/h3>\n<p data-start=\"2250\" data-end=\"2276\">\u0e43\u0e0a\u0e49\u0e40\u0e01\u0e47\u0e1a\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e15\u0e48\u0e25\u0e30\u0e04\u0e32\u0e1a<\/p>\n<ul data-start=\"2277\" data-end=\"2392\">\n<li data-section-id=\"yhmsn9\" data-start=\"2277\" data-end=\"2281\">id<\/li>\n<li data-section-id=\"f2ishz\" data-start=\"2282\" data-end=\"2293\">course_id<\/li>\n<li data-section-id=\"14kkb0d\" data-start=\"2294\" data-end=\"2308\">session_date<\/li>\n<li data-section-id=\"1xyf1e\" data-start=\"2309\" data-end=\"2321\">start_time<\/li>\n<li data-section-id=\"1g6eg99\" data-start=\"2322\" data-end=\"2332\">end_time<\/li>\n<li data-section-id=\"1w5l03z\" data-start=\"2333\" data-end=\"2343\">qr_token<\/li>\n<li data-section-id=\"19npneg\" data-start=\"2344\" data-end=\"2354\">latitude<\/li>\n<li data-section-id=\"1sgq91n\" data-start=\"2355\" data-end=\"2366\">longitude<\/li>\n<li data-section-id=\"1gnj52v\" data-start=\"2367\" data-end=\"2383\">allowed_radius<\/li>\n<li data-section-id=\"1lpej18\" data-start=\"2384\" data-end=\"2392\">status<\/li>\n<\/ul>\n<h3 data-section-id=\"j10zzy\" data-start=\"2394\" data-end=\"2419\">7) attendance_records<\/h3>\n<p data-start=\"2420\" data-end=\"2445\">\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e23\u0e34\u0e07<\/p>\n<ul data-start=\"2446\" data-end=\"2636\">\n<li data-section-id=\"yhmsn9\" data-start=\"2446\" data-end=\"2450\">id<\/li>\n<li data-section-id=\"1uyml8\" data-start=\"2451\" data-end=\"2474\">attendance_session_id<\/li>\n<li data-section-id=\"sg5s5v\" data-start=\"2475\" data-end=\"2487\">student_id<\/li>\n<li data-section-id=\"1va3web\" data-start=\"2488\" data-end=\"2502\">checkin_time<\/li>\n<li data-section-id=\"1lpej18\" data-start=\"2503\" data-end=\"2511\">status<\/li>\n<li data-section-id=\"idr8uy\" data-start=\"2512\" data-end=\"2527\">checkin_photo<\/li>\n<li data-section-id=\"1vc7eig\" data-start=\"2528\" data-end=\"2540\">ip_address<\/li>\n<li data-section-id=\"vi9sv\" data-start=\"2541\" data-end=\"2553\">user_agent<\/li>\n<li data-section-id=\"19npneg\" data-start=\"2554\" data-end=\"2564\">latitude<\/li>\n<li data-section-id=\"1sgq91n\" data-start=\"2565\" data-end=\"2576\">longitude<\/li>\n<li data-section-id=\"cirv5f\" data-start=\"2577\" data-end=\"2598\">distance_from_class<\/li>\n<li data-section-id=\"7lxok4\" data-start=\"2599\" data-end=\"2616\">suspicious_flag<\/li>\n<li data-section-id=\"ygz35o\" data-start=\"2617\" data-end=\"2636\">suspicious_reason<\/li>\n<\/ul>\n<h3 data-section-id=\"pqpo0g\" data-start=\"2638\" data-end=\"2660\">8) suspicious_logs<\/h3>\n<p data-start=\"2661\" data-end=\"2691\">\u0e40\u0e01\u0e47\u0e1a\u0e40\u0e2b\u0e15\u0e38\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e19\u0e48\u0e32\u0e2a\u0e07\u0e2a\u0e31\u0e22\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21<\/p>\n<ul data-start=\"2692\" data-end=\"2752\">\n<li data-section-id=\"yhmsn9\" data-start=\"2692\" data-end=\"2696\">id<\/li>\n<li data-section-id=\"ee9sjz\" data-start=\"2697\" data-end=\"2719\">attendance_record_id<\/li>\n<li data-section-id=\"zupv3f\" data-start=\"2720\" data-end=\"2730\">log_type<\/li>\n<li data-section-id=\"1aw1ztl\" data-start=\"2731\" data-end=\"2739\">detail<\/li>\n<li data-section-id=\"yaajm\" data-start=\"2740\" data-end=\"2752\">created_at<\/li>\n<\/ul>\n<p data-start=\"2754\" data-end=\"2828\">\u0e04\u0e27\u0e23\u0e43\u0e2b\u0e49 Codex \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c <code data-start=\"2777\" data-end=\"2791\">database.sql<\/code> \u0e43\u0e2b\u0e49\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e43\u0e19 phpMyAdmin \u0e44\u0e14\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35<\/p>\n<hr data-start=\"2830\" data-end=\"2833\" \/>\n<h2 data-section-id=\"w65zuq\" data-start=\"2835\" data-end=\"2873\">Step 4 \u0e27\u0e32\u0e07\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e01\u0e15\u0e4c<\/h2>\n<p data-start=\"2874\" data-end=\"2918\">\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e1a \u0e04\u0e27\u0e23\u0e41\u0e22\u0e01\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e14\u0e31\u0e07\u0e19\u0e35\u0e49<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\">\/attendance-app<br \/>\n\u251c\u2500\u2500 config\/<br \/>\n\u251c\u2500\u2500 includes\/<br \/>\n\u251c\u2500\u2500 templates\/<br \/>\n\u251c\u2500\u2500 admin\/<br \/>\n\u251c\u2500\u2500 instructor\/<br \/>\n\u251c\u2500\u2500 student\/<br \/>\n\u251c\u2500\u2500 modules\/<br \/>\n\u251c\u2500\u2500 uploads\/checkins\/<br \/>\n\u251c\u2500\u2500 assets\/css\/<br \/>\n\u251c\u2500\u2500 assets\/js\/<br \/>\n\u251c\u2500\u2500 database\/<br \/>\n\u251c\u2500\u2500 index.php<br \/>\n\u251c\u2500\u2500 login.php<br \/>\n\u251c\u2500\u2500 logout.php<br \/>\n\u2514\u2500\u2500 README.md<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3167\" data-end=\"3187\">\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e21\u0e32\u0e22\u0e42\u0e14\u0e22\u0e2a\u0e23\u0e38\u0e1b\u0e04\u0e37\u0e2d<\/p>\n<ul data-start=\"3188\" data-end=\"3441\">\n<li data-section-id=\"1hphhb\" data-start=\"3188\" data-end=\"3231\"><code data-start=\"3190\" data-end=\"3198\">config<\/code> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e48\u0e32\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/li>\n<li data-section-id=\"1frdmt2\" data-start=\"3232\" data-end=\"3265\"><code data-start=\"3234\" data-end=\"3244\">includes<\/code> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e23\u0e48\u0e27\u0e21<\/li>\n<li data-section-id=\"ea1n35\" data-start=\"3266\" data-end=\"3310\"><code data-start=\"3268\" data-end=\"3279\">templates<\/code> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a header footer sidebar<\/li>\n<li data-section-id=\"1aepl2j\" data-start=\"3311\" data-end=\"3362\"><code data-start=\"3313\" data-end=\"3339\">admin\/instructor\/student<\/code> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1a\u0e17\u0e1a\u0e32\u0e17<\/li>\n<li data-section-id=\"1xa9hmb\" data-start=\"3363\" data-end=\"3398\"><code data-start=\"3365\" data-end=\"3374\">modules<\/code> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a business logic<\/li>\n<li data-section-id=\"nlmoxf\" data-start=\"3399\" data-end=\"3441\"><code data-start=\"3401\" data-end=\"3419\">uploads\/checkins<\/code> \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e23\u0e39\u0e1b\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/li>\n<\/ul>\n<hr data-start=\"3443\" data-end=\"3446\" \/>\n<h2 data-section-id=\"1v3hf6\" data-start=\"3448\" data-end=\"3498\">Step 5 \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e25\u0e30\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d PHP \u0e01\u0e31\u0e1a MySQL<\/h2>\n<p data-start=\"3499\" data-end=\"3591\">\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27 \u0e43\u0e2b\u0e49\u0e40\u0e23\u0e34\u0e48\u0e21\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e40\u0e0a\u0e48\u0e19 <code data-start=\"3576\" data-end=\"3591\">config\/db.php<\/code><\/p>\n<p data-start=\"3593\" data-end=\"3606\">\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33<\/p>\n<ul data-start=\"3607\" data-end=\"3701\">\n<li data-section-id=\"epxsk3\" data-start=\"3607\" data-end=\"3616\">\u0e43\u0e0a\u0e49 PDO<\/li>\n<li data-section-id=\"1tjh1qf\" data-start=\"3617\" data-end=\"3645\">\u0e01\u0e33\u0e2b\u0e19\u0e14 charset \u0e40\u0e1b\u0e47\u0e19 utf8mb4<\/li>\n<li data-section-id=\"158ed14\" data-start=\"3646\" data-end=\"3666\">\u0e40\u0e1b\u0e34\u0e14\u0e42\u0e2b\u0e21\u0e14 exception<\/li>\n<li data-section-id=\"jgcwqz\" data-start=\"3667\" data-end=\"3701\">\u0e41\u0e22\u0e01\u0e04\u0e48\u0e32\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e44\u0e27\u0e49\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27<\/li>\n<\/ul>\n<p data-start=\"3703\" data-end=\"3717\">\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e04\u0e34\u0e14<\/p>\n<ul data-start=\"3718\" data-end=\"3795\">\n<li data-section-id=\"1nhhovs\" data-start=\"3718\" data-end=\"3736\">host = localhost<\/li>\n<li data-section-id=\"monyne\" data-start=\"3737\" data-end=\"3761\">dbname = attendance_db<\/li>\n<li data-section-id=\"1usiyzp\" data-start=\"3762\" data-end=\"3779\">username = root<\/li>\n<li data-section-id=\"1qzu13e\" data-start=\"3780\" data-end=\"3795\">password = &#8220;&#8221;<\/li>\n<\/ul>\n<p data-start=\"3797\" data-end=\"3844\">\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e44\u0e14\u0e49\u0e41\u0e25\u0e49\u0e27 \u0e08\u0e36\u0e07\u0e04\u0e48\u0e2d\u0e22\u0e40\u0e23\u0e34\u0e48\u0e21\u0e2b\u0e19\u0e49\u0e32\u0e2d\u0e37\u0e48\u0e19\u0e15\u0e48\u0e2d\u0e44\u0e1b<\/p>\n<hr data-start=\"3846\" data-end=\"3849\" \/>\n<h2 data-section-id=\"qnzgj3\" data-start=\"3851\" data-end=\"3891\">Step 6 \u0e17\u0e33\u0e23\u0e30\u0e1a\u0e1a\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\u0e41\u0e25\u0e30\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 Session<\/h2>\n<p data-start=\"3892\" data-end=\"3924\">\u0e19\u0e35\u0e48\u0e04\u0e37\u0e2d\u0e2b\u0e31\u0e27\u0e43\u0e08\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e41\u0e22\u0e01\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49<\/p>\n<p data-start=\"3926\" data-end=\"3948\">\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e43\u0e19\u0e02\u0e31\u0e49\u0e19\u0e19\u0e35\u0e49<\/p>\n<ul data-start=\"3949\" data-end=\"4212\">\n<li data-section-id=\"1se3nwk\" data-start=\"3949\" data-end=\"3967\">\u0e2b\u0e19\u0e49\u0e32 <code data-start=\"3956\" data-end=\"3967\">login.php<\/code><\/li>\n<li data-section-id=\"13827t6\" data-start=\"3968\" data-end=\"3995\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a username\/password<\/li>\n<li data-section-id=\"142fda1\" data-start=\"3996\" data-end=\"4043\">\u0e43\u0e0a\u0e49 <code data-start=\"4002\" data-end=\"4019\">password_hash()<\/code> \u0e41\u0e25\u0e30 <code data-start=\"4024\" data-end=\"4043\">password_verify()<\/code><\/li>\n<li data-section-id=\"zff3do\" data-start=\"4044\" data-end=\"4076\">\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e43\u0e19 <code data-start=\"4065\" data-end=\"4076\">$_SESSION<\/code><\/li>\n<li data-section-id=\"6045ow\" data-start=\"4077\" data-end=\"4121\">\u0e41\u0e22\u0e01 role \u0e40\u0e1b\u0e47\u0e19 admin \/ instructor \/ student<\/li>\n<li data-section-id=\"nb2wsg\" data-start=\"4122\" data-end=\"4139\">\u0e17\u0e33 <code data-start=\"4127\" data-end=\"4139\">logout.php<\/code><\/li>\n<li data-section-id=\"vmeown\" data-start=\"4140\" data-end=\"4212\">\u0e40\u0e02\u0e35\u0e22\u0e19\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c \u0e40\u0e0a\u0e48\u0e19 <code data-start=\"4174\" data-end=\"4191\">require_login()<\/code> \u0e41\u0e25\u0e30 <code data-start=\"4196\" data-end=\"4212\">require_role()<\/code><\/li>\n<\/ul>\n<p data-start=\"4214\" data-end=\"4232\">\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e33<\/p>\n<ol data-start=\"4233\" data-end=\"4372\">\n<li data-section-id=\"1n9rkam\" data-start=\"4233\" data-end=\"4264\">\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e23\u0e2d\u0e01 username\/password<\/li>\n<li data-section-id=\"g9xkgl\" data-start=\"4265\" data-end=\"4296\">\u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19\u0e15\u0e32\u0e23\u0e32\u0e07 users<\/li>\n<li data-section-id=\"1pf5bvx\" data-start=\"4297\" data-end=\"4312\">\u0e15\u0e23\u0e27\u0e08\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19<\/li>\n<li data-section-id=\"tdno00\" data-start=\"4313\" data-end=\"4342\">\u0e16\u0e49\u0e32\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07 session<\/li>\n<li data-section-id=\"13mpte7\" data-start=\"4343\" data-end=\"4372\">\u0e1e\u0e32\u0e44\u0e1b\u0e22\u0e31\u0e07 dashboard \u0e15\u0e32\u0e21 role<\/li>\n<\/ol>\n<hr data-start=\"4374\" data-end=\"4377\" \/>\n<h2 data-section-id=\"1lbs0bj\" data-start=\"4379\" data-end=\"4417\">Step 7 \u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32 Dashboard \u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e1a\u0e17\u0e1a\u0e32\u0e17<\/h2>\n<p data-start=\"4418\" data-end=\"4477\">\u0e2b\u0e25\u0e31\u0e07\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e41\u0e15\u0e48\u0e25\u0e30\u0e01\u0e25\u0e38\u0e48\u0e21\u0e04\u0e27\u0e23\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19<\/p>\n<h3 data-section-id=\"1ocofil\" data-start=\"4479\" data-end=\"4498\">Admin Dashboard<\/h3>\n<ul data-start=\"4499\" data-end=\"4620\">\n<li data-section-id=\"1vumx7y\" data-start=\"4499\" data-end=\"4519\">\u0e08\u0e33\u0e19\u0e27\u0e19\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/li>\n<li data-section-id=\"xv1s95\" data-start=\"4520\" data-end=\"4538\">\u0e08\u0e33\u0e19\u0e27\u0e19\u0e27\u0e34\u0e0a\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/li>\n<li data-section-id=\"17ht86p\" data-start=\"4539\" data-end=\"4557\">\u0e08\u0e33\u0e19\u0e27\u0e19\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/li>\n<li data-section-id=\"23pzvm\" data-start=\"4558\" data-end=\"4583\">\u0e08\u0e33\u0e19\u0e27\u0e19\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19<\/li>\n<li data-section-id=\"1e1krxl\" data-start=\"4584\" data-end=\"4620\">\u0e40\u0e21\u0e19\u0e39\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c \u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32<\/li>\n<\/ul>\n<h3 data-section-id=\"1hq11vz\" data-start=\"4622\" data-end=\"4646\">Instructor Dashboard<\/h3>\n<ul data-start=\"4647\" data-end=\"4724\">\n<li data-section-id=\"fk6z50\" data-start=\"4647\" data-end=\"4662\">\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e2d\u0e19<\/li>\n<li data-section-id=\"1a6uwdu\" data-start=\"4663\" data-end=\"4685\">\u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/li>\n<li data-section-id=\"3ictwy\" data-start=\"4686\" data-end=\"4706\">\u0e14\u0e39\u0e1c\u0e25\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e23\u0e32\u0e22\u0e04\u0e32\u0e1a<\/li>\n<li data-section-id=\"1rzjf5t\" data-start=\"4707\" data-end=\"4724\">\u0e14\u0e39\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34<\/li>\n<\/ul>\n<h3 data-section-id=\"xsp8kr\" data-start=\"4726\" data-end=\"4747\">Student Dashboard<\/h3>\n<ul data-start=\"4748\" data-end=\"4831\">\n<li data-section-id=\"a57raj\" data-start=\"4748\" data-end=\"4769\">\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32\u0e17\u0e35\u0e48\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19<\/li>\n<li data-section-id=\"1luh30i\" data-start=\"4770\" data-end=\"4794\">\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e2d\u0e22\u0e39\u0e48<\/li>\n<li data-section-id=\"6jtttf\" data-start=\"4795\" data-end=\"4809\">\u0e1b\u0e38\u0e48\u0e21\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/li>\n<li data-section-id=\"6jidxv\" data-start=\"4810\" data-end=\"4831\">\u0e1b\u0e23\u0e30\u0e27\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19<\/li>\n<\/ul>\n<hr data-start=\"4833\" data-end=\"4836\" \/>\n<h2 data-section-id=\"1q0mzho\" data-start=\"4838\" data-end=\"4887\">Step 8 \u0e17\u0e33\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c \u0e41\u0e25\u0e30\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32<\/h2>\n<p data-start=\"4888\" data-end=\"4921\">\u0e02\u0e31\u0e49\u0e19\u0e19\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e34\u0e48\u0e21\u0e08\u0e32\u0e01\u0e2a\u0e48\u0e27\u0e19 Admin \u0e01\u0e48\u0e2d\u0e19<\/p>\n<p data-start=\"4923\" data-end=\"4936\">\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35<\/p>\n<ul data-start=\"4937\" data-end=\"5072\">\n<li data-section-id=\"1cc3u6u\" data-start=\"4937\" data-end=\"4961\">\u0e40\u0e1e\u0e34\u0e48\u0e21\/\u0e41\u0e01\u0e49\u0e44\u0e02\/\u0e25\u0e1a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/li>\n<li data-section-id=\"1uy27v7\" data-start=\"4962\" data-end=\"4985\">\u0e40\u0e1e\u0e34\u0e48\u0e21\/\u0e41\u0e01\u0e49\u0e44\u0e02\/\u0e25\u0e1a\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c<\/li>\n<li data-section-id=\"tmncsj\" data-start=\"4986\" data-end=\"5009\">\u0e40\u0e1e\u0e34\u0e48\u0e21\/\u0e41\u0e01\u0e49\u0e44\u0e02\/\u0e25\u0e1a\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32<\/li>\n<li data-section-id=\"9sgwbk\" data-start=\"5010\" data-end=\"5041\">\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e27\u0e48\u0e32\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c\u0e04\u0e19\u0e44\u0e2b\u0e19\u0e2a\u0e2d\u0e19\u0e27\u0e34\u0e0a\u0e32\u0e43\u0e14<\/li>\n<li data-section-id=\"fa3xg5\" data-start=\"5042\" data-end=\"5072\">\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e40\u0e02\u0e49\u0e32\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32<\/li>\n<\/ul>\n<p data-start=\"5074\" data-end=\"5147\">\u0e08\u0e38\u0e14\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e04\u0e37\u0e2d \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19 <code data-start=\"5095\" data-end=\"5102\">users<\/code> \u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c\u0e01\u0e31\u0e1a <code data-start=\"5119\" data-end=\"5129\">students<\/code> \u0e41\u0e25\u0e30 <code data-start=\"5134\" data-end=\"5147\">instructors<\/code><\/p>\n<hr data-start=\"5149\" data-end=\"5152\" \/>\n<h2 data-section-id=\"3jb2p5\" data-start=\"5154\" data-end=\"5186\">Step 9 \u0e17\u0e33\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/h2>\n<p data-start=\"5187\" data-end=\"5228\">\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e34\u0e14\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e23\u0e32\u0e22\u0e04\u0e32\u0e1a\u0e44\u0e14\u0e49<\/p>\n<p data-start=\"5230\" data-end=\"5258\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e15\u0e2d\u0e19\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e2d\u0e1a<\/p>\n<ul data-start=\"5259\" data-end=\"5400\">\n<li data-section-id=\"1rd6h8w\" data-start=\"5259\" data-end=\"5268\">\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32<\/li>\n<li data-section-id=\"1brsyo0\" data-start=\"5269\" data-end=\"5282\">\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e23\u0e35\u0e22\u0e19<\/li>\n<li data-section-id=\"1dmzqau\" data-start=\"5283\" data-end=\"5294\">\u0e40\u0e27\u0e25\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21<\/li>\n<li data-section-id=\"1nh51lc\" data-start=\"5295\" data-end=\"5308\">\u0e40\u0e27\u0e25\u0e32\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14<\/li>\n<li data-section-id=\"m6u7v5\" data-start=\"5309\" data-end=\"5337\">session code \u0e2b\u0e23\u0e37\u0e2d QR token<\/li>\n<li data-section-id=\"75uojn\" data-start=\"5338\" data-end=\"5354\">\u0e1e\u0e34\u0e01\u0e31\u0e14\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19<\/li>\n<li data-section-id=\"2v18ub\" data-start=\"5355\" data-end=\"5384\">\u0e23\u0e31\u0e28\u0e21\u0e35\u0e17\u0e35\u0e48\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15 \u0e40\u0e0a\u0e48\u0e19 50 \u0e40\u0e21\u0e15\u0e23<\/li>\n<li data-section-id=\"yowk68\" data-start=\"5385\" data-end=\"5400\">\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e40\u0e1b\u0e34\u0e14\/\u0e1b\u0e34\u0e14<\/li>\n<\/ul>\n<p data-start=\"5402\" data-end=\"5466\">\u0e41\u0e19\u0e27\u0e04\u0e34\u0e14\u0e04\u0e37\u0e2d \u0e2b\u0e19\u0e36\u0e48\u0e07\u0e27\u0e34\u0e0a\u0e32\u0e2d\u0e32\u0e08\u0e21\u0e35\u0e2b\u0e25\u0e32\u0e22 session \u0e44\u0e14\u0e49 \u0e40\u0e0a\u0e48\u0e19 \u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e38\u0e01\u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c<\/p>\n<hr data-start=\"5468\" data-end=\"5471\" \/>\n<h2 data-section-id=\"1103xaw\" data-start=\"5473\" data-end=\"5517\">Step 10 \u0e17\u0e33\u0e23\u0e30\u0e1a\u0e1a QR Code \u0e2b\u0e23\u0e37\u0e2d Session Token<\/h2>\n<p data-start=\"5518\" data-end=\"5577\">\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e31\u0e48\u0e27 \u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e27\u0e23\u0e21\u0e35\u0e23\u0e2b\u0e31\u0e2a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e48\u0e25\u0e30\u0e04\u0e32\u0e1a<\/p>\n<p data-start=\"5579\" data-end=\"5585\">\u0e41\u0e19\u0e27\u0e17\u0e32\u0e07<\/p>\n<ul data-start=\"5586\" data-end=\"5759\">\n<li data-section-id=\"1fh5qxt\" data-start=\"5586\" data-end=\"5634\">\u0e2a\u0e38\u0e48\u0e21 token \u0e44\u0e21\u0e48\u0e0b\u0e49\u0e33 \u0e40\u0e0a\u0e48\u0e19 hash \u0e2b\u0e23\u0e37\u0e2d random string<\/li>\n<li data-section-id=\"1q7w58x\" data-start=\"5635\" data-end=\"5668\">\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19 <code data-start=\"5647\" data-end=\"5668\">attendance_sessions<\/code><\/li>\n<li data-section-id=\"fe9tvw\" data-start=\"5669\" data-end=\"5708\">\u0e41\u0e2a\u0e14\u0e07 token \u0e2b\u0e23\u0e37\u0e2d QR code \u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c<\/li>\n<li data-section-id=\"1srfhud\" data-start=\"5709\" data-end=\"5759\">\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e23\u0e2d\u0e01 token \u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e41\u0e01\u0e19 QR \u0e01\u0e48\u0e2d\u0e19 check-in<\/li>\n<\/ul>\n<p data-start=\"5761\" data-end=\"5813\">\u0e02\u0e49\u0e2d\u0e14\u0e35\u0e04\u0e37\u0e2d \u0e25\u0e14\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e49\u0e32\u0e21\u0e04\u0e32\u0e1a\u0e2b\u0e23\u0e37\u0e2d\u0e02\u0e49\u0e32\u0e21\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32<\/p>\n<hr data-start=\"5815\" data-end=\"5818\" \/>\n<h2 data-section-id=\"1vgwke4\" data-start=\"5820\" data-end=\"5859\">Step 11 \u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/h2>\n<p data-start=\"5860\" data-end=\"5890\">\u0e19\u0e35\u0e48\u0e04\u0e37\u0e2d\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e08\u0e30\u0e43\u0e0a\u0e49<\/p>\n<p data-start=\"5892\" data-end=\"5923\">\u0e2d\u0e07\u0e04\u0e4c\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e04\u0e27\u0e23\u0e21\u0e35<\/p>\n<ul data-start=\"5924\" data-end=\"6065\">\n<li data-section-id=\"ewm63v\" data-start=\"5924\" data-end=\"5939\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32<\/li>\n<li data-section-id=\"1w5uw77\" data-start=\"5940\" data-end=\"5952\">\u0e27\u0e31\u0e19\u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32<\/li>\n<li data-section-id=\"1xq7mv5\" data-start=\"5953\" data-end=\"5993\">\u0e0a\u0e48\u0e2d\u0e07\u0e01\u0e23\u0e2d\u0e01 session code \u0e2b\u0e23\u0e37\u0e2d\u0e23\u0e31\u0e1a\u0e04\u0e48\u0e32\u0e08\u0e32\u0e01 QR<\/li>\n<li data-section-id=\"154h176\" data-start=\"5994\" data-end=\"6023\">\u0e1b\u0e38\u0e48\u0e21\u0e40\u0e1b\u0e34\u0e14\u0e01\u0e25\u0e49\u0e2d\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b<\/li>\n<li data-section-id=\"1nhccas\" data-start=\"6024\" data-end=\"6049\">\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e17\u0e35\u0e48\u0e15\u0e31\u0e49\u0e07<\/li>\n<li data-section-id=\"13bfy64\" data-start=\"6050\" data-end=\"6065\">\u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/li>\n<\/ul>\n<p data-start=\"6067\" data-end=\"6080\">\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19<\/p>\n<ol data-start=\"6081\" data-end=\"6267\">\n<li data-section-id=\"5cyf09\" data-start=\"6081\" data-end=\"6099\">\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19<\/li>\n<li data-section-id=\"1iuduqn\" data-start=\"6100\" data-end=\"6134\">\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e2d\u0e22\u0e39\u0e48<\/li>\n<li data-section-id=\"178pmdr\" data-start=\"6135\" data-end=\"6160\">\u0e01\u0e23\u0e2d\u0e01 token \u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e41\u0e01\u0e19 QR<\/li>\n<li data-section-id=\"2wssgs\" data-start=\"6161\" data-end=\"6185\">\u0e16\u0e48\u0e32\u0e22\u0e23\u0e39\u0e1b\u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b<\/li>\n<li data-section-id=\"1ezb0aa\" data-start=\"6186\" data-end=\"6207\">\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e2d geolocation<\/li>\n<li data-section-id=\"adb0t\" data-start=\"6208\" data-end=\"6216\">\u0e01\u0e14\u0e2a\u0e48\u0e07<\/li>\n<li data-section-id=\"ereiwn\" data-start=\"6217\" data-end=\"6246\">\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/li>\n<li data-section-id=\"1jta0ww\" data-start=\"6247\" data-end=\"6267\">\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/li>\n<\/ol>\n<hr data-start=\"6269\" data-end=\"6272\" \/>\n<h2 data-section-id=\"a5j7zl\" data-start=\"6274\" data-end=\"6310\">Step 12 \u0e17\u0e33\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b check-in<\/h2>\n<p data-start=\"6311\" data-end=\"6366\">\u0e08\u0e38\u0e14\u0e19\u0e35\u0e49\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e21\u0e32\u0e01\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e25\u0e44\u0e01\u0e2b\u0e25\u0e31\u0e01\u0e43\u0e19\u0e01\u0e32\u0e23\u0e25\u0e14\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e17\u0e19\u0e01\u0e31\u0e19<\/p>\n<p data-start=\"6368\" data-end=\"6386\">\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/p>\n<ul data-start=\"6387\" data-end=\"6540\">\n<li data-section-id=\"46ms3t\" data-start=\"6387\" data-end=\"6415\">\u0e23\u0e31\u0e1a\u0e40\u0e09\u0e1e\u0e32\u0e30 jpg jpeg png webp<\/li>\n<li data-section-id=\"qegg7s\" data-start=\"6416\" data-end=\"6431\">\u0e08\u0e33\u0e01\u0e31\u0e14\u0e02\u0e19\u0e32\u0e14\u0e44\u0e1f\u0e25\u0e4c<\/li>\n<li data-section-id=\"1dw1811\" data-start=\"6432\" data-end=\"6448\">\u0e15\u0e23\u0e27\u0e08 MIME type<\/li>\n<li data-section-id=\"1nfdbf0\" data-start=\"6449\" data-end=\"6475\">\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e2a\u0e38\u0e48\u0e21<\/li>\n<li data-section-id=\"o27l5u\" data-start=\"6476\" data-end=\"6512\">\u0e40\u0e01\u0e47\u0e1a\u0e43\u0e19\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c <code data-start=\"6493\" data-end=\"6512\">uploads\/checkins\/<\/code><\/li>\n<li data-section-id=\"rob9yq\" data-start=\"6513\" data-end=\"6540\">\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c\u0e25\u0e07\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/li>\n<\/ul>\n<p data-start=\"6542\" data-end=\"6597\">\u0e04\u0e27\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23 preview \u0e23\u0e39\u0e1b\u0e01\u0e48\u0e2d\u0e19\u0e2a\u0e48\u0e07 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e44\u0e14\u0e49<\/p>\n<p data-start=\"6599\" data-end=\"6610\">\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e23\u0e23\u0e30\u0e27\u0e31\u0e07<\/p>\n<ul data-start=\"6611\" data-end=\"6741\">\n<li data-section-id=\"1aewqlv\" data-start=\"6611\" data-end=\"6642\">\u0e2b\u0e49\u0e32\u0e21\u0e43\u0e0a\u0e49\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e23\u0e07 \u0e46<\/li>\n<li data-section-id=\"4j3tvn\" data-start=\"6643\" data-end=\"6680\">\u0e2b\u0e49\u0e32\u0e21\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e1f\u0e25\u0e4c executable<\/li>\n<li data-section-id=\"dxmvq6\" data-start=\"6681\" data-end=\"6741\">\u0e04\u0e27\u0e23\u0e43\u0e2a\u0e48 <code data-start=\"6690\" data-end=\"6701\">.htaccess<\/code> \u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19 script \u0e43\u0e19\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c uploads<\/li>\n<\/ul>\n<hr data-start=\"6743\" data-end=\"6746\" \/>\n<h2 data-section-id=\"1at43zy\" data-start=\"6748\" data-end=\"6789\">Step 13 \u0e17\u0e33\u0e23\u0e30\u0e1a\u0e1a\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e40\u0e27\u0e25\u0e32 IP \u0e41\u0e25\u0e30\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c<\/h2>\n<p data-start=\"6790\" data-end=\"6855\">\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d \u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e27\u0e23\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07<\/p>\n<p data-start=\"6857\" data-end=\"6873\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e40\u0e01\u0e47\u0e1a<\/p>\n<ul data-start=\"6874\" data-end=\"6980\">\n<li data-section-id=\"8xsgar\" data-start=\"6874\" data-end=\"6891\">\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/li>\n<li data-section-id=\"1w1hmsn\" data-start=\"6892\" data-end=\"6904\">IP address<\/li>\n<li data-section-id=\"1vxauio\" data-start=\"6905\" data-end=\"6917\">User Agent<\/li>\n<li data-section-id=\"5qj8yw\" data-start=\"6918\" data-end=\"6949\">\u0e0a\u0e37\u0e48\u0e2d\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e42\u0e14\u0e22\u0e2d\u0e49\u0e2d\u0e21\u0e08\u0e32\u0e01 browser<\/li>\n<li data-section-id=\"15hja01\" data-start=\"6950\" data-end=\"6980\">\u0e1e\u0e34\u0e01\u0e31\u0e14 latitude \u0e41\u0e25\u0e30 longitude<\/li>\n<\/ul>\n<p data-start=\"6982\" data-end=\"7025\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e0a\u0e48\u0e27\u0e22\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e1e\u0e1a\u0e01\u0e23\u0e13\u0e35\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34 \u0e40\u0e0a\u0e48\u0e19<\/p>\n<ul data-start=\"7026\" data-end=\"7104\">\n<li data-section-id=\"1hvihz\" data-start=\"7026\" data-end=\"7070\">\u0e2b\u0e25\u0e32\u0e22\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e43\u0e0a\u0e49\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e20\u0e32\u0e22\u0e43\u0e19\u0e40\u0e27\u0e25\u0e32\u0e2a\u0e31\u0e49\u0e19 \u0e46<\/li>\n<li data-section-id=\"1wjiue4\" data-start=\"7071\" data-end=\"7104\">\u0e2b\u0e25\u0e32\u0e22\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e43\u0e0a\u0e49 IP \u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34<\/li>\n<\/ul>\n<hr data-start=\"7106\" data-end=\"7109\" \/>\n<h2 data-section-id=\"skejqi\" data-start=\"7111\" data-end=\"7149\">Step 14 \u0e17\u0e33\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e1e\u0e34\u0e01\u0e31\u0e14\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19<\/h2>\n<p data-start=\"7150\" data-end=\"7191\">\u0e16\u0e49\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e23\u0e31\u0e14\u0e01\u0e38\u0e21\u0e02\u0e36\u0e49\u0e19 \u0e43\u0e2b\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e21 geofence<\/p>\n<p data-start=\"7193\" data-end=\"7205\">\u0e2b\u0e25\u0e31\u0e01\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19<\/p>\n<ul data-start=\"7206\" data-end=\"7390\">\n<li data-section-id=\"1hoh4li\" data-start=\"7206\" data-end=\"7241\">\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e1e\u0e34\u0e01\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19<\/li>\n<li data-section-id=\"7snwga\" data-start=\"7242\" data-end=\"7275\">\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e23\u0e31\u0e28\u0e21\u0e35 \u0e40\u0e0a\u0e48\u0e19 30 \u0e2b\u0e23\u0e37\u0e2d 50 \u0e40\u0e21\u0e15\u0e23<\/li>\n<li data-section-id=\"x9ylb6\" data-start=\"7276\" data-end=\"7312\">\u0e23\u0e30\u0e1a\u0e1a\u0e23\u0e31\u0e1a\u0e1e\u0e34\u0e01\u0e31\u0e14\u0e08\u0e32\u0e01\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/li>\n<li data-section-id=\"1wxlbaj\" data-start=\"7313\" data-end=\"7338\">\u0e04\u0e33\u0e19\u0e27\u0e13\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e08\u0e32\u0e01\u0e08\u0e38\u0e14\u0e01\u0e25\u0e32\u0e07<\/li>\n<li data-section-id=\"gf1879\" data-start=\"7339\" data-end=\"7390\">\u0e16\u0e49\u0e32\u0e40\u0e01\u0e34\u0e19\u0e23\u0e31\u0e28\u0e21\u0e35 \u0e2d\u0e32\u0e08\u0e43\u0e2b\u0e49\u0e2a\u0e16\u0e32\u0e19\u0e30 rejected \u0e2b\u0e23\u0e37\u0e2d suspicious<\/li>\n<\/ul>\n<p data-start=\"7392\" data-end=\"7426\">\u0e08\u0e38\u0e14\u0e19\u0e35\u0e49\u0e0a\u0e48\u0e27\u0e22\u0e44\u0e14\u0e49\u0e21\u0e32\u0e01\u0e43\u0e19\u0e01\u0e23\u0e13\u0e35\u0e40\u0e23\u0e35\u0e22\u0e19 onsite<\/p>\n<hr data-start=\"7428\" data-end=\"7431\" \/>\n<h2 data-section-id=\"r1edz9\" data-start=\"7433\" data-end=\"7475\">Step 15 \u0e17\u0e33\u0e15\u0e23\u0e23\u0e01\u0e30\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e17\u0e19\u0e01\u0e31\u0e19<\/h2>\n<p data-start=\"7476\" data-end=\"7560\">\u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c 100% \u0e41\u0e15\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16 \u201c\u0e25\u0e14\u0e42\u0e2d\u0e01\u0e32\u0e2a\u201d \u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e21\u0e32\u0e01\u0e14\u0e49\u0e27\u0e22\u0e15\u0e23\u0e23\u0e01\u0e30\u0e2b\u0e25\u0e32\u0e22\u0e0a\u0e31\u0e49\u0e19<\/p>\n<p data-start=\"7562\" data-end=\"7580\">\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e15\u0e23\u0e27\u0e08<\/p>\n<ul data-start=\"7581\" data-end=\"7810\">\n<li data-section-id=\"11lest3\" data-start=\"7581\" data-end=\"7608\">\u0e15\u0e49\u0e2d\u0e07\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\u0e14\u0e49\u0e27\u0e22\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e15\u0e19\u0e40\u0e2d\u0e07<\/li>\n<li data-section-id=\"hrf7dm\" data-start=\"7609\" data-end=\"7657\">\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e35\u0e48\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19\u0e43\u0e19\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32\u0e19\u0e31\u0e49\u0e19<\/li>\n<li data-section-id=\"hr2ct2\" data-start=\"7658\" data-end=\"7686\">\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14<\/li>\n<li data-section-id=\"1645cxd\" data-start=\"7687\" data-end=\"7724\">\u0e15\u0e49\u0e2d\u0e07\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e40\u0e04\u0e22\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e19 session \u0e19\u0e35\u0e49<\/li>\n<li data-section-id=\"6jspzn\" data-start=\"7725\" data-end=\"7749\">\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e23\u0e2d\u0e01 token \u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07<\/li>\n<li data-section-id=\"1ck1vr\" data-start=\"7750\" data-end=\"7770\">\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e23\u0e39\u0e1b check-in<\/li>\n<li data-section-id=\"yvwpzu\" data-start=\"7771\" data-end=\"7810\">\u0e16\u0e49\u0e32\u0e21\u0e35 geofence \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e23\u0e30\u0e22\u0e30\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14<\/li>\n<\/ul>\n<p data-start=\"7812\" data-end=\"7843\">\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e01\u0e32\u0e23\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19 suspicious<\/p>\n<ul data-start=\"7844\" data-end=\"7961\">\n<li data-section-id=\"7uuy7p\" data-start=\"7844\" data-end=\"7870\">IP \u0e0b\u0e49\u0e33\u0e2b\u0e25\u0e32\u0e22\u0e04\u0e19\u0e43\u0e19\u0e40\u0e27\u0e25\u0e32\u0e15\u0e34\u0e14\u0e01\u0e31\u0e19<\/li>\n<li data-section-id=\"1p4v712\" data-start=\"7871\" data-end=\"7896\">User Agent \u0e0b\u0e49\u0e33\u0e2b\u0e25\u0e32\u0e22\u0e1a\u0e31\u0e0d\u0e0a\u0e35<\/li>\n<li data-section-id=\"1wrdwqm\" data-start=\"7897\" data-end=\"7918\">\u0e1e\u0e34\u0e01\u0e31\u0e14\u0e2d\u0e22\u0e39\u0e48\u0e19\u0e2d\u0e01\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48<\/li>\n<li data-section-id=\"mimktu\" data-start=\"7919\" data-end=\"7932\">\u0e44\u0e21\u0e48\u0e21\u0e35\u0e23\u0e39\u0e1b\u0e41\u0e19\u0e1a<\/li>\n<li data-section-id=\"1hmu38k\" data-start=\"7933\" data-end=\"7961\">\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e27\u0e25\u0e32\u0e21\u0e32\u0e01\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34<\/li>\n<\/ul>\n<hr data-start=\"7963\" data-end=\"7966\" \/>\n<h2 data-section-id=\"1gyoeas\" data-start=\"7968\" data-end=\"8002\">Step 16 \u0e17\u0e33\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19<\/h2>\n<p data-start=\"8003\" data-end=\"8038\">\u0e04\u0e27\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49\u0e17\u0e33\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19<\/p>\n<p data-start=\"8040\" data-end=\"8053\">\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30<\/p>\n<ul data-start=\"8054\" data-end=\"8206\">\n<li data-section-id=\"1dupqbg\" data-start=\"8054\" data-end=\"8082\"><strong data-start=\"8056\" data-end=\"8067\">present<\/strong> \u0e21\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19\u0e15\u0e23\u0e07\u0e40\u0e27\u0e25\u0e32<\/li>\n<li data-section-id=\"1jnkhbx\" data-start=\"8083\" data-end=\"8099\"><strong data-start=\"8085\" data-end=\"8093\">late<\/strong> \u0e21\u0e32\u0e2a\u0e32\u0e22<\/li>\n<li data-section-id=\"1xe5n66\" data-start=\"8100\" data-end=\"8121\"><strong data-start=\"8102\" data-end=\"8112\">absent<\/strong> \u0e02\u0e32\u0e14\u0e40\u0e23\u0e35\u0e22\u0e19<\/li>\n<li data-section-id=\"wmrbfj\" data-start=\"8122\" data-end=\"8161\"><strong data-start=\"8124\" data-end=\"8136\">rejected<\/strong> \u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e22\u0e2d\u0e21\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/li>\n<li data-section-id=\"b6856c\" data-start=\"8162\" data-end=\"8206\"><strong data-start=\"8164\" data-end=\"8178\">suspicious<\/strong> \u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e27\u0e49\u0e41\u0e15\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07<\/li>\n<\/ul>\n<p data-start=\"8208\" data-end=\"8220\">\u0e2b\u0e25\u0e31\u0e01\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14<\/p>\n<ul data-start=\"8221\" data-end=\"8383\">\n<li data-section-id=\"1p33fsi\" data-start=\"8221\" data-end=\"8264\">\u0e16\u0e49\u0e32 check-in \u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32\u0e1b\u0e01\u0e15\u0e34 = present<\/li>\n<li data-section-id=\"sgte0g\" data-start=\"8265\" data-end=\"8293\">\u0e16\u0e49\u0e32\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e27\u0e25\u0e32\u0e40\u0e25\u0e47\u0e01\u0e19\u0e49\u0e2d\u0e22 = late<\/li>\n<li data-section-id=\"68ywxt\" data-start=\"8294\" data-end=\"8336\">\u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15 = rejected<\/li>\n<li data-section-id=\"b5tdo\" data-start=\"8337\" data-end=\"8383\">\u0e16\u0e49\u0e32\u0e40\u0e02\u0e49\u0e32\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34 = suspicious_flag = 1<\/li>\n<\/ul>\n<hr data-start=\"8385\" data-end=\"8388\" \/>\n<h2 data-section-id=\"1met3z6\" data-start=\"8390\" data-end=\"8437\">Step 17 \u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e1b\u0e23\u0e30\u0e27\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19\u0e02\u0e2d\u0e07\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/h2>\n<p data-start=\"8438\" data-end=\"8467\">\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e04\u0e27\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07\u0e44\u0e14\u0e49<\/p>\n<p data-start=\"8469\" data-end=\"8485\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e41\u0e2a\u0e14\u0e07<\/p>\n<ul data-start=\"8486\" data-end=\"8550\">\n<li data-section-id=\"1i5kq8z\" data-start=\"8486\" data-end=\"8492\">\u0e27\u0e34\u0e0a\u0e32<\/li>\n<li data-section-id=\"iz4t9p\" data-start=\"8493\" data-end=\"8501\">\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48<\/li>\n<li data-section-id=\"1s2b2x5\" data-start=\"8502\" data-end=\"8516\">\u0e40\u0e27\u0e25\u0e32\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d<\/li>\n<li data-section-id=\"bp1mi7\" data-start=\"8517\" data-end=\"8524\">\u0e2a\u0e16\u0e32\u0e19\u0e30<\/li>\n<li data-section-id=\"1cbqa9x\" data-start=\"8525\" data-end=\"8539\">\u0e23\u0e39\u0e1b check-in<\/li>\n<li data-section-id=\"1ygknck\" data-start=\"8540\" data-end=\"8550\">\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38<\/li>\n<\/ul>\n<p data-start=\"8552\" data-end=\"8628\">\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e04\u0e37\u0e2d\u0e0a\u0e48\u0e27\u0e22\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e2b\u0e32\u0e01\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e08\u0e30\u0e44\u0e14\u0e49\u0e41\u0e08\u0e49\u0e07\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c<\/p>\n<hr data-start=\"8630\" data-end=\"8633\" \/>\n<h2 data-section-id=\"mbl39o\" data-start=\"8635\" data-end=\"8668\">Step 18 \u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c<\/h2>\n<p data-start=\"8669\" data-end=\"8715\">\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c\u0e1c\u0e39\u0e49\u0e2a\u0e2d\u0e19 \u0e04\u0e27\u0e23\u0e21\u0e35\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22 3 \u0e41\u0e1a\u0e1a<\/p>\n<h3 data-section-id=\"16lhohy\" data-start=\"8717\" data-end=\"8733\">\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e23\u0e32\u0e22\u0e04\u0e32\u0e1a<\/h3>\n<p data-start=\"8734\" data-end=\"8780\">\u0e41\u0e2a\u0e14\u0e07\u0e27\u0e48\u0e32\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e04\u0e19\u0e44\u0e2b\u0e19\u0e21\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1a\u0e49\u0e32\u0e07\u0e43\u0e19 session \u0e19\u0e31\u0e49\u0e19<\/p>\n<h3 data-section-id=\"1k4q5nl\" data-start=\"8782\" data-end=\"8799\">\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32<\/h3>\n<p data-start=\"8800\" data-end=\"8837\">\u0e2a\u0e23\u0e38\u0e1b\u0e40\u0e1b\u0e2d\u0e23\u0e4c\u0e40\u0e0b\u0e47\u0e19\u0e15\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e04\u0e19<\/p>\n<h3 data-section-id=\"nu3i2l\" data-start=\"8839\" data-end=\"8862\">\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34<\/h3>\n<p data-start=\"8863\" data-end=\"8912\">\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e04\u0e2a\u0e17\u0e35\u0e48 suspicious \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/p>\n<p data-start=\"8914\" data-end=\"8926\">\u0e04\u0e27\u0e23\u0e21\u0e35\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07<\/p>\n<ul data-start=\"8927\" data-end=\"8963\">\n<li data-section-id=\"1rd6h8w\" data-start=\"8927\" data-end=\"8936\">\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32<\/li>\n<li data-section-id=\"1wffpj5\" data-start=\"8937\" data-end=\"8946\">section<\/li>\n<li data-section-id=\"iz4t9p\" data-start=\"8947\" data-end=\"8955\">\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48<\/li>\n<li data-section-id=\"bp1mi7\" data-start=\"8956\" data-end=\"8963\">\u0e2a\u0e16\u0e32\u0e19\u0e30<\/li>\n<\/ul>\n<hr data-start=\"8965\" data-end=\"8968\" \/>\n<h2 data-section-id=\"1s9ootm\" data-start=\"8970\" data-end=\"8998\">Step 19 \u0e17\u0e33\u0e23\u0e30\u0e1a\u0e1a Export CSV<\/h2>\n<p data-start=\"8999\" data-end=\"9035\">\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e41\u0e25\u0e49\u0e27 \u0e04\u0e27\u0e23\u0e21\u0e35\u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01<\/p>\n<p data-start=\"9037\" data-end=\"9059\">\u0e44\u0e1f\u0e25\u0e4c CSV \u0e04\u0e27\u0e23\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\u0e14\u0e49\u0e27\u0e22<\/p>\n<ul data-start=\"9060\" data-end=\"9123\">\n<li data-section-id=\"hnnvjq\" data-start=\"9060\" data-end=\"9074\">\u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32<\/li>\n<li data-section-id=\"1i5cank\" data-start=\"9075\" data-end=\"9081\">\u0e0a\u0e37\u0e48\u0e2d<\/li>\n<li data-section-id=\"1i5kq8z\" data-start=\"9082\" data-end=\"9088\">\u0e27\u0e34\u0e0a\u0e32<\/li>\n<li data-section-id=\"iz4t9p\" data-start=\"9089\" data-end=\"9097\">\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48<\/li>\n<li data-section-id=\"1i8s4xk\" data-start=\"9098\" data-end=\"9104\">\u0e40\u0e27\u0e25\u0e32<\/li>\n<li data-section-id=\"bp1mi7\" data-start=\"9105\" data-end=\"9112\">\u0e2a\u0e16\u0e32\u0e19\u0e30<\/li>\n<li data-section-id=\"1ygknck\" data-start=\"9113\" data-end=\"9123\">\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38<\/li>\n<\/ul>\n<p data-start=\"9125\" data-end=\"9171\">\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e19\u0e33\u0e44\u0e1b\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e19 Excel \u0e44\u0e14\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35<\/p>\n<hr data-start=\"9173\" data-end=\"9176\" \/>\n<h2 data-section-id=\"1fx71wh\" data-start=\"9178\" data-end=\"9209\">Step 20 \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22<\/h2>\n<p data-start=\"9210\" data-end=\"9253\">\u0e01\u0e48\u0e2d\u0e19\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19 \u0e15\u0e49\u0e2d\u0e07\u0e40\u0e2a\u0e23\u0e34\u0e21\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a<\/p>\n<p data-start=\"9255\" data-end=\"9267\">\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e21\u0e35<\/p>\n<ul data-start=\"9268\" data-end=\"9510\">\n<li data-section-id=\"7stglb\" data-start=\"9268\" data-end=\"9299\">Prepared Statements \u0e17\u0e38\u0e01 query<\/li>\n<li data-section-id=\"1wt9mzg\" data-start=\"9300\" data-end=\"9323\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a input \u0e17\u0e38\u0e01\u0e0a\u0e48\u0e2d\u0e07<\/li>\n<li data-section-id=\"1qlaw4v\" data-start=\"9324\" data-end=\"9363\">\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19 XSS \u0e14\u0e49\u0e27\u0e22 <code data-start=\"9343\" data-end=\"9363\">htmlspecialchars()<\/code><\/li>\n<li data-section-id=\"1tyqjrl\" data-start=\"9364\" data-end=\"9384\">CSRF token \u0e43\u0e19\u0e1f\u0e2d\u0e23\u0e4c\u0e21<\/li>\n<li data-section-id=\"1te26r5\" data-start=\"9385\" data-end=\"9419\">Session regeneration \u0e2b\u0e25\u0e31\u0e07\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19<\/li>\n<li data-section-id=\"b3ojkc\" data-start=\"9420\" data-end=\"9441\">\u0e08\u0e33\u0e01\u0e31\u0e14\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e15\u0e32\u0e21 role<\/li>\n<li data-section-id=\"1r1yhef\" data-start=\"9442\" data-end=\"9469\">\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e2d\u0e31\u0e19\u0e15\u0e23\u0e32\u0e22<\/li>\n<li data-section-id=\"13xniq8\" data-start=\"9470\" data-end=\"9510\">\u0e0b\u0e48\u0e2d\u0e19 error \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e27\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e1a\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e08\u0e23\u0e34\u0e07<\/li>\n<\/ul>\n<hr data-start=\"9512\" data-end=\"9515\" \/>\n<h2 data-section-id=\"1wwm0xg\" data-start=\"9517\" data-end=\"9549\">Step 21 \u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e41\u0e1a\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e25\u0e33\u0e14\u0e31\u0e1a<\/h2>\n<p data-start=\"9550\" data-end=\"9605\">\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e40\u0e2a\u0e23\u0e47\u0e08 \u0e2d\u0e22\u0e48\u0e32\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e23\u0e35\u0e1a\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e08\u0e23\u0e34\u0e07 \u0e04\u0e27\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e25\u0e30\u0e01\u0e23\u0e13\u0e35<\/p>\n<h3 data-section-id=\"1jq5bnj\" data-start=\"9607\" data-end=\"9629\">\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1b\u0e01\u0e15\u0e34<\/h3>\n<ul data-start=\"9630\" data-end=\"9775\">\n<li data-section-id=\"10fxz9c\" data-start=\"9630\" data-end=\"9649\">\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48<\/li>\n<li data-section-id=\"eqwo3n\" data-start=\"9650\" data-end=\"9674\">\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48<\/li>\n<li data-section-id=\"ov24pc\" data-start=\"9675\" data-end=\"9702\">\u0e40\u0e1b\u0e34\u0e14\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48<\/li>\n<li data-section-id=\"c181e\" data-start=\"9703\" data-end=\"9731\">\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48<\/li>\n<li data-section-id=\"1nxw9g0\" data-start=\"9732\" data-end=\"9754\">\u0e23\u0e39\u0e1b\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48<\/li>\n<li data-section-id=\"1egi3do\" data-start=\"9755\" data-end=\"9775\">\u0e14\u0e39\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48<\/li>\n<\/ul>\n<h3 data-section-id=\"lgraot\" data-start=\"9777\" data-end=\"9797\">\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e23\u0e13\u0e35\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14<\/h3>\n<ul data-start=\"9798\" data-end=\"9902\">\n<li data-section-id=\"mxz2lk\" data-start=\"9798\" data-end=\"9811\">\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e0b\u0e49\u0e33<\/li>\n<li data-section-id=\"1crhxsf\" data-start=\"9812\" data-end=\"9823\">token \u0e1c\u0e34\u0e14<\/li>\n<li data-section-id=\"7ufx4r\" data-start=\"9824\" data-end=\"9839\">\u0e44\u0e21\u0e48\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b<\/li>\n<li data-section-id=\"1ds3v6b\" data-start=\"9840\" data-end=\"9853\">\u0e2d\u0e22\u0e39\u0e48\u0e19\u0e2d\u0e01\u0e40\u0e27\u0e25\u0e32<\/li>\n<li data-section-id=\"1t65bbk\" data-start=\"9854\" data-end=\"9870\">\u0e2d\u0e22\u0e39\u0e48\u0e19\u0e2d\u0e01\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48<\/li>\n<li data-section-id=\"qvd6t8\" data-start=\"9871\" data-end=\"9902\">\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e40\u0e02\u0e49\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e31\u0e49\u0e19<\/li>\n<\/ul>\n<h3 data-section-id=\"x1of9m\" data-start=\"9904\" data-end=\"9928\">\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e14\u0e49\u0e32\u0e19\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22<\/h3>\n<ul data-start=\"9929\" data-end=\"10036\">\n<li data-section-id=\"rekdsh\" data-start=\"9929\" data-end=\"9944\">SQL injection<\/li>\n<li data-section-id=\"13payau\" data-start=\"9945\" data-end=\"9967\">\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e1c\u0e34\u0e14\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17<\/li>\n<li data-section-id=\"1dfagdc\" data-start=\"9968\" data-end=\"9998\">\u0e40\u0e02\u0e49\u0e32\u0e2b\u0e19\u0e49\u0e32 admin \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19<\/li>\n<li data-section-id=\"74r4bw\" data-start=\"9999\" data-end=\"10036\">\u0e41\u0e01\u0e49 URL \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c<\/li>\n<\/ul>\n<hr data-start=\"10038\" data-end=\"10041\" \/>\n<h2 data-section-id=\"1i5deud\" data-start=\"10043\" data-end=\"10083\">Step 22 \u0e1b\u0e23\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e32\u0e41\u0e25\u0e30\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19<\/h2>\n<p data-start=\"10084\" data-end=\"10146\">\u0e2b\u0e25\u0e31\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e41\u0e25\u0e49\u0e27 \u0e04\u0e27\u0e23\u0e1b\u0e23\u0e31\u0e1a UI \u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e07\u0e48\u0e32\u0e22 \u0e42\u0e14\u0e22\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e1a\u0e19\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d<\/p>\n<p data-start=\"10148\" data-end=\"10163\">\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21<\/p>\n<ul data-start=\"10164\" data-end=\"10309\">\n<li data-section-id=\"b83ssk\" data-start=\"10164\" data-end=\"10193\">\u0e1b\u0e38\u0e48\u0e21\u0e02\u0e19\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a check-in<\/li>\n<li data-section-id=\"1eq7e26\" data-start=\"10194\" data-end=\"10217\">\u0e41\u0e2a\u0e14\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e14\u0e49\u0e27\u0e22\u0e2a\u0e35<\/li>\n<li data-section-id=\"1x5feez\" data-start=\"10218\" data-end=\"10235\">\u0e41\u0e2a\u0e14\u0e07\u0e23\u0e39\u0e1b preview<\/li>\n<li data-section-id=\"khi7n6\" data-start=\"10236\" data-end=\"10256\">\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d<\/li>\n<li data-section-id=\"1yr00jb\" data-start=\"10257\" data-end=\"10278\">\u0e15\u0e32\u0e23\u0e32\u0e07\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e2d\u0e48\u0e32\u0e19\u0e07\u0e48\u0e32\u0e22<\/li>\n<li data-section-id=\"w4g69x\" data-start=\"10279\" data-end=\"10309\">\u0e43\u0e0a\u0e49 Bootstrap 5 \u0e43\u0e2b\u0e49\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22<\/li>\n<\/ul>\n<hr data-start=\"10311\" data-end=\"10314\" \/>\n<h2 data-section-id=\"bb37rm\" data-start=\"10316\" data-end=\"10361\">Step 23 \u0e08\u0e31\u0e14\u0e17\u0e33\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e25\u0e30\u0e04\u0e39\u0e48\u0e21\u0e37\u0e2d\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07<\/h2>\n<p data-start=\"10362\" data-end=\"10425\">\u0e01\u0e48\u0e2d\u0e19\u0e2a\u0e48\u0e07\u0e07\u0e32\u0e19\u0e43\u0e2b\u0e49 Codex \u0e08\u0e1a \u0e04\u0e27\u0e23\u0e01\u0e33\u0e0a\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e25\u0e30 README<\/p>\n<p data-start=\"10427\" data-end=\"10446\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e04\u0e27\u0e23\u0e21\u0e35<\/p>\n<ul data-start=\"10447\" data-end=\"10542\">\n<li data-section-id=\"vu570r\" data-start=\"10447\" data-end=\"10459\">admin 1 \u0e04\u0e19<\/li>\n<li data-section-id=\"1fdyu89\" data-start=\"10460\" data-end=\"10477\">instructor 1 \u0e04\u0e19<\/li>\n<li data-section-id=\"1mfij1l\" data-start=\"10478\" data-end=\"10494\">student 3\u20135 \u0e04\u0e19<\/li>\n<li data-section-id=\"1hb5uuj\" data-start=\"10495\" data-end=\"10513\">\u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32 1\u20132 \u0e27\u0e34\u0e0a\u0e32<\/li>\n<li data-section-id=\"dy599p\" data-start=\"10514\" data-end=\"10542\">attendance session 1\u20132 \u0e04\u0e32\u0e1a<\/li>\n<\/ul>\n<p data-start=\"10544\" data-end=\"10560\">README \u0e04\u0e27\u0e23\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22<\/p>\n<ul data-start=\"10561\" data-end=\"10672\">\n<li data-section-id=\"1vmdvc3\" data-start=\"10561\" data-end=\"10581\">\u0e27\u0e34\u0e18\u0e35\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/li>\n<li data-section-id=\"1deavav\" data-start=\"10582\" data-end=\"10604\">\u0e27\u0e34\u0e18\u0e35 import \u0e44\u0e1f\u0e25\u0e4c SQL<\/li>\n<li data-section-id=\"8p0q6g\" data-start=\"10605\" data-end=\"10625\">\u0e27\u0e34\u0e18\u0e35\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 config<\/li>\n<li data-section-id=\"ftfhhm\" data-start=\"10626\" data-end=\"10643\">\u0e27\u0e34\u0e18\u0e35\u0e23\u0e31\u0e19\u0e1a\u0e19 XAMPP<\/li>\n<li data-section-id=\"1b70xhb\" data-start=\"10644\" data-end=\"10672\">username\/password \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07<\/li>\n<\/ul>\n<hr data-start=\"10674\" data-end=\"10677\" \/>\n<h1 data-section-id=\"1r4y06u\" data-start=\"10679\" data-end=\"10708\">\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e48\u0e07 Codex \u0e17\u0e35\u0e48\u0e41\u0e19\u0e30\u0e19\u0e33<\/h1>\n<p data-start=\"10709\" data-end=\"10769\">\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49 Codex \u0e17\u0e33\u0e07\u0e32\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e31\u0e49\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e2d\u0e19 \u0e04\u0e27\u0e23\u0e2a\u0e31\u0e48\u0e07\u0e40\u0e1b\u0e47\u0e19 phase \u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49<\/p>\n<h2 data-section-id=\"ip9ol7\" data-start=\"10771\" data-end=\"10781\">Phase 1<\/h2>\n<p data-start=\"10782\" data-end=\"10823\">\u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e01\u0e15\u0e4c\u0e41\u0e25\u0e30\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19<\/p>\n<h2 data-section-id=\"ip9ol4\" data-start=\"10825\" data-end=\"10835\">Phase 2<\/h2>\n<p data-start=\"10836\" data-end=\"10876\">\u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\u0e41\u0e25\u0e30 role-based access<\/p>\n<h2 data-section-id=\"ip9ol5\" data-start=\"10878\" data-end=\"10888\">Phase 3<\/h2>\n<p data-start=\"10889\" data-end=\"10946\">\u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c \u0e23\u0e32\u0e22\u0e27\u0e34\u0e0a\u0e32 \u0e41\u0e25\u0e30 enrollment<\/p>\n<h2 data-section-id=\"ip9ola\" data-start=\"10948\" data-end=\"10958\">Phase 4<\/h2>\n<p data-start=\"10959\" data-end=\"11007\">\u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07 attendance session \u0e41\u0e25\u0e30 QR\/session token<\/p>\n<h2 data-section-id=\"ip9olb\" data-start=\"11009\" data-end=\"11019\">Phase 5<\/h2>\n<p data-start=\"11020\" data-end=\"11061\">\u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07 student check-in \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b<\/p>\n<h2 data-section-id=\"ip9ol8\" data-start=\"11063\" data-end=\"11073\">Phase 6<\/h2>\n<p data-start=\"11074\" data-end=\"11134\">\u0e43\u0e2b\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e40\u0e01\u0e47\u0e1a IP, user agent, geolocation, suspicious flag<\/p>\n<h2 data-section-id=\"ip9ol9\" data-start=\"11136\" data-end=\"11146\">Phase 7<\/h2>\n<p data-start=\"11147\" data-end=\"11175\">\u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e41\u0e25\u0e30 export CSV<\/p>\n<h2 data-section-id=\"ip9oky\" data-start=\"11177\" data-end=\"11187\">Phase 8<\/h2>\n<p data-start=\"11188\" data-end=\"11214\">\u0e43\u0e2b\u0e49\u0e1b\u0e23\u0e31\u0e1a UI \u0e41\u0e25\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19 README<\/p>\n<hr data-start=\"11216\" data-end=\"11219\" \/>\n<h1 data-section-id=\"2iyfxy\" data-start=\"11221\" data-end=\"11262\">\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07 Prompt \u0e41\u0e1a\u0e1a\u0e2a\u0e31\u0e48\u0e07 Codex \u0e17\u0e35\u0e25\u0e30 Step<\/h1>\n<p data-start=\"11263\" data-end=\"11296\">\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e0a\u0e38\u0e14\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\">Step 1: Create the project folder structure for a PHP 8 + MySQL attendance system.<br \/>\nStep 2: Create the MySQL schema with users, students, instructors, courses, enrollments, attendance_sessions, attendance_records, and suspicious_logs.<br \/>\nStep 3: Build authentication with login, logout, password hashing, and role-based session control.<br \/>\nStep 4: Build admin pages to manage students, instructors, and courses.<br \/>\nStep 5: Build instructor pages to create attendance sessions with start time, end time, token, and optional geofence.<br \/>\nStep 6: Build student pages to check in using token, photo upload, and optional geolocation.<br \/>\nStep 7: Save attendance records with timestamp, IP, user agent, photo, and suspicious flag.<br \/>\nStep 8: Build attendance reports and CSV export.<br \/>\nStep 9: Add Bootstrap 5 UI and README for XAMPP setup.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"12123\" data-end=\"12126\" \/>\n<h1 data-section-id=\"1krxzts\" data-start=\"12128\" data-end=\"12148\">\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e40\u0e0a\u0e34\u0e07\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34<\/h1>\n<p data-start=\"12149\" data-end=\"12264\">\u0e16\u0e49\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e08\u0e23\u0e34\u0e07\u0e43\u0e19\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19 \u0e1c\u0e21\u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e34\u0e48\u0e21\u0e08\u0e32\u0e01 <strong data-start=\"12210\" data-end=\"12233\">\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19\u0e01\u0e48\u0e2d\u0e19<\/strong> \u0e41\u0e25\u0e49\u0e27\u0e04\u0e48\u0e2d\u0e22\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e21\u0e07\u0e27\u0e14\u0e17\u0e35\u0e2b\u0e25\u0e31\u0e07<\/p>\n<p data-start=\"12266\" data-end=\"12423\">\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e2a\u0e21\u0e04\u0e37\u0e2d<br data-start=\"12284\" data-end=\"12287\" \/><strong data-start=\"12287\" data-end=\"12361\">\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19 + \u0e40\u0e1b\u0e34\u0e14\u0e23\u0e2d\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d + \u0e23\u0e39\u0e1b check-in + \u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e0b\u0e49\u0e33 + \u0e23\u0e32\u0e22\u0e07\u0e32\u0e19<\/strong><br data-start=\"12361\" data-end=\"12364\" \/>\u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e04\u0e48\u0e2d\u0e22\u0e40\u0e1e\u0e34\u0e48\u0e21<br data-start=\"12380\" data-end=\"12383\" \/><strong data-start=\"12383\" data-end=\"12423\">QR code + GPS + suspicious detection<\/strong><\/p>\n<p data-start=\"12425\" data-end=\"12512\">\u0e41\u0e19\u0e27\u0e17\u0e32\u0e07\u0e19\u0e35\u0e49\u0e08\u0e30\u0e0a\u0e48\u0e27\u0e22\u0e43\u0e2b\u0e49\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e40\u0e23\u0e47\u0e27 \u0e41\u0e25\u0e30\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e44\u0e14\u0e49\u0e07\u0e48\u0e32\u0e22\u0e01\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e43\u0e2a\u0e48\u0e17\u0e38\u0e01\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e27\u0e31\u0e19\u0e41\u0e23\u0e01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0e01\u0e32\u0e23\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e0a\u0e47\u0e04\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e40\u0e23\u0e35\u0e22\u0e19 (Classroom attendance management system) \u0e04\u0e27\u0e32\u0e21\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 Tech stack: &#8211; ChatGPT \u0e17\u0e35\u0e48\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Add-ons Codex \u0e41\u0e25\u0e49\u0e27 \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14 Codex \u0e44\u0e14\u0e49\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48\u00a0 &#8211; PHP 8.x (plain PHP, no framework) &#8211; MySQL 8.x &#8211; Bootstrap 5 &#8211; JavaScript (vanilla JS) &#8211; PDO for database access &#8211; Responsive UI &#8211; Compatible with XAMPP \u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19 Step 1 \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e40\u0e23\u0e34\u0e48\u0e21\u0e08\u0e32\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e01\u0e48\u0e2d\u0e19\u0e27\u0e48\u0e32 \u0e23\u0e30\u0e1a\u0e1a\u0e19\u0e35\u0e49\u0e08\u0e30\u0e17\u0e33\u0e2d\u0e30\u0e44\u0e23\u0e1a\u0e49\u0e32\u0e07 \u0e41\u0e25\u0e30\u0e43\u0e04\u0e23\u0e40\u0e1b\u0e47\u0e19\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2b\u0e25\u0e31\u0e01 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e25\u0e30\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e44\u0e21\u0e48\u0e2a\u0e31\u0e1a\u0e2a\u0e19\u0e20\u0e32\u0e22\u0e2b\u0e25\u0e31\u0e07 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2b\u0e25\u0e31\u0e01\u0e04\u0e27\u0e23\u0e21\u0e35 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1433,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[128,180],"tags":[182,116,183,184],"class_list":["post-1425","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-chatgpt","tag-apps-classroom-attendance","tag-chatgpt","tag-classroom-attendance","tag-codex"],"_links":{"self":[{"href":"https:\/\/arnut.com\/home\/wp-json\/wp\/v2\/posts\/1425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arnut.com\/home\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arnut.com\/home\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arnut.com\/home\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/arnut.com\/home\/wp-json\/wp\/v2\/comments?post=1425"}],"version-history":[{"count":6,"href":"https:\/\/arnut.com\/home\/wp-json\/wp\/v2\/posts\/1425\/revisions"}],"predecessor-version":[{"id":1434,"href":"https:\/\/arnut.com\/home\/wp-json\/wp\/v2\/posts\/1425\/revisions\/1434"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/arnut.com\/home\/wp-json\/wp\/v2\/media\/1433"}],"wp:attachment":[{"href":"https:\/\/arnut.com\/home\/wp-json\/wp\/v2\/media?parent=1425"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arnut.com\/home\/wp-json\/wp\/v2\/categories?post=1425"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arnut.com\/home\/wp-json\/wp\/v2\/tags?post=1425"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}