{"id":1472,"date":"2021-05-27T15:32:40","date_gmt":"2021-05-27T15:32:40","guid":{"rendered":"https:\/\/codeinsightacademy.com\/blog\/?p=1472"},"modified":"2022-08-04T12:08:00","modified_gmt":"2022-08-04T12:08:00","slug":"php-user-management-system","status":"publish","type":"post","link":"https:\/\/codeinsightacademy.com\/blog\/projects\/php-user-management-system\/","title":{"rendered":"PHP User Management System"},"content":{"rendered":"\n<p>A user or admin facing problem managing data on excel sheet.<br>He\/She need a system to perform at least following operations<\/p>\n\n\n\n<ol><li>Add Record<\/li><li>Modify Record<\/li><li>Delete Record<\/li><li>Show Listing and Search Data to get specific Information.<\/li><\/ol>\n\n\n\n<p>User need a system which should be accessible from internet so that he can work from any machine (laptop\/desktop\/mobile).<\/p>\n\n\n\n<p>You need to develop a web application with best of your knowledge<\/p>\n\n\n\n<p>Roles: Admin<\/p>\n\n\n\n<p>With correct credentials admin should be able to login and see the dashboard.<\/p>\n\n\n\n<p>if credentials are wrong he will stay on login page and show a message \u2013 wrong credentials.<\/p>\n\n\n\n<p>On successful login admin can see users list perform all CRUDL operations.<\/p>\n\n\n\n<h1 class=\"has-text-align-center\">NOTE: you need to use vim editor to edit files<\/h1>\n\n\n\n<p>Following are the wireframes for reference.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2021\/05\/image-10.png\" alt=\"\"\/><figcaption>login.php<\/figcaption><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2021\/05\/image-11.png\" alt=\"\"\/><figcaption>dashboard.php<\/figcaption><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2021\/05\/image-12.png\" alt=\"\"\/><figcaption>add_user.php<\/figcaption><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2021\/05\/image-13.png\" alt=\"\"\/><figcaption>edit_user.php<\/figcaption><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2021\/05\/image-14.png\" alt=\"\"\/><figcaption>delete confirm box<\/figcaption><\/figure><\/div>\n\n\n\n<h2>Technologies to be used<\/h2>\n\n\n\n<ul><li>composer for package management and autoload<\/li><li>ini for configuration<\/li><li>git and gitlab for version control<\/li><li>HTML5 CSS3 Bootstrap 5 for UI\/UX<\/li><li>jquery 3.6 or javascript for validation and AJAX<\/li><li>php 7.4 or 8 as backend programming language<\/li><li>mysql 8 database<\/li><li><strong>PDO for database operations<\/strong><\/li><li>PHPUnit for unit testing<\/li><li>python and php for automation script (Use cron jobs to automatically run script)<\/li><li>nginx web server<\/li><li>use infinityfree \/ webserver \/ cloudserver for website hosting<\/li><li>Jenkins and git-ftp for CI\/CD<\/li><\/ul>\n\n\n\n<h2>MVP \/ Deliverable<\/h2>\n\n\n\n<ol><li>P0<ol><li>Users Listing<\/li><li>Delete User Record<\/li><li>Add User Record with Profile Picture<br>(User status should be enum in database table: enable, disable, blocked, active, inactive)<\/li><li>Update User Record<\/li><li>Session Management Login \/ Logout<\/li><\/ol><\/li><li>P1<ol><li>View User Details in Modal Window<\/li><li>Pagination<\/li><li>Sorting<\/li><li>Searching<\/li><li>Filtering<\/li><\/ol><\/li><li>P2<ol><li>Frontend &#8211; Backend Validation<\/li><li>Export CSV Users<\/li><li>Bulk Upload CSV<\/li><li>Activity Log<\/li><li>Export Activity Log<\/li><\/ol><\/li><li>P3<ol><li>Login with OTP i.e. 2FA (Use Redis to store OTP)<\/li><li>Login Logout for user account<\/li><li>Inactive User status if not logged in for 3 consecutive days<\/li><li>Change Admin and User Password from their respective account<\/li><li>Secret Questions and Forgot Password \/ Recover Password using secret questions or through the email link<\/li><\/ol><\/li><li>P4<ol><li>REST API (Web Services) for User CRUDL Operations<\/li><li>Protect REST API using Basic Authentication or JWT token<\/li><li>Login with google API or Facebook API<\/li><li>PHPUnit test for all functionalities<\/li><li>Licensing or limit user registration<\/li><\/ol><\/li><li>P5<ol><li>Dashboard showing following summary (Use highcharts)<ol><li>Total User<\/li><li>Active Users<\/li><li>License Count \/ Usage Count<\/li><li>Online Users<\/li><li>Weekly Registration Stats<\/li><\/ol><\/li><\/ol><\/li><\/ol>\n\n\n\n<h2>Schema<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2021\/06\/image-51.png\"><img loading=\"lazy\" width=\"985\" height=\"385\" src=\"https:\/\/codeinsightacademy.com\/blog\/http:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2021\/06\/image-51.png\" alt=\"\" class=\"wp-image-1849\" srcset=\"https:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2021\/06\/image-51.png 985w, https:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2021\/06\/image-51-300x117.png 300w, https:\/\/codeinsightacademy.com\/blog\/wp-content\/uploads\/2021\/06\/image-51-768x300.png 768w\" sizes=\"(max-width: 985px) 100vw, 985px\" \/><\/a><\/figure>\n\n\n\n<h2>Ref SQL Queries<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT * FROM users ORDER BY id DESC;\n\nSELECT * FROM users WHERE id = 3;\n\nDELETE FROM users WHERE id = 3;\n\nINSERT INTO users (id, name, age, city, added_at, updated_at) VALUES (NULL, 'sonam gupta', 18, 'gorakhpur', NOW(), NOW());\n\nUPDATE users SET name = 'Sonam Gupta', age = 20, city = 'Gorakhpur', updated_at = NOW() WHERE id = 5;<\/code><\/pre>\n\n\n\n<h2>Reference<\/h2>\n\n\n\n<p><a href=\"https:\/\/youtu.be\/nzoL6o_YHjs\" target=\"_blank\" rel=\"noreferrer noopener\">PHP MySQL CRUD App<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=uf7eL2X8rlM&amp;t=8588s\">Php CRUD Application \u2013 How to Create Website Using Php \u2013 YouTube<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/codeinsightacademy.com\/blog\/infrastructure\/linux\/\" data-type=\"URL\" data-id=\"https:\/\/codeinsightacademy.com\/blog\/infrastructure\/linux\/\" target=\"_blank\">Linux Commands<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/codeinsightacademy.com\/blog\/database\/sql-cheat-sheet\/\" data-type=\"URL\" data-id=\"https:\/\/codeinsightacademy.com\/blog\/database\/sql-cheat-sheet\/\" target=\"_blank\" rel=\"noreferrer noopener\">SQL Cheat Sheet<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=xknP1ToJw1g&amp;list=PL8y0jzNQmUDWlr7od0qcBNDQ7TGIY26-Z\" target=\"_blank\">HTML and CSS<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/youtu.be\/1yYfcMS_r_U\" data-type=\"URL\" data-id=\"https:\/\/youtu.be\/1yYfcMS_r_U\">Php Fundamentals<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=tui3J5YxFCE&amp;list=PL8y0jzNQmUDUUkuQZnaxmjPU9bRB2CDWt\" target=\"_blank\">Php Basics Tutorial<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=4iPq2K4jMZI&amp;list=PL8y0jzNQmUDU4jlMAU0oUOKXbIp6euDCt\" target=\"_blank\">Php Advanced Tutorial<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/youtube.com\/playlist?list=PL8y0jzNQmUDWt3y6BGnqdO1zch8wshNeU\" target=\"_blank\">Javascript Tutorial in Hindi<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/youtube.com\/playlist?list=PL8y0jzNQmUDWNqHiuJId9Oql_0qH5YzC0\" target=\"_blank\" rel=\"noreferrer noopener\">Javascript Tutorial in English<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A user or admin facing problem managing data on excel sheet.He\/She need a system to perform at least following operations Add Record Modify Record Delete Record Show Listing and Search Data to get specific Information. User need a system which should be accessible from internet so that he can work from any machine (laptop\/desktop\/mobile). You [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[32],"tags":[],"_links":{"self":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/1472"}],"collection":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/comments?post=1472"}],"version-history":[{"count":48,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/1472\/revisions"}],"predecessor-version":[{"id":2303,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/1472\/revisions\/2303"}],"wp:attachment":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/media?parent=1472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/categories?post=1472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/tags?post=1472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}