Votre site PHP (presque) complet : architecture MVC et bonnes pratiques Par Sav
Votre site PHP (presque) complet : architecture MVC et bonnes pratiques Par Savageman www.siteduzero.com Licence Creative Commons BY-NC-SA 2.0 Dernière mise à jour le 7/05/2010 Sommaire 1 Sommaire ........................................................................................................................................... 0 Partager .............................................................................................................................................. 2 Votre site PHP (presque) complet : architecture MVC et bonnes pratiques ....................................... 2 Historique du tutoriel ......................................................................................................................................................... 2 Partie 1 : Introduction : l'avant-tutoriel ................................................................................................. 3 Avant-propos, comment fonctionne ce tutoriel .................................................................................................................. 3 Introduction, objectifs et pré-requis ............................................................................................................................................................................. 3 Organisation du code et des fichiers ........................................................................................................................................................................... 3 Modules et actions ...................................................................................................................................................................................................... 4 Le MVC, ou séparation des couches .......................................................................................................................................................................... 4 À propos des librairies ................................................................................................................................................................................................. 4 Architecture finale utilisée ........................................................................................................................................................................................... 5 Squelette d'une page vierge ........................................................................................................................................................................................ 9 Récapitulatif de l'arborescence ................................................................................................................................................................................... 10 Bonnes pratiques à appliquer ......................................................................................................................................... 10 Never Trust User Input .............................................................................................................................................................................................. 12 L'enfer des guillemets magiques ............................................................................................................................................................................... 13 Produire un code lisible et compréhensible .............................................................................................................................................................. 13 Un nommage correct de vos variables et fonctions dans un but d'auto-documentation ........................................................................................... 14 Une utilisation judicieuse des constantes ................................................................................................................................................................. 17 Les classes utilisées dans ce tutoriel .............................................................................................................................. 17 Accès à la base de données avec PDO2 .................................................................................................................................................................. 18 Gestion des formulaires avec la classe Form ........................................................................................................................................................... 18 Création et affichage d'un formulaire ........................................................................................................................................................................ 20 Ajout d'un champ ....................................................................................................................................................................................................... 21 Les différents types de champs et leur utilisation ..................................................................................................................................................... 24 Résumé des types de champs disponibles et de leurs options ................................................................................................................................ 25 Validation / vérification du formulaire et récupération des valeurs des champs ........................................................................................................ 26 La suite ? ................................................................................................................................................................................................................... 27 Partie 2 : Des systèmes simples : espace membres et livre d'or ...................................................... 27 La base : l'espace membre ............................................................................................................................................. 27 Objectifs et préparation ............................................................................................................................................................................................. 27 Objectifs .................................................................................................................................................................................................................... 27 La table SQL ............................................................................................................................................................................................................. 28 Inscription .................................................................................................................................................................................................................. 28 Préparation du terrain ................................................................................................................................................................................................ 28 Le formulaire ............................................................................................................................................................................................................. 29 La vérification ............................................................................................................................................................................................................ 31 Fin de la vérification et traitement quand tout s'est bien passé ................................................................................................................................. 35 La validation par mail ................................................................................................................................................................................................ 36 Connexion et déconnexion ........................................................................................................................................................................................ 36 Préparation du terrain ................................................................................................................................................................................................ 37 Le formulaire de connexion ....................................................................................................................................................................................... 38 La vérification du formulaire de connexion ................................................................................................................................................................ 40 Commentaires et explications ................................................................................................................................................................................... 40 Vérifier que l'utilisateur est connecté ......................................................................................................................................................................... 41 Modification du menu et des droits d'accès .............................................................................................................................................................. 42 La connexion automatique ........................................................................................................................................................................................ 45 Déconnexion ............................................................................................................................................................................................................. 45 Bonus : le profil d'un membre .......................................................................................................................................... 46 [Mini TP] Affichage d'un profil utilisateur .................................................................................................................................................................... 46 Affichage d'un profil [Premier TP] .............................................................................................................................................................................. 48 Modification d'un profil utilisateur .............................................................................................................................................................................. 48 Modification d'un profil ............................................................................................................................................................................................... 48 Mise en place des formulaires .................................................................................................................................................................................. 52 Commentaires et explications ................................................................................................................................................................................... Sommaire 1/52 www.siteduzero.com Votre site PHP (presque) complet : architecture MVC et bonnes pratiques Par Savageman Mise à jour : 13/01/2009 Difficulté : Intermédiaire 2 439 visites depuis 7 jours, classé 57/778 Envie de progresser en PHP ? Envie d'apprendre et de mettre en pratique une architecture MVC à travers la réalisation de différents modules* ? De connaître des bonnes pratiques et avoir un code sécurisé ? Tels sont les objectifs de ce tutoriel, alors bienvenue, et j'espère que le voyage vous plaira ! * Des exemples de modules sont : un espace membre, un livre d'or, une gestion de news, un album photo, un forum, etc. (la liste est longue !). À noter que ces exemples ne seront pas tous traités dans le tutoriel, ça serait beaucoup trop long ! Mes remerciements chaleureux à mes bêta-testeurs tarzoune, mrjay42, 11 et yøshï pour leurs commentaires et suggestions. Un remerciement particulier à `Haku, ex-membre impliqué et auteur de la majeure partie du chapitre "Bonnes pratiques à appliquer". Je remercie également ptipilou pour la correction de ce tutoriel, ainsi que Zopieux qui l'a validé. Historique du tutoriel 13 janvier 2009 : deuxième validation avec corrections de nombreux bugs et ajout de la connexion automatique. Les fonctions combinaison_connexion_valide() et lire_infos_utilisateur() ont été mises à jour, pensez à les modifier ! 7 janvier 2009 : première validation contenant toute l'introduction (avant-tutoriel), l'espace membre (inscription, (dé)connexion) et le profil (affichage, modification). 21 décembre 2008 : envoi à la zCorrection. décembre 2008 : relectures et bêta-test. novembre 2008 : rédaction du tutoriel. Votre site PHP (presque) complet : architecture MVC et bonnes pratiques 2/52 www.siteduzero.com Partie 1 : Introduction : l'avant-tutoriel Cette partie : définit les termes importants à connaître ; présente la mise en place de l'architecture MVC et de l'arborescence pour le site ; explique les concepts importants de sécurité à maîtriser et les bonnes pratiques à appliquer ; et présente les librairies qui seront utilisées. Avant-propos, comment fonctionne ce tutoriel Introduction, objectifs et pré-requis Dans la mesure du possible, les parties sont d'une difficulté croissante : la première partie est la plus facile, tandis que la dernière est la plus difficile. Les parties du tutoriel doivent êtres lues dans l'ordre, car chacune a comme pré-requis l'ensemble des parties précédentes. Par exemple, pour pouvoir faire le forum, il vous faut savoir faire le livre d'or. Ce tutoriel est plus difficile que celui de M@teo21, mais les modules abordés - sous forme de TP quand c'est possible - sont plus approfondis ! Il est donc indispensable d'avoir déjà lu le tutoriel officiel avant de tenter celui-ci (mis à part la partie sur les expressions régulières qui nous sera inutile). Il est donc adressé à des novices, mais des pré-requis de POO sont indispensables à sa compréhension. Rassurez-vous, il n'est pas nécessaire de savoir coder des classes en POO (ça sera déjà fait pour vous), seulement de comprendre leur fonctionnement et de savoir les utiliser. Le but n'est pas d'entrer dans le détail à ce niveau. Dans ce tutoriel, 2 classes principales seront utilisées : une pour l'accès à la base de données SQL (mySQL dans le cas présent) : nous utiliserons PDO, qui définit une excellente interface pour accéder à une BDD depuis PHP 5.1. Il est important de savoir que c'est le futur standard utilisé par PHP ; en effet, dans PHP 6, les fonctions mysql_* et mysqli_* (ou plus généralement les extensions mysql et mysqli) disparaîtront au profit de PDO. Le tutoriel de Draeli sur PDO résume bien la situation et sera largement suffisant dans le cadre de ce tutoriel ! une pour la gestion des formulaires : c'est une classe que j'ai codée et qui simplifie largement la création et surtout le traitement des formulaires ! Je peux vous assurer que vous aurez beaucoup moins de lignes de code à écrire en l'utilisant ! Je la présente rapidement à la fin de la partie afin que vous sachiez vous en servir et que vous ayez un aperçu plus en détails des fonctionnalités de celle-ci. Une troisième classe nommée Image fait également son apparition (code source disponible ici). Elle permet simplement de lire, redimensionner et sauvegarder des images aux formats JPG, PNG et GIF sans se soucier des fonctions à utiliser pour lire et enregistrer l'image. Enfin, au niveau de la base de données, les requêtes préparées seront utilisées tout au long du tutoriel. Si vous ne savez pas ce que c'est, une lecture de la partie 5 du tutoriel de Draeli sur la question vous sera d'une grande utilité ! En résumé, la structure de la requête est stockée sur le serveur, puis le programmeur fait pointer les données qu'il souhaite sur la requête. Ainsi, la structure de la requête est figée avant l'exécution et les données fournies ne peuvent en aucun cas la modifier, ce qui rend les injections SQL tout simplement impossibles. PHP 5.1 au minimum est nécessaire pour suivre ce tutoriel, étant donné que nous allons utiliser PDO (disponible depuis PHP 5.1) ainsi que ma librairie Form (fonctionnant avec PHP 5+). N'essayez pas de lire la suite du tutoriel si vous n'avez pas lu le tutoriel officiel ou si vous ne connaissez rien à PDO ou aux requêtes préparées. V ous ne comprendriez tout simplement rien aux codes suggérés... Organisation du code et des fichiers Ce chapitre décrit l'arborescence que nous allons utiliser pour la réalisation de notre site et de nos modules. Tous les mots en bleu et gras présentent du vocabulaire potentiellement inconnu pour vous. Ces définitions sont très importantes : si donc vous ne comprenez pas un de ces mots, relisez plusieurs fois le paragraphe en question ! Modules et actions Chaque partie de ce tutoriel propose la création d'un module (exemple : un livre d'or, une gestion de news), qui seront chacun Votre site PHP (presque) complet : architecture MVC et bonnes pratiques 3/52 www.siteduzero.com constitués d'actions (exemples : lire une news, poster un message dans le livre d'or). Dans cette optique, il nous faut une hiérarchie de répertoires capable de bien organiser notre code source à ce niveau. V oici ce que je vous propose et ce que je vais utiliser durant tout le tutoriel. Nous aurons un dossier ~/modules/ qui contiendra tous nos modules. Chaque module sera contenu dans un dossier portant le nom du module et situé dans ~/modules/. Chaque action sera placée dans un fichier spécifique dans le dossier du module, portant le nom de l'action. Toutes ces pages ne seront pas appelées directement, mais par la page principale index.php fournie. Toutes les uploads/Management/ votre-site-php-presque-complet-architecture-mvc-et-bonnes-pratiques 2 .pdf
Documents similaires
-
13
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Sep 14, 2022
- Catégorie Management
- Langue French
- Taille du fichier 0.7421MB