├── admin ├── index.php ├── qrimage │ ├── qrcode1572272668.png │ ├── qrcode1573490880.png │ ├── qrcode1573970792.png │ ├── qrcode1573970995.png │ ├── qrcode1574191051.png │ ├── qrcode1574193111.png │ ├── qrcode1574330616.png │ ├── qrcode1574330739.png │ ├── qrcode1574331133.png │ ├── qrcode1574348814.png │ ├── qrcode1574349023.png │ ├── qrcode1574412960.png │ ├── qrcode1574413504.png │ ├── qrcode1574414049.png │ ├── qrcode1574414347.png │ ├── qrcode1574416653.png │ ├── qrcode1574424528.png │ ├── qrcode1574430531.png │ ├── qrcode1574430618.png │ ├── qrcode1574431309.png │ ├── qrcode1574705392.png │ ├── qrcode1574705506.png │ ├── qrcode1574712045.png │ ├── qrcode1574743724.png │ ├── qrcode1574749013.png │ ├── qrcode1574749315.png │ ├── qrcode1574750228.png │ ├── qrcode1574750297.png │ ├── qrcode1574772575.png │ ├── qrcode1574919441.png │ ├── qrcode1575954127.png │ ├── qrcode1579190471.png │ ├── qrcode1579584397.png │ ├── qrcode1579589719.png │ └── qrcode1573970979.png ├── connect.php ├── qr.php ├── register.php ├── admin_home.php ├── emp_details.php ├── details.php ├── updatedept.php ├── department.php ├── report.php ├── generateid.php ├── updateemp.php └── reg_employee.php ├── index.php ├── supervisor ├── index.php ├── qrimage │ ├── qrcode1572272668.png │ ├── qrcode1573490880.png │ ├── qrcode1573970792.png │ ├── qrcode1573970995.png │ ├── qrcode1574410460.png │ ├── qrcode1574414766.png │ ├── qrcode1574415829.png │ ├── qrcode1574415943.png │ ├── qrcode1574416512.png │ ├── qrcode1574416780.png │ ├── qrcode1574422809.png │ ├── qrcode1574422962.png │ ├── qrcode1574422966.png │ ├── qrcode1574424869.png │ ├── qrcode1574583107.png │ ├── qrcode1574690848.png │ ├── qrcode1574691588.png │ ├── qrcode1574750587.png │ ├── qrcode1574750724.png │ ├── qrcode1574824442.png │ ├── qrcode1574412982.jpg.png │ ├── qrcode1574412991.jpg.png │ ├── qrcode1574413406.jpg.png │ ├── qrcode1574413825.jpg.png │ ├── qrcode1574413923.jpg.png │ ├── qrcode1574413929.jpg.png │ └── qrcode1573970979.png ├── connect.php ├── qr.php ├── register.php ├── supervisor_home.php ├── emp_details.php ├── details.php ├── report.php ├── generateid.php ├── updateemp.php └── reg_employee.php ├── audio └── scan.mp3 ├── emp_photo ├── dot.jpg └── Screenshot (9).png ├── logout.php ├── qrimage └── img │ ├── qrcode1542185204.png │ ├── qrcode1542185695.png │ ├── qrcode1542188843.png │ ├── qrcode1542273715.png │ ├── qrcode1542552967.png │ ├── qrcode1543323659.png │ ├── qrcode1544692835.png │ └── qrcode1544698675.png ├── Menu Design and Database design.pdf ├── connect.php ├── forget.php ├── attendance.php ├── js ├── camera.js ├── visibility.min.js ├── FileSaver.min.js ├── store.min.js ├── qr.js ├── clipboard.min.js ├── app.js └── scanner.js ├── validatingemail.php ├── resetpass.php ├── changepassword.php ├── verify.php ├── login.php ├── scancode.php ├── style.css ├── scans.php ├── README.md ├── report.php └── processing.php /admin/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /supervisor/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /audio/scan.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/audio/scan.mp3 -------------------------------------------------------------------------------- /emp_photo/dot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/emp_photo/dot.jpg -------------------------------------------------------------------------------- /logout.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /emp_photo/Screenshot (9).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/emp_photo/Screenshot (9).png -------------------------------------------------------------------------------- /qrimage/img/qrcode1542185204.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/qrimage/img/qrcode1542185204.png -------------------------------------------------------------------------------- /qrimage/img/qrcode1542185695.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/qrimage/img/qrcode1542185695.png -------------------------------------------------------------------------------- /qrimage/img/qrcode1542188843.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/qrimage/img/qrcode1542188843.png -------------------------------------------------------------------------------- /qrimage/img/qrcode1542273715.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/qrimage/img/qrcode1542273715.png -------------------------------------------------------------------------------- /qrimage/img/qrcode1542552967.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/qrimage/img/qrcode1542552967.png -------------------------------------------------------------------------------- /qrimage/img/qrcode1543323659.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/qrimage/img/qrcode1543323659.png -------------------------------------------------------------------------------- /qrimage/img/qrcode1544692835.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/qrimage/img/qrcode1544692835.png -------------------------------------------------------------------------------- /qrimage/img/qrcode1544698675.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/qrimage/img/qrcode1544698675.png -------------------------------------------------------------------------------- /Menu Design and Database design.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/Menu Design and Database design.pdf -------------------------------------------------------------------------------- /admin/qrimage/qrcode1572272668.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1572272668.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1573490880.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1573490880.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1573970792.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1573970792.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1573970995.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1573970995.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574191051.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574191051.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574193111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574193111.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574330616.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574330616.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574330739.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574330739.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574331133.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574331133.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574348814.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574348814.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574349023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574349023.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574412960.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574412960.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574413504.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574413504.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574414049.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574414049.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574414347.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574414347.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574416653.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574416653.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574424528.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574424528.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574430531.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574430531.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574430618.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574430618.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574431309.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574431309.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574705392.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574705392.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574705506.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574705506.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574712045.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574712045.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574743724.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574743724.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574749013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574749013.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574749315.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574749315.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574750228.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574750228.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574750297.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574750297.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574772575.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574772575.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1574919441.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1574919441.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1575954127.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1575954127.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1579190471.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1579190471.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1579584397.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1579584397.png -------------------------------------------------------------------------------- /admin/qrimage/qrcode1579589719.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/admin/qrimage/qrcode1579589719.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1572272668.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1572272668.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1573490880.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1573490880.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1573970792.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1573970792.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1573970995.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1573970995.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574410460.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574410460.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574414766.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574414766.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574415829.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574415829.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574415943.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574415943.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574416512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574416512.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574416780.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574416780.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574422809.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574422809.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574422962.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574422962.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574422966.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574422966.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574424869.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574424869.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574583107.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574583107.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574690848.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574690848.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574691588.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574691588.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574750587.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574750587.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574750724.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574750724.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574824442.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574824442.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574412982.jpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574412982.jpg.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574412991.jpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574412991.jpg.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574413406.jpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574413406.jpg.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574413825.jpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574413825.jpg.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574413923.jpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574413923.jpg.png -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1574413929.jpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xdiad47/QR_Employee_Attendance_System/HEAD/supervisor/qrimage/qrcode1574413929.jpg.png -------------------------------------------------------------------------------- /admin/connect.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /connect.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /supervisor/connect.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /forget.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /attendance.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Checking Requirement 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |
18 | 19 |

Oops, Something went wrong

20 |

The code did not match !

21 | Get Back to Scan Again 22 |
23 | 24 |
25 |
26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /admin/qr.php: -------------------------------------------------------------------------------- 1 | _data = "{$url}"; 12 | } 13 | 14 | 15 | public function content($type = null, $size = null, $content = null) { 16 | $this->_data = "CNTS:TYPE:{$type};LNG:{$size};BODY:{$content};;"; 17 | } 18 | 19 | 20 | public function generate($size = 200, $filename = null) { 21 | $ch = curl_init(); 22 | curl_setopt($ch, CURLOPT_URL, self::API_CHART_URL); 23 | curl_setopt($ch, CURLOPT_POST, true); 24 | curl_setopt($ch, CURLOPT_POSTFIELDS, "chs={$size}x{$size}&cht=qr&chl=" . urlencode($this->_data)); 25 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 26 | curl_setopt($ch, CURLOPT_HEADER, false); 27 | curl_setopt($ch, CURLOPT_TIMEOUT, 30); 28 | $img = curl_exec($ch); 29 | curl_close($ch); 30 | if($img) { 31 | if($filename) { 32 | if(!preg_match("#\.png$#i", $filename)) { 33 | $filename .= ".png"; 34 | } 35 | return file_put_contents($filename, $img); 36 | } else { 37 | header("Content-type: image/png"); 38 | print $img; 39 | return true; 40 | } 41 | } 42 | return false; 43 | } 44 | public function url($url = null) { 45 | $this->_data = preg_match("#^https?\:\/\/#", $url) ? $url : "http://{$url}"; 46 | } 47 | 48 | 49 | } 50 | 51 | ?> -------------------------------------------------------------------------------- /supervisor/qr.php: -------------------------------------------------------------------------------- 1 | _data = "{$url}"; 12 | } 13 | 14 | 15 | public function content($type = null, $size = null, $content = null) { 16 | $this->_data = "CNTS:TYPE:{$type};LNG:{$size};BODY:{$content};;"; 17 | } 18 | 19 | 20 | public function generate($size = 200, $filename = null) { 21 | $ch = curl_init(); 22 | curl_setopt($ch, CURLOPT_URL, self::API_CHART_URL); 23 | curl_setopt($ch, CURLOPT_POST, true); 24 | curl_setopt($ch, CURLOPT_POSTFIELDS, "chs={$size}x{$size}&cht=qr&chl=" . urlencode($this->_data)); 25 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 26 | curl_setopt($ch, CURLOPT_HEADER, false); 27 | curl_setopt($ch, CURLOPT_TIMEOUT, 30); 28 | $img = curl_exec($ch); 29 | curl_close($ch); 30 | if($img) { 31 | if($filename) { 32 | if(!preg_match("#\.png$#i", $filename)) { 33 | $filename .= ".png"; 34 | } 35 | return file_put_contents($filename, $img); 36 | } else { 37 | header("Content-type: image/png"); 38 | print $img; 39 | return true; 40 | } 41 | } 42 | return false; 43 | } 44 | public function url($url = null) { 45 | $this->_data = preg_match("#^https?\:\/\/#", $url) ? $url : "http://{$url}"; 46 | } 47 | 48 | 49 | } 50 | 51 | ?> -------------------------------------------------------------------------------- /js/camera.js: -------------------------------------------------------------------------------- 1 | function Camera(id, name) { 2 | var self = this; 3 | 4 | this.id = id; 5 | this.name = name; 6 | this.stream = null; 7 | 8 | this.start = function (callback) { 9 | var constraints = { 10 | audio: false, 11 | video: { 12 | mandatory: { 13 | sourceId: this.id, 14 | minWidth: 600, 15 | maxWidth: 800, 16 | minAspectRatio: 1.6 17 | }, 18 | optional: [] 19 | } 20 | }; 21 | 22 | navigator.webkitGetUserMedia(constraints, function (stream) { 23 | self.stream = stream; 24 | var streamUrl = window.URL.createObjectURL(stream); 25 | callback(null, streamUrl); 26 | }, function (err) { 27 | callback(err, null); 28 | }); 29 | }; 30 | 31 | this.stop = function () { 32 | if (this.stream) { 33 | for (let stream of this.stream.getVideoTracks()) { 34 | stream.stop(); 35 | } 36 | 37 | this.stream = null; 38 | } 39 | }; 40 | } 41 | 42 | function cleanLabel(label) { 43 | var clean = label.replace(/\s*\([0-9a-f]+(:[0-9a-f]+)?\)\s*$/, ''); 44 | return clean || label; 45 | } 46 | 47 | Camera.getCameras = function (callback) { 48 | navigator.mediaDevices.enumerateDevices() 49 | .then(function (devices) { 50 | var results = devices 51 | .filter(d => d.kind === 'videoinput') 52 | .map(d => new Camera(d.deviceId, cleanLabel(d.label))); 53 | 54 | callback(null, results); 55 | }) 56 | .catch(function (err) { 57 | callback(err, null); 58 | }); 59 | }; 60 | -------------------------------------------------------------------------------- /admin/qrimage/qrcode1573970979.png: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Error 502 (Server Error)!!1 6 | 9 | 10 |

502. That’s an error. 11 |

The server encountered a temporary error and could not complete your request.

Please try again in 30 seconds. That’s all we know. 12 | -------------------------------------------------------------------------------- /supervisor/qrimage/qrcode1573970979.png: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Error 502 (Server Error)!!1 6 | 9 | 10 |

502. That’s an error. 11 |

The server encountered a temporary error and could not complete your request.

Please try again in 30 seconds. That’s all we know. 12 | -------------------------------------------------------------------------------- /validatingemail.php: -------------------------------------------------------------------------------- 1 | 2 | email=$a; 11 | $sql="SELECT * from super_admin WHERE email_id='$this->email'"; 12 | $res = mysqli_query($conn, $sql); 13 | $row=mysqli_num_rows($res); 14 | if($row == 1){ 15 | $r = mysqli_fetch_assoc($res); 16 | $otp=rand(0000,9999); 17 | $to = $r['email_id']; 18 | $_SESSION['email']=$to; 19 | $id = $r['admin_id']; 20 | $subject = "Password Recovery"; 21 | $message = "Please use this OTP to Verify " ."[".$otp."]"; 22 | $update = "UPDATE super_admin SET otp = '$otp' where admin_id=$id"; 23 | if(mysqli_query($conn, $update)){ 24 | if(mail($to, $subject, $message)){ 25 | ?> 29 | email=$a; 34 | $sql="SELECT * from employee_info WHERE emp_email='$this->email'"; 35 | $res = mysqli_query($conn, $sql); 36 | $row=mysqli_num_rows($res); 37 | if($row == 1){ 38 | $r = mysqli_fetch_assoc($res); 39 | $otp=rand(0000,9999); 40 | $to = $r['emp_email']; 41 | $id= $r['emp_id']; 42 | $_SESSION['email']=$to; 43 | $subject = "Password Recovery"; 44 | $message = "Please use this OTP to Verify " ."[".$otp."]"; 45 | $update = "UPDATE employee_info SET otp = '$otp' where emp_id=$id"; 46 | if(mysqli_query($conn, $update)){ 47 | if(mail($to, $subject, $message)){ 48 | ?> 52 | Please enter correct email

"; 60 | } 61 | else{ 62 | $re= new forget(); 63 | $re->getAdmin($email); 64 | $re->getUsers($email); 65 | 66 | } 67 | 68 | ?> 69 | -------------------------------------------------------------------------------- /js/visibility.min.js: -------------------------------------------------------------------------------- 1 | !function(e){"use strict";var i=-1,t={onVisible:function(e){var i=t.isSupported();if(!i||!t.hidden())return e(),i;var n=t.change(function(i,r){t.hidden()||(t.unbind(n),e())});return n},change:function(e){if(!t.isSupported())return!1;i+=1;var n=i;return t._callbacks[n]=e,t._listen(),n},unbind:function(e){delete t._callbacks[e]},afterPrerendering:function(e){var i=t.isSupported(),n="prerender";if(!i||n!=t.state())return e(),i;var r=t.change(function(i,d){n!=d&&(t.unbind(r),e())});return r},hidden:function(){return!(!t._doc.hidden&&!t._doc.webkitHidden)},state:function(){return t._doc.visibilityState||t._doc.webkitVisibilityState||"visible"},isSupported:function(){return!(!t._doc.visibilityState&&!t._doc.webkitVisibilityState)},_doc:document||{},_callbacks:{},_change:function(e){var i=t.state();for(var n in t._callbacks)t._callbacks[n].call(t._doc,e,i)},_listen:function(){if(!t._init){var e="visibilitychange";t._doc.webkitVisibilityState&&(e="webkit"+e);var i=function(){t._change.apply(t,arguments)};t._doc.addEventListener?t._doc.addEventListener(e,i):t._doc.attachEvent(e,i),t._init=!0}}};"undefined"!=typeof module&&module.exports?module.exports=t:e.Visibility=t}(this),function(e){"use strict";var i=-1,t=function(t){return t.every=function(e,n,r){t._time(),r||(r=n,n=null),i+=1;var d=i;return t._timers[d]={visible:e,hidden:n,callback:r},t._run(d,!1),t.isSupported()&&t._listen(),d},t.stop=function(e){return t._timers[e]?(t._stop(e),delete t._timers[e],!0):!1},t._timers={},t._time=function(){t._timed||(t._timed=!0,t._wasHidden=t.hidden(),t.change(function(){t._stopRun(),t._wasHidden=t.hidden()}))},t._run=function(i,n){var r,d=t._timers[i];if(t.hidden()){if(null===d.hidden)return;r=d.hidden}else r=d.visible;var a=function(){d.last=new Date,d.callback.call(e)};if(n){var o=new Date,c=o-d.last;r>c?d.delay=setTimeout(function(){a(),d.id=setInterval(a,r)},r-c):(a(),d.id=setInterval(a,r))}else d.id=setInterval(a,r)},t._stop=function(e){var i=t._timers[e];clearInterval(i.id),clearTimeout(i.delay),delete i.id,delete i.delay},t._stopRun=function(e){var i=t.hidden(),n=t._wasHidden;if(i&&!n||!i&&n)for(var r in t._timers)t._stop(r),t._run(r,!i)},t};"undefined"!=typeof module&&module.exports?module.exports=t(require("./visibility.core")):t(e.Visibility)}(window); -------------------------------------------------------------------------------- /admin/register.php: -------------------------------------------------------------------------------- 1 | Please Select Department

"; 5 | } 6 | $desig=$_POST['desig']; 7 | if(empty($desig)){ 8 | echo "

Please Select Designation

"; 9 | } 10 | $name=$_POST['name']; 11 | if(!preg_match("/^[a-zA-Z ]*$/",$name)){ 12 | echo "

Name should contain only alphabet

"; 13 | } 14 | $phone=$_POST['phone']; 15 | if(!preg_match("/^[0-9]*$/",$phone)){ 16 | echo "

Enter Valid Phone number

"; 17 | } 18 | $gen=$_POST['gen']; 19 | if(empty($gen)){ 20 | echo "

Please Select gender

"; 21 | } 22 | $email=$_POST['email']; 23 | if(!preg_match("/^[0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/",$email)){ 24 | echo "

Please enter correct email

"; 25 | } 26 | $pass=md5($_POST['pass']); 27 | if(empty($pass)){ 28 | echo "

Please Enter Password

"; 29 | } 30 | $salary=$_POST['salary']; 31 | if(!preg_match("/^[0-9]*$/",$salary)){ 32 | echo "

Enter Salary in number

"; 33 | } 34 | $image_extension = array("png","jpg","jpeg","PNG","JPG","JPEG"); 35 | $validate_photo = pathinfo($_FILES["photo"]["name"], PATHINFO_EXTENSION); 36 | $photo = $_FILES['photo']['name']; 37 | $target = "../emp_photo/"; 38 | $fileTarget = $target.$photo; 39 | $tempFileName = $_FILES["photo"]["tmp_name"]; 40 | if ($_FILES["photo"]["size"] > 2097152) { 41 | echo ""; 42 | return; 43 | } 44 | else if (! in_array($validate_photo, $image_extension)) { 45 | 46 | echo ""; 47 | return; 48 | } 49 | else{ 50 | $result = move_uploaded_file($tempFileName,$fileTarget); 51 | $sql = "INSERT INTO employee_info(dept_id,designation_id,emp_name,emp_gender,emp_phone,emp_email,emp_password,emp_photo,emp_salary) VALUES ($dept,$desig,'$name','$gender',$phone,'$email','$pass','$fileTarget',$salary)"; 52 | $query=mysqli_query($conn,$sql); 53 | if(!$query){ 54 | echo "

Error in Addding Department

"; 55 | } 56 | else{ 57 | echo ""; 58 | } 59 | } 60 | ?> -------------------------------------------------------------------------------- /resetpass.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Change Password | Log in 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 21 | 22 |
23 | 24 | 25 |
26 |
27 | 28 | 29 |
30 |
31 | 32 | 33 |
34 |
35 | 36 |
37 | 40 |
41 | 42 |
43 |
44 | 45 |
46 | 47 |
48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /supervisor/register.php: -------------------------------------------------------------------------------- 1 | Please Select Department

"; 5 | } 6 | $desig=$_POST['desig']; 7 | if(empty($desig)){ 8 | echo "

Please Select Designation

"; 9 | } 10 | $name=$_POST['name']; 11 | if(!preg_match("/^[a-zA-Z ]*$/",$name)){ 12 | echo "

Name should contain only alphabet

"; 13 | } 14 | $phone=$_POST['phone']; 15 | if(!preg_match("/^[0-9]*$/",$phone)){ 16 | echo "

Enter Valid Phone number

"; 17 | } 18 | $gen=$_POST['gen']; 19 | if(empty($gen)){ 20 | echo "

Please Select gender

"; 21 | } 22 | $email=$_POST['email']; 23 | if(!preg_match("/^[0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/",$email)){ 24 | echo "

Please enter correct email

"; 25 | } 26 | $pass=md5($_POST['pass']); 27 | if(empty($pass)){ 28 | echo "

Please Enter Password

"; 29 | } 30 | $salary=$_POST['salary']; 31 | if(!preg_match("/^[0-9]*$/",$salary)){ 32 | echo "

Enter Salary in number

"; 33 | } 34 | $image_extension = array("png","jpg","jpeg","PNG","JPG","JPEG"); 35 | $validate_photo = pathinfo($_FILES["photo"]["name"], PATHINFO_EXTENSION); 36 | $photo = $_FILES['photo']['name']; 37 | $target = "../emp_photo/"; 38 | $fileTarget = $target.$photo; 39 | $tempFileName = $_FILES["photo"]["tmp_name"]; 40 | if ($_FILES["photo"]["size"] > 2097152) { 41 | echo ""; 42 | return; 43 | } 44 | else if (! in_array($validate_photo, $image_extension)) { 45 | 46 | echo ""; 47 | return; 48 | } 49 | else{ 50 | $result = move_uploaded_file($tempFileName,$fileTarget); 51 | $sql = "INSERT INTO employee_info(dept_id,designation_id,emp_name,emp_gender,emp_phone,emp_email,emp_password,emp_photo,emp_salary) VALUES ($dept,$desig,'$name','$gender',$phone,'$email','$pass','$fileTarget',$salary)"; 52 | $query=mysqli_query($conn,$sql); 53 | if(!$query){ 54 | echo "

Error in Addding Department

"; 55 | } 56 | else{ 57 | echo ""; 58 | } 59 | } 60 | ?> -------------------------------------------------------------------------------- /js/FileSaver.min.js: -------------------------------------------------------------------------------- 1 | /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */ 2 | var saveAs=saveAs||function(e){"use strict";if(typeof e==="undefined"||typeof navigator!=="undefined"&&/MSIE [1-9]\./.test(navigator.userAgent)){return}var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o="download"in r,i=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},a=/constructor/i.test(e.HTMLElement),f=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},d="application/octet-stream",s=1e3*40,c=function(e){var t=function(){if(typeof e==="string"){n().revokeObjectURL(e)}else{e.remove()}};setTimeout(t,s)},l=function(e,t,n){t=[].concat(t);var r=t.length;while(r--){var o=e["on"+t[r]];if(typeof o==="function"){try{o.call(e,n||e)}catch(i){u(i)}}}},p=function(e){if(/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)){return new Blob([String.fromCharCode(65279),e],{type:e.type})}return e},v=function(t,u,s){if(!s){t=p(t)}var v=this,w=t.type,m=w===d,y,h=function(){l(v,"writestart progress write writeend".split(" "))},S=function(){if((f||m&&a)&&e.FileReader){var r=new FileReader;r.onloadend=function(){var t=f?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");var n=e.open(t,"_blank");if(!n)e.location.href=t;t=undefined;v.readyState=v.DONE;h()};r.readAsDataURL(t);v.readyState=v.INIT;return}if(!y){y=n().createObjectURL(t)}if(m){e.location.href=y}else{var o=e.open(y,"_blank");if(!o){e.location.href=y}}v.readyState=v.DONE;h();c(y)};v.readyState=v.INIT;if(o){y=n().createObjectURL(t);setTimeout(function(){r.href=y;r.download=u;i(r);h();c(y);v.readyState=v.DONE});return}S()},w=v.prototype,m=function(e,t,n){return new v(e,t||e.name||"download",n)};if(typeof navigator!=="undefined"&&navigator.msSaveOrOpenBlob){return function(e,t,n){t=t||e.name||"download";if(!n){e=p(e)}return navigator.msSaveOrOpenBlob(e,t)}}w.abort=function(){};w.readyState=w.INIT=0;w.WRITING=1;w.DONE=2;w.error=w.onwritestart=w.onprogress=w.onwrite=w.onabort=w.onerror=w.onwriteend=null;return m}(typeof self!=="undefined"&&self||typeof window!=="undefined"&&window||this.content);if(typeof module!=="undefined"&&module.exports){module.exports.saveAs=saveAs}else if(typeof define!=="undefined"&&define!==null&&define.amd!==null){define([],function(){return saveAs})} -------------------------------------------------------------------------------- /changepassword.php: -------------------------------------------------------------------------------- 1 | email=$a; 11 | $this->pass=$b; 12 | $this->otp=$c; 13 | $updates = "UPDATE super_admin SET password = '$this->pass', otp=$this->otp where email_id='$this->email' "; 14 | $passwords=mysqli_query($conn, $updates); 15 | if($passwords){ 16 | ?> 17 | 21 | 25 | 29 | email=$a; 37 | $this->pass=$b; 38 | $this->otp=$c; 39 | $update = "UPDATE employee_info SET emp_password = '$this->pass', otp=$this->otp where emp_email='$this->email' "; 40 | $password=mysqli_query($conn, $update); 41 | if($password){ 42 | 43 | ?> 44 | 48 | 52 | 56 | Password Did not Match

"; 71 | } 72 | else { 73 | $re->getAdmin($email,$pass,$otp); 74 | $re->getUsers($email,$pass,$otp); 75 | 76 | } 77 | ?> -------------------------------------------------------------------------------- /js/store.min.js: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2016 Marcus Westin */ 2 | (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.store = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;odocument.w=window'),u.close(),c=u.w.frames[0].document,t=c.createElement("div")}catch(l){t=i.createElement("div"),c=i.body}var f=function(e){return function(){var n=Array.prototype.slice.call(arguments,0);n.unshift(t),c.appendChild(t),t.addBehavior("#default#userData"),t.load(o);var i=e.apply(r,n);return c.removeChild(t),i}},d=new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]","g"),s=function(e){return e.replace(/^d/,"___$&").replace(d,"___")};r.set=f(function(e,t,n){return t=s(t),void 0===n?r.remove(t):(e.setAttribute(t,r.serialize(n)),e.save(o),n)}),r.get=f(function(e,t,n){t=s(t);var i=r.deserialize(e.getAttribute(t));return void 0===i?n:i}),r.remove=f(function(e,t){t=s(t),e.removeAttribute(t),e.save(o)}),r.clear=f(function(e){var t=e.XMLDocument.documentElement.attributes;e.load(o);for(var r=t.length-1;r>=0;r--)e.removeAttribute(t[r].name);e.save(o)}),r.getAll=function(e){var t={};return r.forEach(function(e,r){t[e]=r}),t},r.forEach=f(function(e,t){for(var n,i=e.XMLDocument.documentElement.attributes,o=0;n=i[o];++o)t(n.name,r.deserialize(e.getAttribute(n.name)))})}try{var v="__storejs__";r.set(v,v),r.get(v)!=v&&(r.disabled=!0),r.remove(v)}catch(l){r.disabled=!0}return r.enabled=!r.disabled,r}(); 5 | }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) 6 | },{}]},{},[1])(1) 7 | }); -------------------------------------------------------------------------------- /verify.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Verification | Log in 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 21 | 22 | 96 | 97 |
98 | 99 | 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /login.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Login | Signup 14 | 15 | 16 |
17 | 29 |
30 | 31 |

32 | email=$a; 45 | $this->pass=$b; 46 | $sql="SELECT * FROM super_admin WHERE email_id='$this->email' and password='$this->pass'"; 47 | $loginquery=mysqli_query($conn, $sql); 48 | $checkuser=mysqli_num_rows($loginquery); 49 | if($checkuser==1){ 50 | $_SESSION['email']=$this->email; 51 | header("Location:admin/index.php"); 52 | } 53 | else{ 54 | ?> 55 | 56 | email=$a; 63 | $this->pass=$b; 64 | $this->des_id=$c; 65 | $sql="SELECT * from employee_info WHERE emp_email='$this->email' and emp_password='$this->pass' and designation_id=$this->des_id"; 66 | $loginquery=mysqli_query($conn, $sql); 67 | $checkuser=mysqli_num_rows($loginquery); 68 | if($checkuser==1){ 69 | $_SESSION['staff']=$this->email; 70 | header("Location:supervisor/index.php"); 71 | } 72 | else{ 73 | ?> 74 | 75 | getAdmin($email,$pass); 86 | $re->getStaff($email,$pass,$des_id); 87 | 88 | } 89 | ?> 90 |

91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /js/qr.js: -------------------------------------------------------------------------------- 1 | function CameraQrScanner(previewContainer) { 2 | var self = this; 3 | 4 | this.camera = null; 5 | this.scanActive = false; 6 | this.lastResult = null; 7 | this.refractoryTimeout = null; 8 | this.captureImage = false; 9 | 10 | var cameraElement = document.createElement('video'); 11 | cameraElement.setAttribute('autoplay', 'autoplay'); 12 | previewContainer.appendChild(cameraElement); 13 | 14 | var canvas = document.createElement('canvas'); 15 | canvas.style.display = 'none'; 16 | 17 | this.onResult = function () { }; 18 | 19 | this.start = function (camera, callback) { 20 | this.stop(); 21 | 22 | this.camera = camera; 23 | 24 | this.camera.start(function (err, streamUrl) { 25 | if (err) { 26 | callback(err); 27 | } else { 28 | cameraElement.src = streamUrl; 29 | startScan(); 30 | callback(null); 31 | } 32 | }); 33 | }; 34 | 35 | this.stop = function () { 36 | this.scanActive = false; 37 | cameraElement.src = ''; 38 | 39 | if (this.camera) { 40 | this.camera.stop(); 41 | this.camera = null; 42 | } 43 | }; 44 | 45 | this.setCaptureImage = function (captureImage) { 46 | this.captureImage = captureImage; 47 | }; 48 | 49 | this.imageBuffer = null; 50 | var context; 51 | 52 | var sensorLeft; 53 | var sensorTop; 54 | var sensorWidth; 55 | var sensorHeight; 56 | 57 | var ZXing = window.ZXing(); 58 | 59 | var decodeCallback = ZXing.Runtime.addFunction(function (ptr, len, resultIndex, resultCount) { 60 | var result = new Uint8Array(ZXing.HEAPU8.buffer, ptr, len); 61 | var str = String.fromCharCode.apply(null, result); 62 | if (resultIndex === 0) { 63 | window.zxDecodeResult = ''; 64 | } 65 | window.zxDecodeResult += str; 66 | }); 67 | 68 | function startScan() { 69 | this.scanActive = true; 70 | requestAnimationFrame(scan); 71 | } 72 | 73 | var frameCount = 0; 74 | function scan() { 75 | if (!this.scanActive) { 76 | return; 77 | } 78 | 79 | requestAnimationFrame(scan); 80 | 81 | if (++frameCount !== 5) { 82 | return; 83 | } else { 84 | frameCount = 0; 85 | } 86 | 87 | if (!cameraElement.videoWidth) { 88 | return; 89 | } 90 | 91 | if (!this.imageBuffer) { 92 | var videoWidth = cameraElement.videoWidth; 93 | var videoHeight = cameraElement.videoHeight; 94 | 95 | sensorWidth = videoWidth; 96 | sensorHeight = videoHeight; 97 | sensorLeft = Math.floor((videoWidth / 2) - (sensorWidth / 2)); 98 | sensorTop = Math.floor((videoHeight / 2) - (sensorHeight / 2)); 99 | canvas.width = sensorWidth; 100 | canvas.height = sensorHeight; 101 | 102 | context = canvas.getContext('2d'); 103 | this.imageBuffer = ZXing._resize(sensorWidth, sensorHeight); 104 | return; 105 | } 106 | 107 | context.drawImage(cameraElement, sensorLeft, sensorTop, sensorWidth, sensorHeight, 0, 0, sensorWidth, sensorHeight); 108 | var data = context.getImageData(0, 0, sensorWidth, sensorHeight).data; 109 | 110 | for (var i = 0, j = 0; i < data.length; i += 4, j++) { 111 | ZXing.HEAPU8[this.imageBuffer + j] = data[i]; 112 | } 113 | 114 | var err = ZXing._decode_qr(decodeCallback); 115 | if (err) { 116 | return; 117 | } 118 | 119 | var result = window.zxDecodeResult; 120 | if ((result != null) && (result !== self.lastResult)) { 121 | clearTimeout(self.refractoryTimeout); 122 | self.refractoryTimeout = setTimeout(function () { 123 | self.lastResult = null; 124 | }, 6 * 1000); 125 | 126 | var image = self.captureImage ? canvas.toDataURL('image/webp', 0.8) : null; 127 | 128 | self.lastResult = result; 129 | setTimeout(function () { 130 | self.onResult(result, image); 131 | }, 0); 132 | } 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /supervisor/supervisor_home.php: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | Supervisor | Dashboard 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 39 |
40 | 47 |
48 | 56 | 57 |
58 |
59 |
60 | 61 | 62 | 63 | 64 | 68 | 72 | 76 | 77 | 78 | 79 | 85 | 86 | 87 | 92 | 95 | 98 |
Register Employee
65 |

66 | More info 67 |
Employee Details
69 |

70 | More info 71 |
Attendance Report
73 |

74 | More info 75 |
Take Attendance
80 |

81 |
82 | 83 |
84 |
99 |
100 |
101 |
102 |
103 | 104 | 105 | 106 | 107 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /admin/admin_home.php: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Admin | Dashboard 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 37 |
38 | 45 |
46 | 54 | 55 |
56 |
57 |
58 | 59 | 60 | 61 | 65 | 69 | 73 | 77 | 78 | 79 | 80 | 86 | 87 | 88 | 92 | 95 | 98 |
Department
62 |

63 | More info 64 |
Register Employee
66 |

67 | More info 68 |
Employee Details
70 |

71 | More info 72 |
Attendance Report
74 |

75 | More info 76 |
Take Attendance
81 |

82 |
83 | 84 |
85 |
99 |
100 |
101 |
102 |
103 | 104 | 105 | 106 | 107 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /supervisor/emp_details.php: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Supervisor | Employee Details 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 32 |
33 | 44 |
45 | 53 |
54 |
55 | 56 |
57 |
58 | Employee Details
59 |
60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 78 | 79 | 80 | 81 | 82 | 90 | 91 | 92 | 93 | 94 | 99 | 100 | 101 |
Emp ID
Emp Name
Department
Action
83 | UpdateDetailsGenerate ID
102 | 103 |
104 |
105 |
106 | 107 |
108 |
109 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /admin/emp_details.php: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Admin | Employee Details 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 31 |
32 | 43 |
44 | 52 |
53 |
54 | 55 |
56 |
57 | Employee Details
58 |
59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 76 | 77 | 78 | 79 | 80 | 88 | 89 | 90 | 91 | 92 | 97 | 98 | 99 |
Emp ID
Emp Name
Department
Action
81 | UpdateDetailsGenerate ID
100 | 101 |
102 |
103 |
104 | 105 |
106 |
107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /admin/details.php: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Admin | Employee Details 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 31 |
32 | 43 |
44 | 52 |
53 |
54 | 55 |
56 |
57 | Employee Details
58 |
59 | 60 | 61 | 62 | 63 | 64 | 65 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 117 | 118 | 119 | 120 |
Employee profileContact Information
81 |
82 | 83 |
Employee NameDepartment
93 | 100 |
GenderDesignation
109 | 116 |
121 | 122 |
123 |
124 |
125 | 126 |
127 |
128 | 129 | 130 | 131 | 132 | 133 | -------------------------------------------------------------------------------- /admin/updatedept.php: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | Admin | Update Department 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 36 |
37 | 48 |
49 | 59 |
60 |
61 |
62 |
63 | Update Department
64 |
65 |
66 |
67 | 68 |
69 |
70 |
71 |
72 | 73 | 74 |
75 |
76 |
77 | 78 | Please enter the departmen tname

"; 83 | } 84 | else{ 85 | 86 | $sql = "UPDATE department SET dept_id='$dept'dept_name='$dept' Where dept_id=$dept_id"; 87 | $query=mysqli_query($conn,$sql); 88 | if(!$query){ 89 | echo "

"; 90 | } 91 | else{ 92 | echo ""; 93 | } 94 | } 95 | 96 | ?> 97 |

98 | 101 | 102 |
103 |
104 |
105 | 106 |
107 |
108 | 109 |
110 |
111 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /admin/department.php: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Admin | department 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 31 |
32 | 43 |
44 | 54 |
55 |
56 |
57 |
58 | Enter Department
59 |
60 |
61 |
62 | 63 |
64 | Error in Addding Department

"; 72 | } 73 | 74 | } 75 | ?> 76 |
77 | 83 |
84 |
85 | All Department
86 |
87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 116 | 117 | 118 |
Sl.noDepartmentAction
Update
119 | 120 |
121 |
122 |
123 | 124 |
125 |
126 |
127 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /scancode.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | Scanner 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 32 | 33 | 34 | 54 | 58 |
59 | 60 | 61 | 69 | 78 | 87 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 |
62 |
63 | 67 |
68 |
70 |
71 | 75 | 76 |
77 |
79 |
80 | 85 |
86 |
88 |
89 | 94 |
95 |
Place Yor Code Inside The Box
104 |
105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /supervisor/details.php: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Supervisor | Employee Details 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 33 |
34 | 44 |
45 | 53 |
54 |
55 | 56 |
57 |
58 | Employee Details
59 |
60 | 61 | 62 | 63 | 64 | 65 | 67 | 68 | 69 | 70 | 71 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 123 | 124 | 125 | 126 |
Emp IDEmp Name
Employee profileContact Information
87 |
88 | 89 |
Employee NameDepartment
99 | 106 |
GenderDesignation
115 | 122 |
127 | 128 |
129 |
130 |
131 | 132 |
133 |
134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | #logreg-forms{ 4 | width:412px; 5 | margin:10vh auto; 6 | background-color:#f3f3f3; 7 | box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); 8 | transition: all 0.3s cubic-bezier(.25,.8,.25,1); 9 | } 10 | #logreg-forms form { 11 | width: 100%; 12 | max-width: 410px; 13 | padding: 15px; 14 | margin: auto; 15 | } 16 | #logreg-forms .form-control { 17 | position: relative; 18 | box-sizing: border-box; 19 | height: auto; 20 | padding: 10px; 21 | font-size: 16px; 22 | } 23 | #logreg-forms .form-control:focus { z-index: 2; } 24 | #logreg-forms .form-signin input[type="email"] { 25 | margin-bottom: -1px; 26 | border-bottom-right-radius: 0; 27 | border-bottom-left-radius: 0; 28 | } 29 | #logreg-forms .form-signin input[type="password"] { 30 | border-top-left-radius: 0; 31 | border-top-right-radius: 0; 32 | } 33 | 34 | #logreg-forms .social-login{ 35 | width:390px; 36 | margin:0 auto; 37 | margin-bottom: 14px; 38 | } 39 | #logreg-forms .social-btn{ 40 | font-weight: 100; 41 | color:white; 42 | width:190px; 43 | font-size: 0.9rem; 44 | } 45 | 46 | #logreg-forms a{ 47 | display: block; 48 | padding-top:10px; 49 | color:lightseagreen; 50 | } 51 | 52 | #logreg-form .lines{ 53 | width:200px; 54 | border:1px solid red; 55 | } 56 | 57 | 58 | #logreg-forms button[type="submit"]{ margin-top:10px; } 59 | 60 | #logreg-forms .facebook-btn{ background-color:#3C589C; } 61 | 62 | #logreg-forms .google-btn{ background-color: #DF4B3B; } 63 | 64 | #logreg-forms .form-reset, #logreg-forms .form-signup{ display: none; } 65 | 66 | #logreg-forms .form-signup .social-btn{ width:210px; } 67 | 68 | #logreg-forms .form-signup input { margin-bottom: 2px;} 69 | 70 | .form-signup .social-login{ 71 | width:210px !important; 72 | margin: 0 auto; 73 | } 74 | 75 | /* Mobile */ 76 | 77 | @media screen and (max-width:500px){ 78 | #logreg-forms{ 79 | width:300px; 80 | } 81 | 82 | #logreg-forms .social-login{ 83 | width:200px; 84 | margin:0 auto; 85 | margin-bottom: 10px; 86 | } 87 | #logreg-forms .social-btn{ 88 | font-size: 1.3rem; 89 | font-weight: 100; 90 | color:white; 91 | width:200px; 92 | height: 56px; 93 | 94 | } 95 | #logreg-forms .social-btn:nth-child(1){ 96 | margin-bottom: 5px; 97 | } 98 | #logreg-forms .social-btn span{ 99 | display: none; 100 | } 101 | #logreg-forms .facebook-btn:after{ 102 | content:'Facebook'; 103 | } 104 | 105 | #logreg-forms .google-btn:after{ 106 | content:'Google+'; 107 | } 108 | 109 | } 110 | .register{ 111 | background: -webkit-linear-gradient(left, #3931af, #00c6ff); 112 | 113 | padding: 3%; 114 | } 115 | .register-left{ 116 | text-align: center; 117 | color: #fff; 118 | margin-top: 4%; 119 | } 120 | .register-left input{ 121 | border: none; 122 | border-radius: 1.5rem; 123 | padding: 2%; 124 | width: 60%; 125 | background: #f8f9fa; 126 | font-weight: bold; 127 | color: #383d41; 128 | margin-top: 30%; 129 | margin-bottom: 3%; 130 | cursor: pointer; 131 | } 132 | .register-right{ 133 | background: #f8f9fa; 134 | border-top-left-radius: 10% 50%; 135 | border-bottom-left-radius: 10% 50%; 136 | } 137 | .register-left img{ 138 | margin-top: 15%; 139 | margin-bottom: 5%; 140 | width: 25%; 141 | -webkit-animation: mover 2s infinite alternate; 142 | animation: mover 1s infinite alternate; 143 | } 144 | @-webkit-keyframes mover { 145 | 0% { transform: translateY(0); } 146 | 100% { transform: translateY(-20px); } 147 | } 148 | @keyframes mover { 149 | 0% { transform: translateY(0); } 150 | 100% { transform: translateY(-20px); } 151 | } 152 | .register-left p{ 153 | font-weight: lighter; 154 | padding: 12%; 155 | margin-top: -9%; 156 | } 157 | .register .register-form{ 158 | padding: 10%; 159 | margin-top: 10%; 160 | } 161 | .btnRegister{ 162 | float: right; 163 | margin-top: 10%; 164 | border: none; 165 | border-radius: 1.5rem; 166 | padding: 2%; 167 | background: #0062cc; 168 | color: #fff; 169 | font-weight: 600; 170 | width: 50%; 171 | cursor: pointer; 172 | } 173 | .register .nav-tabs{ 174 | margin-top: 3%; 175 | border: none; 176 | background: #0062cc; 177 | border-radius: 1.5rem; 178 | width: 28%; 179 | float: right; 180 | } 181 | .register .nav-tabs .nav-link{ 182 | padding: 2%; 183 | height: 34px; 184 | font-weight: 600; 185 | color: #fff; 186 | border-top-right-radius: 1.5rem; 187 | border-bottom-right-radius: 1.5rem; 188 | } 189 | .register .nav-tabs .nav-link:hover{ 190 | border: none; 191 | } 192 | .register .nav-tabs .nav-link.active{ 193 | width: 100px; 194 | color: #0062cc; 195 | border: 2px solid #0062cc; 196 | border-top-left-radius: 1.5rem; 197 | border-bottom-left-radius: 1.5rem; 198 | } 199 | .register-heading{ 200 | text-align: center; 201 | margin-top: 8%; 202 | margin-bottom: -15%; 203 | color: #495057; 204 | } -------------------------------------------------------------------------------- /scans.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Scanner 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 37 |
38 | 58 |
59 | 66 | 67 |
68 |
69 | 70 |
71 | 72 | 73 | 81 | 90 | 99 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 |
74 |
75 | 79 |
80 |
82 |
83 | 87 | 88 |
89 |
91 |
92 | 97 |
98 |
100 |
101 | 106 |
107 |
Place Yor Code Inside The Box
116 |
117 | 118 | 119 |
120 |
121 | 122 | 123 |
124 | 125 |
126 | 127 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /admin/report.php: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Admin | Employee Details 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 31 |
32 | 43 |
44 | 52 |
53 |
54 | 55 |
56 |
57 | Employee attendance
58 |
59 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 80 | 81 | 82 | 83 | 90 | 93 | 94 | 95 | 96 | 97 | 102 | 103 | 104 |
Emp ID
Emp Name
Time In
Time Out
Date
91 | 92 |
105 | 106 |
107 |
108 |
109 | 110 |
111 |
112 | 113 | 114 | 115 | 116 | 117 | 118 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # QR_Employee_Attendance_System 2 | It is a web based application. A system that takes down Employee Attendance using QR code. Every Employee is provided with a card containing a unique ID. Employee just has to scan their cards in front of camera or scanner and the system notes down their attendance as per dates. Each QR code contains a unique ID for employees. System then stores the entire Employee’ attendance records and generates defaulter list. It also generates an overall report in Excel sheet or PDF according to the requirement for admin and Supervisor. Such type of application is very useful in NGO’s as well as in Organisation or IT companies for daily attendance. 3 | It is a web based application. A system that takes down Employee 4 | Attendance using QR code. Every Employee is provided with a card containing a unique ID. Employee just has to scan their cards in front of camera or scanner and the system notes down their attendance as per dates. Each QR code contains a unique ID for employees. System then stores the entire Employee’ attendance records and generates defaulter list. 5 | It also generates an overall report in Excel sheet or PDF according to the requirement for admin and Supervisor. Such type of application is very useful in NGO’s as well as in Organisation or IT companies for daily attendance. 6 | 7 | Features: 8 | 9 | The system deals with the maintaining Employee attendance taken by Supervisor. Supervisor will get assign by admin to which Department they have to take attendance. It is maintained on the daily basis of their attendance. The supervisor will be provided a platform were supervisor can easily take Employee attendance by just scanning QR code provided to Employees. Only if the Employee present on that particular Department and with the unique QR code identity. The attendance will be calculated on the basic of the Employee mark as present. The Employee’s attendance report can be generated by the Supervisor according to their requirement. 10 | 11 | QR code structure 12 | What is a QR Code? 13 | The QR Code is a two-dimensional version of the barcode, known from product packaging in the supermarket. Originally developed for process optimization in the logistics of the automotive industry, the QR Code has found its way into mobile marketing with the widespread adoption of smartphones. "QR" stands for "Quick Response", which refers to the instant access to the information hidden in the Code. QR Codes are gaining popularity because the technology is "open source", i.e. available for everyone. Significant advantages of QR Codes over conventional barcodes are larger data capacity and high fault tolerance. 14 | How is a QR Code structured? 15 | The black and white checkered pixel patterns appear at first glance to be a small crossword puzzle and seem to be composed at random. But if you look closely, certain structures can be identified. For the scanner to recognize a QR Code as such, the Code must always be square. A number of additional elements ensure that the information is read correctly. 16 | AIMS OF THE PROJECT: 17 | 18 | The main aim of this project is to computerized the attendance system and reduce time consumption and also give Attendance report to Supervisor. 19 | This project has the following objectives:- 20 | 21 | To develop a QR code generator using PHP 22 | To develop an attendance Management System 23 | 24 | 25 | Working of the Existing System: 26 | 27 | • Existing System is a manual entry for the Employees. 28 | 29 | • Attendance will be carried out in the hand written registers and put it on the MS excel. 30 | 31 | • Attendance is taking in daily basis by manually on the register and at the end of the month they uploaded to ms excel. 32 | 33 | • By the help of the register they calculate the salary by manual via MS excel or by calculator. 34 | 35 | • Number of leaves is calculating by counting the number of days he or she is absent by:- 36 | 37 | 38 | • Employee on a salary: 39 | • Annual salary % 52 (no. of weeks in a year)= weekly pay 40 | • Weekly pay % 7(no. of days in working week) = daily pay 41 | • Example: if the employee’s annual salary(before tax) is Rs. 200000 42 | • Rs.200000 ÷ 52 = Rs.3,846.15385 (weekly pay) 43 | • Rs. 3,846.15385 ÷ 7 = Rs.549.45055(daily pay) 44 | 45 | 46 | These are the following drawbacks with the existing system: 47 | 48 | Difficulty in report generating: They require more calculations and it takes time to generate the report and it may happen that the students may not get a single chance to improve their attendance. 49 | 50 | Lots of paperwork: Existing system requires lot of paper work. Loss of even a single register/record led to difficult situation because all the papers are needed to generate the reports. 51 | 52 | Time consuming: Every work is done manually so they cannot generate report in the middle of the session or as per the requirement because it is very time consuming. 53 | 54 | Proposed system: 55 | 56 | The proposed system uses QR-code method for authenticating Employees with a unique QR-code that represents their unique id. Every Employee is provided with a card that contains the QR-code. 57 | Features of Proposed system: 58 | • The QR code is used instead of manual login. 59 | • The QR code is a two-dimensional code which has black square arranged on a white background which efficiently stores data. 60 | • A QR code can be embedded anywhere, here it is embedded on the ID card. 61 | • The QR code could be scanned by camera or QR code Scanner. 62 | • QR codes are unique so it differs from one employee to other. 63 | • After Scanning the QR code the system will generate a report that contains the number of presents and absentees. 64 | • This system will also generate the salary cutting of absentees. 65 | -------------------------------------------------------------------------------- /report.php: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Admin | Employee Details 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 31 |
32 | 43 |
44 | 52 |
53 |
54 | 55 |
56 |
57 | Employee Details
58 |
59 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 80 | 81 | 82 | 83 | 90 | 93 | 94 | 95 | 96 | 97 | 102 | 103 | 104 |
Emp ID
Emp Name
Time In
Time Out
Date
91 | 92 |
105 | 106 |
107 |
108 |
109 | 110 |
111 |
112 | 113 | 114 | 115 | 116 | 117 | 118 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /supervisor/report.php: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Supervisor | Employee Details 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 32 |
33 | 44 |
45 | 53 |
54 |
55 | 56 |
57 |
58 | Employee attendence
59 |
60 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 91 | 92 | 93 | 94 | 101 | 104 | 105 | 106 | 107 | 108 | 113 | 114 | 115 | 116 | 119 | 120 | 121 |
Emp ID
Emp Name
Time In
Time Out
Date
102 | 103 |
No Attendance Found
122 | 123 |
124 |
125 |
126 | 127 |
128 |
129 | 130 | 131 | 132 | 133 | 134 | 135 | 151 | 152 | 153 | -------------------------------------------------------------------------------- /admin/generateid.php: -------------------------------------------------------------------------------- 1 | bookmark($_POST['url']); 17 | 18 | }elseif(isset($_POST['only_url'])){ 19 | $qr->url($_POST['only_url']); 20 | } 21 | } 22 | $size = array('5'=>'232','6'=>'290'); 23 | ?> 24 | 25 | 26 | 27 | 28 | 29 | 30 | Admin | QR Code 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 44 |
45 | 56 |
57 | 63 |
64 |
65 |
66 |
67 |
68 |
69 |
Generate QR code ID
70 |
71 |
72 |
73 |
74 | 78 |
79 | 80 | 81 | 82 |
83 | 86 | 87 | 88 | 89 | 90 | 91 | 97 | 98 | 99 | 100 | 112 | 113 | 114 | 115 | 126 | 127 |
Marak Pvt Ltd. Identification
101 | generate($_POST['img_size'], "qrimage/".$img);?> 106 | 107 | 108 | 110 | 111 |
116 | "; 118 | echo $row['emp_email']."
"; 119 | $dept=$row['dept_id']; 120 | $querys = "SELECT * FROM department where dept_id=$dept"; 121 | $results=mysqli_query($conn, $querys); 122 | $rows = mysqli_fetch_assoc($results); 123 | echo $rows['dept_name']; 124 | ?> 125 |
128 |
129 |
130 |
131 |
132 | 133 |
134 |
135 |
136 | 137 |
138 | 139 |
140 | 141 | 142 | 143 | 159 | 160 | 161 | 162 | -------------------------------------------------------------------------------- /supervisor/generateid.php: -------------------------------------------------------------------------------- 1 | bookmark($_POST['url']); 17 | 18 | }elseif(isset($_POST['only_url'])){ 19 | $qr->url($_POST['only_url']); 20 | } 21 | } 22 | $size = array('5'=>'232','6'=>'290'); 23 | ?> 24 | 25 | 26 | 27 | 28 | 29 | 30 | Admin | QR Code 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 44 |
45 | 56 |
57 | 63 |
64 |
65 |
66 |
67 |
68 |
69 |
Generate QR code ID
70 |
71 |
72 |
73 |
74 | 78 |
79 | 80 | 81 | 82 |
83 | 86 | 87 | 88 | 89 | 90 | 91 | 97 | 98 | 99 | 100 | 112 | 113 | 114 | 115 | 126 | 127 |
Marak Pvt Ltd. Identification
101 | generate($_POST['img_size'], "qrimage/".$img);?> 106 | 107 | 108 | 110 | 111 |
116 | "; 118 | echo $row['emp_email']."
"; 119 | $dept=$row['dept_id']; 120 | $querys = "SELECT * FROM department where dept_id=$dept"; 121 | $results=mysqli_query($conn, $querys); 122 | $rows = mysqli_fetch_assoc($results); 123 | echo $rows['dept_name']; 124 | ?> 125 |
128 |
129 |
130 |
131 |
132 | 133 |
134 |
135 |
136 | 137 |
138 | 139 |
140 | 141 | 142 | 143 | 159 | 160 | 161 | 162 | -------------------------------------------------------------------------------- /supervisor/updateemp.php: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Supervisor | Employee REgistration 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 35 |
36 | 47 |
48 | 58 |
59 |
60 |
61 |
62 | Update Employee
63 |
64 |
65 |
66 | 67 |
68 |
69 |
70 |
71 | 72 | 88 |
89 |
90 | 91 | 92 |
93 |
94 | 95 | 96 |
97 | 98 |
99 | 100 |
101 | 102 | 118 |
119 |
120 | 121 | 122 |
123 | 124 |
125 |

126 | Please Select Department

"; 131 | } 132 | $desig=$_POST['desig']; 133 | if(empty($desig)){ 134 | echo "

Please Select Designation

"; 135 | } 136 | $phone=$_POST['phone']; 137 | if(!preg_match("/^[0-9]*$/",$phone)){ 138 | echo "

Enter Valid Phone number

"; 139 | } 140 | $email=$_POST['email']; 141 | if(!preg_match("/^[0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/",$email)){ 142 | echo "

Please enter correct email

"; 143 | } 144 | $salary=$_POST['salary']; 145 | if(!preg_match("/^[0-9]*$/",$salary)){ 146 | echo "

Enter Salary in number

"; 147 | } 148 | else{ 149 | 150 | $sql = "UPDATE employee_info SET dept_id='$dept',designation_id='$desig',emp_phone='$phone',emp_email='$email',emp_salary='$salary' Where emp_id=$emp_id"; 151 | $query=mysqli_query($conn,$sql); 152 | if(!$query){ 153 | echo "

"; 154 | } 155 | else{ 156 | echo ""; 157 | } 158 | } 159 | } 160 | ?> 161 |

162 | 165 | 166 |
167 |
168 |
169 | 170 |
171 |
172 | 173 |
174 |
175 | 176 | 177 | 178 | 179 | 180 | -------------------------------------------------------------------------------- /processing.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Processing...... 6 | 7 | 8 | 9 | 10 | 11 | 12 | 26 | 27 | 28 | 29 |
30 |
31 |
46 |
47 |
48 |
49 |

Un-Authorized Access

50 |

Access to this page is forbidden

Scan Your Code First 51 |
52 |
53 |
54 |
55 |
113 |
114 |
115 |
116 |
117 |

Sorry Attendance Cannot be taken

118 |

Employee Didnt Match

Scan Again 119 |
120 |
121 |
122 |
123 |
169 |
170 |
171 |
172 |
173 |

Un-Authorized Access

174 |

Access to this page is forbidden

Please Try Again 175 |
176 |
177 |
178 |
179 |
183 |
184 |
185 | 186 | 187 | -------------------------------------------------------------------------------- /admin/updateemp.php: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Admin | Employee REgistration 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 35 |
36 | 47 |
48 | 58 |
59 |
60 |
61 |
62 | Update Employee
63 |
64 |
65 |
66 | 67 |
68 |
69 |
70 |
71 | 72 | 87 |
88 |
89 | 90 | 91 |
92 |
93 | 94 | 95 |
96 | 97 |
98 | 99 |
100 | 101 | 117 |
118 |
119 | 120 | 121 |
122 | 123 |
124 |

125 | Please Select Department

"; 130 | } 131 | $desig=$_POST['desig']; 132 | if(empty($desig)){ 133 | echo "

Please Select Designation

"; 134 | } 135 | $phone=$_POST['phone']; 136 | if(!preg_match("/^[0-9]*$/",$phone)){ 137 | echo "

Enter Valid Phone number

"; 138 | } 139 | $email=$_POST['email']; 140 | if(!preg_match("/^[0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/",$email)){ 141 | echo "

Please enter correct email

"; 142 | } 143 | $salary=$_POST['salary']; 144 | if(!preg_match("/^[0-9]*$/",$salary)){ 145 | echo "

Enter Salary in number

"; 146 | } 147 | else{ 148 | 149 | $sql = "UPDATE employee_info SET dept_id='$dept',designation_id='$desig',emp_phone='$phone',emp_email='$email',emp_salary='$salary' Where emp_id=$emp_id"; 150 | $query=mysqli_query($conn,$sql); 151 | if(!$query){ 152 | echo "

"; 153 | } 154 | else{ 155 | echo ""; 156 | } 157 | } 158 | } 159 | ?> 160 |

161 | 164 | 165 |
166 |
167 |
168 | 169 |
170 |
171 | 172 |
173 |
174 | 175 | 176 | 177 | 178 | 179 | -------------------------------------------------------------------------------- /js/clipboard.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * clipboard.js v1.5.12 3 | * https://zenorocha.github.io/clipboard.js 4 | * 5 | * Licensed MIT © Zeno Rocha 6 | */ 7 | !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,o){function i(a,c){if(!n[a]){if(!e[a]){var s="function"==typeof require&&require;if(!c&&s)return s(a,!0);if(r)return r(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n?n:t)},u,u.exports,t,e,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;ao;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,a=o.length;a>r;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if("undefined"!=typeof o)r(n,e("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=function(){function t(t,e){for(var n=0;n 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Supervisor | Employee REgistration 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 32 |
33 | 44 |
45 | 55 |
56 |
57 |
58 |
59 | Employee Registration
60 |
61 |
62 |
63 | 64 |
65 |
66 |
67 |
68 | 69 | 84 |
85 |
86 | 87 | 88 |
89 |
90 | 91 | 92 |
93 |
94 |
95 | 96 |
97 | 101 |
102 |
103 | 107 |
108 | 109 |
110 | 111 |
112 |
113 |
114 | 115 |
116 | 117 |
118 |
119 | 120 | 126 |
127 |
128 | 129 | 130 |
131 |
132 | 133 | 134 |
135 |
136 | 137 | 138 |
139 |
140 | 141 | 142 |
143 |
144 |

145 | Please Select Department

"; 150 | } 151 | $desig=$_POST['desig']; 152 | if(empty($desig)){ 153 | echo "

Please Select Designation

"; 154 | } 155 | $name=$_POST['name']; 156 | if(!preg_match("/^[a-zA-Z ]*$/",$name)){ 157 | echo "

Name should contain only alphabet

"; 158 | } 159 | $phone=$_POST['phone']; 160 | if(!preg_match("/^[0-9]*$/",$phone)){ 161 | echo "

Enter Valid Phone number

"; 162 | } 163 | $gen=$_POST['gender']; 164 | if(empty($gen)){ 165 | echo "

Please Select gender

"; 166 | } 167 | $email=$_POST['email']; 168 | if(!preg_match("/^[0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/",$email)){ 169 | echo "

Please enter correct email

"; 170 | } 171 | $pass=md5($_POST['pass']); 172 | if(empty($pass)){ 173 | echo "

Please Enter Password

"; 174 | } 175 | $salary=$_POST['salary']; 176 | if(!preg_match("/^[0-9]*$/",$salary)){ 177 | echo "

Enter Salary in number

"; 178 | } 179 | $image_extension = array("png","jpg","jpeg","PNG","JPG","JPEG"); 180 | $validate_photo = pathinfo($_FILES["photo"]["name"], PATHINFO_EXTENSION); 181 | $photo = $_FILES['photo']['name']; 182 | $target = "../emp_photo/"; 183 | $fileTarget = $target.$photo; 184 | $tempFileName = $_FILES["photo"]["tmp_name"]; 185 | if ($_FILES["photo"]["size"] > 2097152) { 186 | echo ""; 187 | return; 188 | } 189 | else if (! in_array($validate_photo, $image_extension)) { 190 | 191 | echo ""; 192 | return; 193 | } 194 | else{ 195 | $result = move_uploaded_file($tempFileName,$fileTarget); 196 | $sql = "INSERT INTO employee_info(dept_id,designation_id,emp_name,emp_gender,emp_phone,emp_email,emp_password,emp_photo,emp_salary) VALUES ($dept,$desig,'$name','$gen',$phone,'$email','$pass','$fileTarget',$salary)"; 197 | $query=mysqli_query($conn,$sql); 198 | if(!$query){ 199 | echo "

"; 200 | } 201 | else{ 202 | echo ""; 203 | } 204 | } 205 | } 206 | ?> 207 |

208 | 211 | 212 |
213 |
214 |
215 | 216 |
217 |
218 | 219 |
220 |
221 | 222 |
223 |
224 | 225 | 226 | -------------------------------------------------------------------------------- /admin/reg_employee.php: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Admin | Employee REgistration 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 31 |
32 | 43 |
44 | 54 |
55 |
56 |
57 |
58 | Employee Registration
59 |
60 |
61 |
62 | 63 |
64 |
65 |
66 |
67 | 68 | 83 |
84 |
85 | 86 | 87 |
88 |
89 | 90 | 91 |
92 |
93 |
94 | 95 |
96 | 100 |
101 |
102 | 106 |
107 | 108 |
109 | 110 |
111 |
112 |
113 | 114 |
115 | 116 |
117 |
118 | 119 | 134 |
135 |
136 | 137 | 138 |
139 |
140 | 141 | 142 |
143 |
144 | 145 | 146 |
147 |
148 | 149 | 150 |
151 |
152 |

153 | Please Select Department

"; 158 | } 159 | $desig=$_POST['desig']; 160 | if(empty($desig)){ 161 | echo "

Please Select Designation

"; 162 | } 163 | $name=$_POST['name']; 164 | if(!preg_match("/^[a-zA-Z ]*$/",$name)){ 165 | echo "

Name should contain only alphabet

"; 166 | } 167 | $phone=$_POST['phone']; 168 | if(!preg_match("/^[0-9]*$/",$phone)){ 169 | echo "

Enter Valid Phone number

"; 170 | } 171 | $gen=$_POST['gender']; 172 | if(empty($gen)){ 173 | echo "

Please Select gender

"; 174 | } 175 | $email=$_POST['email']; 176 | if(!preg_match("/^[0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/",$email)){ 177 | echo "

Please enter correct email

"; 178 | } 179 | $pass=md5($_POST['pass']); 180 | if(empty($pass)){ 181 | echo "

Please Enter Password

"; 182 | } 183 | $salary=$_POST['salary']; 184 | if(!preg_match("/^[0-9]*$/",$salary)){ 185 | echo "

Enter Salary in number

"; 186 | } 187 | $image_extension = array("png","jpg","jpeg","PNG","JPG","JPEG"); 188 | $validate_photo = pathinfo($_FILES["photo"]["name"], PATHINFO_EXTENSION); 189 | $photo = $_FILES['photo']['name']; 190 | $target = "../emp_photo/"; 191 | $fileTarget = $target.$photo; 192 | $tempFileName = $_FILES["photo"]["tmp_name"]; 193 | if ($_FILES["photo"]["size"] > 2097152) { 194 | echo ""; 195 | return; 196 | } 197 | else if (! in_array($validate_photo, $image_extension)) { 198 | 199 | echo ""; 200 | return; 201 | } 202 | else{ 203 | $result = move_uploaded_file($tempFileName,$fileTarget); 204 | $sql = "INSERT INTO employee_info(dept_id,designation_id,emp_name,emp_gender,emp_phone,emp_email,emp_password,emp_photo,emp_salary) VALUES ($dept,$desig,'$name','$gen',$phone,'$email','$pass','$fileTarget',$salary)"; 205 | $query=mysqli_query($conn,$sql); 206 | if(!$query){ 207 | echo "

"; 208 | } 209 | else{ 210 | echo ""; 211 | } 212 | } 213 | } 214 | ?> 215 |

216 | 219 | 220 |
221 |
222 |
223 | 224 |
225 |
226 | 227 |
228 |
229 | 230 |
231 |
232 | 233 | 234 | -------------------------------------------------------------------------------- /js/app.js: -------------------------------------------------------------------------------- 1 | function escapeHtml(text) { 2 | var map = { 3 | '&': '&', 4 | '<': '<', 5 | '>': '>', 6 | '"': '"', 7 | "'": ''' 8 | }; 9 | 10 | return text.replace(/[&<>"']/g, function (m) { return map[m]; }); 11 | } 12 | 13 | var app = new Vue({ 14 | el: '#app', 15 | data: { 16 | store: store, 17 | cameras: [], 18 | activeCamera: null, 19 | chime: null, 20 | scanner: null, 21 | currentTransform: { }, 22 | currentHttpAction: { }, 23 | scans: store.get('scans') || [], 24 | transforms: store.get('transforms') || [], 25 | linkAction: store.get('link-action') || 'none', 26 | httpAction: store.get('http-action') || { enabled: false }, 27 | activeCameraId: store.get('active-camera-id') || null, 28 | playAudio: store.get('play-audio') || false, 29 | allowBackgroundScan: store.get('background-scan') || false 30 | }, 31 | methods: { 32 | start: function () { 33 | var self = this; 34 | 35 | function startScanner(camera) { 36 | scanner.start(camera, function (err) { 37 | if (err && err.name === 'PermissionDeniedError') { 38 | self.showError('Camera access denied.'); 39 | } 40 | }); 41 | } 42 | 43 | var scanner = new CameraQrScanner(document.querySelector('#camera')); 44 | scanner.onResult = this.onScanResult; 45 | 46 | Camera.getCameras(function (err, cameras) { 47 | self.cameras = cameras; 48 | 49 | var camera = cameras[0]; 50 | if (self.activeCameraId) { 51 | camera = cameras.find(c => c.id === self.activeCameraId) || camera; 52 | } 53 | 54 | self.activeCamera = camera; 55 | }); 56 | 57 | this.$watch('activeCamera', function (camera) { 58 | self.store.set('active-camera-id', camera.id); 59 | 60 | if (camera.name) { 61 | this.showInfo(camera.name); 62 | } 63 | 64 | startScanner(camera); 65 | }); 66 | 67 | this.$watch('playAudio', function (play) { 68 | self.store.set('play-audio', play); 69 | if (play) { 70 | this.chime.play(); 71 | } 72 | }); 73 | 74 | this.$watch('linkAction', function (linkAction) { 75 | self.store.set('link-action', linkAction); 76 | }); 77 | 78 | this.$watch('scans', function (scans) { 79 | self.store.set('scans', scans); 80 | }, { deep: true }); 81 | 82 | this.$watch('transforms', function (transforms) { 83 | self.store.set('transforms', transforms); 84 | }, { deep: true }); 85 | 86 | this.$watch('allowBackgroundScan', function (allowBackgroundScan) { 87 | self.store.set('background-scan', allowBackgroundScan); 88 | }); 89 | 90 | this.$watch('httpAction', function (action) { 91 | self.store.set('http-action', action); 92 | }, { deep: true }); 93 | 94 | this.$watch('httpAction.captureImage', function (capture) { 95 | scanner.setCaptureImage(capture); 96 | }); 97 | 98 | this.$watch('httpAction.enabled', function (enabled) { 99 | if (enabled) { 100 | this.editHttpAction(true); 101 | } 102 | }); 103 | 104 | // Workaround: trigger change events on modal form inputs to fix styling. 105 | $('.modal').on('show.bs.modal', function (e) { 106 | $(e.currentTarget).find('.form-control').trigger('change'); 107 | }); 108 | 109 | new Clipboard('.clipboard-copy', { 110 | text: function (trigger) { 111 | return trigger.dataset.clipboard; 112 | } 113 | }); 114 | 115 | Visibility.change(function (e, state) { 116 | if (self.allowBackgroundScan) { 117 | return; 118 | } 119 | 120 | if (state === 'visible') { 121 | setTimeout(function () { 122 | startScanner(self.activeCamera); 123 | }, 0); 124 | } else { 125 | scanner.stop(); 126 | } 127 | }); 128 | 129 | var audioElem = $('