
The goal of this practice project was to explore various PHP functionalities and utilize an SQL database in such a way that data could be directly saved, retrieved, and modified from a web form. The project was built entirely from scratch with PHP, HTML and SQL. This was also one of my biggest projects so far.
As an example, I adapted the site into a fault report/ticketing system for a property management company. In this system, a resident can report an issue in their apartment. The report is stored in the database and can be retrieved as a list, which is displayed on the site as separate cards.



Implementing
Additionally, I implemented a login system using PHP. The site includes a registration form where users can sign up by providing a username, password, and email address. The system stores this information in the database. After registering, users can log in with their credentials. The login process uses PHPs built-in password hashing function password_hash(), ensuring that passwords are securely encrypted while stored in the database. During login, the system verifies the user-provided password against the hashed password in the database. If the credentials match, a unique session ID is created and stored in the user’s browser, enabling authentication.
The ticketing system and the login system are independent features, but I integrated them into this practice project. Unlike a real-world implementation, the logged tickets can be freely viewed by anyone. Finally, I created a bilingual version of the site. I built separate files for each language, from which the PHP script retrieves the necessary translations using a key-value approach. This required significant effort but allows content changes to be made in a single file, keeping different language versions easy to manage.



Tech talk
During the project, I also practiced using PHPs MVC architecture, which separates functionalities into different files. This makes updating and debugging the system more efficient. Additionally, I implemented error-handling functions in the login system, ensuring that required fields are filled out, email addresses have the correct format, and that the username or email is not already in use. Based on these checks, the user receives clear error messages. All form inputs are sanitized using PHPs htmlspecialchars() function, which converts the input data into a safe format. SQL queries utilize prepared statements, ensuring that user input is treated strictly as data before being stored in the database, preventing SQL injection attacks.
See Live version or whole project from Github via buttons down below
