Créez un repository GitHub public avec un README et appelez-le bre03-secu-blog
.
Clonez-le dans le dossier sites/php
de votre IDE.
Vous trouverez les fichiers du projet dans l’archive secu-blog.zip
ici.
Parcourez ces fichiers, vous verrez qu’une partie des contenus vous sont déjà fournis. À vous de compléter le reste.
Sur PhpMyAdmin, créez une base de données prenomnom_secu_blog
(en utf8_general_ci) et importez-y les fichiers SQL que vous trouverez ici dans l’ordre suivant :
categories.sql
users.sql
posts.sql
posts_categories.sql
comments.sql
Faites en sorte que vos modèles soient conformes à ce qui est présent dans votre base de données. Vous devrez utiliser la composition pour représenter les jointures (par exemple, un Post
a, entre autres, une Category
et un User
en attribut).
La table posts_categories
est une pure table de liaison, elle n’a donc pas de modèle.
Vous allez devoir créer les managers vous permettant de manipuler votre base de données. Attention, vous devez obligatoirement hydrater des instances de classes.
Voici les méthodes minimum que vous devez avoir dans vos Managers :
findAll()
qui retourne toutes les catégoriesfindOne(int $id)
qui retourne la catégorie qui a l’id passé en paramètre, null si elle n’existe pasfindLatest()
qui retourne les 4 derniers postsfindOne(int $id)
qui retourne le post qui a l’id passé en paramètre, null si il n’existe pasfindByCategory(int $categoryId)
qui retourne les posts ayant la catégorie dont l’id est passé en paramètrefindByPost(int $postId)
qui retourne les commentaires ayant le post dont l’id est passé en paramètrecreate(Comment $comment)
qui insère le commentaire passé en paramètres dans la base de donnéesfindByEmail(string $email)
qui retourne le user qui a l’email passé en paramètre, null si il n’existe pascreate(User $user)
qui insère l’utilisateur passé en paramètres dans la base de donnéesVous allez devoir utiliser vos controllers pour afficher le contenu de vos pages et gérer la soumission de vos formulaires. Attention, vous devez gérer la faille CSRF et la faille XSS pour toute information soumise par l’utilisateur.
Les mots de passe doivent faire 8 caractères au minimum, avec au moins une majuscule, une minuscule, un chiffre et un caractère spécial.
Vous allez devoir utiliser une expression régulière pour cela, mon conseil, demandez à ChatGPT (ou toute autre IA) de rédiger cette expression pour vous et de vous l’expliquer. Les expressions régulières sont une syntaxe à part entière d’où ce conseil. Vous avez un bref cours sur les Regex et leu usage en PHP ici : https://elearning.3wa.fr/mod/page/view.php?id=12370.
Les mots de passe doivent être chiffrés avec l’algorithme BCRYPT.