OOP Challenge
8 Challenge: Bouw een OOP Login Systeem
🌟 Leerdoelen
- Je past klassen, objecten, constructors en methodes toe in een realistisch scenario.
- Je gebruikt encapsulation om gebruikersgegevens te beveiligen.
- Je slaat gebruikers op met PDO en hashed wachtwoorden.
- Je maakt een registratie- en loginroutine in OOP-stijl.
💡 Opdrachtbeschrijving
Situatie: Je werkt bij een klein webbureau en een klant wil een eenvoudig maar veilig login-systeem laten bouwen in PHP. Je gaat dit project zelfstandig uitvoeren als een mini-challenge. Dit is een uitstekende kans om je OOP-vaardigheden te laten zien in je GitHub portfolio. Dat kan je helpen om sneller een stage of baan te vinden in de webdevelopment-sector!
Wat je gaat bouwen:
- Een registratiepagina waar nieuwe gebruikers zich kunnen aanmelden
- Een loginpagina waar gebruikers zich kunnen aanmelden
- Beveiligde opslag van wachtwoorden via
password_hash()
- Gebruik van
PDO
voor communicatie met de database (bijv. SQLite of MySQL)
📄 Structuur en Klassen
- Class User
- Properties:
private $id
,$username
,$passwordHash
- Constructor stelt naam + wachtwoord in (en hashed het wachtwoord)
- Methode
verifyPassword($plainText)
vergelijkt met hash - Getters voor
getId()
engetUsername()
- Properties:
- Class UserDatabase
- Maakt verbinding via
PDO
(gebruik SQLite of MySQL) - Methodes:
addUser(User $user)
,findUserByUsername($name)
- Prepared statements verplicht!
- Maakt verbinding via
🚀 Technische vereisten
- Gebruik password_hash() en password_verify() voor wachtwoorden
- PDO met prepared statements (geen ruwe SQL!)
- Toon foutmeldingen bij fouten (bestaande user, fout wachtwoord, etc.)
🛠️ Bestanden
User.php
– beschrijft de user zelfUserDatabase.php
– regelt opslag en ophalenregister.php
– laat gebruiker registrerenlogin.php
– laat gebruiker inloggenlogin-success.php
– pagina die je ziet na succesvol inloggen
🧠 Reflectie
- Wat zijn de voordelen van wachtwoord hashing?
- Waarom gebruiken we een aparte klasse voor opslag en een voor gebruikers?
- Wat zou je uitbreiden als je dit systeem echt online wilde zetten?
📅 Bonus: Voor je portfolio
Zet dit project op GitHub met een korte uitleg in de README over hoe het werkt. Voeg schermafbeeldingen toe van het registratie- en loginproces. Dit is een mooi voorbeeldproject om te laten zien wat je kunt!
📄 Inleveren
- Alle bestanden in 1 map (
login-oop
) - Reflectie in
reflectie-login-<jouw-naam>.txt
- (Optioneel) Link naar je GitHub repository