This webshop was created as part of my studies. It is a simple webshop with a login system, a shopping cart and a checkout. The webshop is written in PHP and uses a MySQL database.
presentation_of_the_webshop.mp4
- PHP
- mysql
- ajax
- bootstrap
- w3
- javasrcipt
- phpmailer
- authentication is implemented without a library
- password hashes are stored in the mysql database (no salt)
- Contactform with phpmailer backend
- Orderconfirmations via email are automated
- shoppingcart is stored in the session
- the counter for how many users are currently online works with ajax and polling (no browser refreh needed)
These are the criteria on which the project is graded:
- Login page + (display + function)
- Validate the data before sending it (client side) (function)
- User registration + (display + function) (prevent double registration!)
- Registration confirmation => by email
- Password SHA2 encrypted in database (function)
- Encrypt password before sending (only transfer encrypted passwords)
- Online status with AJAX without reloading the page (number of users online) (display + function)
- Display article overview (display + function)
- Put articles in shopping cart and buy (display + function)
- When ordering, 2 shipping methods can be selected / Normal or Express (+ X €)
- Confirmation by email (function) with article quantity + article name + total amount + shipping costs
- Overview of purchased items (display + function)
- In the overview a button with the function to execute the same order again.
- Support for special characters (ä, ö, ü, ...)
- Security - Only logged in users are allowed to access the page
- On the start page a carousel - Example: (https://getbootstrap.com/docs/4.3/components/carousel/)
- User is greeted when logging in with: "Hello Mustermann, you were last online on XX.XX.XXXX"
- Readability of the website
As an extra, a Linux server with Apache was set up and made available online with the help of ngrok.io.
The project was programmed with the code editor VSCode.
The design is mostly self-made, and the layout was optimized using css for a responsive design.