Aller plus loin
Aller plus loin
Ce TP ne concernait que la structure de base d'un blog avec commentaires. Comme il est relativement simple, les possibilités d'extension ne manquent pas. ;-)
Alors, comment pourrait-on améliorer notre blog ? Voici quelques suggestions que je vous conseille d'étudier et qui vous feront progresser.
Un formulaire d'ajout de commentaires
Sur la page commentaires.php, rajoutez un formulaire pour que n'importe quel visiteur puisse poster un commentaire.
Ce formulaire redirigera vers une page qui enregistrera le commentaire puis qui redirigera vers la liste des commentaires, comme on l'avait fait avec le mini-chat. C'est ce que vous pouvez voir sur la figure suivante.
Structure des pages avec ajout de commentaires
C'est à votre portée ; vous avez déjà réussi à le faire, allez-y !
Utiliser les includes
Certaines portions de code sont un peu répétitives. Par exemple, on retrouve le même bloc affichant un billet sur la page des billets et sur celle des commentaires.
Il serait peut-être plus simple d'avoir un seul code dans un fichier que l'on inclurait ensuite depuis index.php et commentaires.php.
Vérifier si le billet existe sur la page des commentaires
Imaginez que le visiteur s'amuse à modifier l'URL de la page des commentaires. Par exemple s'il essaie d'accéder à commentaires.php?billet=819202 et que le billet no 819202 n'existe pas, il n'aura pas de message d'erreur (en fait, le contenu de la page sera vide). Pour que votre site paraisse un peu plus sérieux, vous devriez afficher une erreur.
Pour cela, regardez si la requête qui récupère le contenu du billet renvoie des données. Le plus simple est donc de vérifier après le fetch() si la variable $donnees est vide ou non, grâce à la fonction empty().
Ainsi, si la variable est vide, vous pourrez afficher un message d'erreur comme « Ce billet n'existe pas ». Sinon, vous afficherez le reste de la page normalement.
Paginer les billets et commentaires
Quand vous commencerez à avoir beaucoup de billets (et beaucoup de commentaires), vous voudrez peut-être ne pas tout afficher sur la même page. Pour cela, il faut créer un système de pagination.
Supposons que vous souhaitiez afficher uniquement cinq commentaires par page. Si vous voulez afficher des liens vers chacune des pages, il faut savoir combien votre blog comporte de billets.
Par exemple, si vous avez 5 billets, il n'y aura qu'une seule page. Si vous avez 12 billets, il y aura trois pages. Pour connaître le nombre de billets, une requête SQL avec COUNT(*) est indispensable :
SELECT COUNT(*) AS nb_billets FROM billets |
Une fois ce nombre de billets récupéré, vous pouvez trouver le nombre de pages et créer des liens vers chacune d'elles :
Page : 1 2 3 4
Chacun de ces nombres amènera vers la même page et ajoutera dans l'URL le numéro de la page :
<a href="index.php?page=2">2</a> |
À l'aide du paramètre $_GET['page'] vous pourrez déterminer quelle page vous devez afficher. À vous d'adapter la requête SQL pour commencer uniquement à partir du billet no $x$. Par exemple, si vous demandez à afficher la page 2, vous voudrez afficher uniquement les billets nos 4 à 8 (n'oubliez pas qu'on commence à compter à partir de 0 !). Revoyez la section sur LIMIT au besoin.
Et si aucun numéro de page n'est défini dans l'URL, lorsqu'on arrive la première fois sur le blog ?
Dans ce cas, si $_GET['page'] n'est pas défini, vous devrez considérer que le visiteur veut afficher la page 1 (la plus récente).
Ça demande un peu de réflexion mais le jeu en vaut la chandelle ! N'hésitez pas à demander de l'aide sur les forums si nécessaire.
Réaliser une interface d'administration du blog
C'est probablement l'amélioration la plus longue. Il faudra créer des pages qui permettent de modifier, supprimer et ajouter de nouveaux billets.
Un problème cependant : comment protéger l'accès à ces pages ? En effet, vous devriez être seuls à avoir accès à votre interface d'administration, sinon n'importe qui pourra ajouter des billets s'il connaît l'URL de la page d'administration !
Plusieurs techniques existent pour protéger l'accès à l'administration. Le plus simple dans ce cas est de créer un sous-dossier admin qui contiendra tous les fichiers d'administration du blog (ajouter.php,modifier.php, supprimer.php…). Ce dossier admin sera entièrement protégé à l'aide des fichiers.htaccess et .htpasswd, ce qui fait que personne ne pourra charger les pages qu'il contient à moins de connaître le login et le mot de passe (figure suivante).
Structure des pages avec admin
Pour en savoir plus sur la protection d'un dossier avec ces fichiers .htaccess et .htpasswd, je vous invite à consulter l'annexe du cours correspondant.
Allez, au boulot ! ;-)
Créé avec HelpNDoc Personal Edition: Rationalisez votre processus de documentation avec la fonction de conversion WinHelp HLP vers CHM de HelpNDoc