Add Authentication to To-Do App
Prompt
You are tasked with enhancing a simple "to do" web application that uses HTML, CSS, JavaScript for the frontend, and PHP files for server-side operations connected to a local MySQL database via XAMPP. Currently, the app has the following files: - `config.php`: Contains the database connection logic. - `api.php`: Handles the CRUD requests. - `index.html`: Contains the HTML markup, CSS styles, and JavaScript for the client-side. Your goal is to add a complete authentication system to this application with the following requirements: 1. **User Registration:** Implement a registration feature allowing new users to create accounts. This should capture at least a username and password, storing credentials securely in the database (use password hashing). 2. **User Login:** Implement a login feature enabling existing users to authenticate. 3. **Header Navigation:** Place the authentication buttons (`Login`, `Register`, and after login `Logout`) in the header section of `index.html`, which is currently empty. The UI should change appropriately based on the authentication state. 4. **Session Management:** Use PHP sessions to manage login state securely across pages or actions. 5. **Integration:** Integrate the authentication with the existing CRUD operations such that only authenticated users can access to-do functionality. 6. **Security:** Follow best practices for securing authentication (e.g., input validation, password hashing, session security). 7. **User Experience:** Implement navigation or UI changes based on authentication status (e.g., hide login/register after login, show logout, optionally display username). # Steps - Design and create necessary database tables for users, ensuring fields for username, hashed password, and any other needed fields. - Extend `api.php` or create new PHP endpoints for registration and login handling. - Modify `index.html` header to include buttons for `Login`, `Register`, and `Logout` appropriately. - Implement frontend JavaScript to handle authentication workflows (form submissions, state changes). - Use PHP sessions to track login state. - Protect existing CRUD functionalities so they require authentication. - Test the full flow: registration, login, accessing to-do items, logout. # Output Format Provide an outline or code snippets illustrating how to implement these features, including: - Database schema for users table. - Sample PHP code for registration, login, session management. - HTML changes for header and authentication forms. - JavaScript snippets needed for handling UI state and form submission. Ensure clear explanations accompany code examples to clarify how integration occurs. # Notes - Assume knowledge of standard security practices. - Focus on simplicity and clarity suitable for a beginner-to-intermediate full stack developer. - Do not rewrite the entire app—show minimal changes and additions needed for authentication integration.
Related Coding Prompts
Write Code
As a seasoned programmer, your task is to write code in [programming language] to [perform action]. The code should be efficient, well-structured, and optimized for performance. Make sure to follow best practices and industry standards while implementing the necessary algorithms and logic to achieve the desired functionality. Test the code thoroughly to ensure it functions as intended and meets all requirements. Additionally, document the code properly for future reference and maintenance.
Debug Code
Act as a seasoned programmer with over 20 years of commercial experience. Analyze the provided [piece of code] that is causing a specific [error]. Your task involves diagnosing the root cause of the error, understanding the context and functionality intended by the code, and proposing a solution to fix the issue. Your analysis should include a step-by-step walkthrough of the code, identification of any bugs or logical mistakes, and a detailed explanation of how to resolve them. Additionally, suggest any improvements or optimizations to enhance the performance, readability, or maintainability of the code based on your extensive experience. Ensure that your solution adheres to best practices in software development and is compatible with the current development environment where the code is being executed.
Do Code Review
As a seasoned programmer with over 20 years of commercial experience, your task is to perform a comprehensive code review on the provided [piece of code]. Your review should meticulously evaluate the code's efficiency, readability, and maintainability. You are expected to identify any potential bugs, security vulnerabilities, or performance issues and suggest specific improvements or optimizations. Additionally, assess the code's adherence to industry standards and best practices. Your feedback should be constructive and detailed, offering clear explanations and recommendations for changes. Where applicable, provide examples or references to support your suggestions. Your goal is to ensure that the code not only functions as intended but also meets high standards of quality and can be easily managed and scaled in the future. This review is an opportunity to mentor and guide less experienced developers, so your insights should be both educational and actionable.