Bien organiser son site
L'architecture orientée MVC est la solution adoptée par une majorité de sites
web qui intègrent leur contenu au travers d'un script unique index.php.
Où mettre ses templates
Les templates correspondent à tous les scripts appelés depuis votre
contrôleur, en général index.php. On place ces templates dans le
répertoire templates.
Ces scripts n'ont pas une extension php ou html, mais se
distinguent avec l'extension phtml. Il n'y a pas de norme, mais
l'extension de fichier phtml est celle généralement utilisée pour
indiquer que ce type de fichier contient du code HTML pouvant être complété avec du code
PHP.
Voir: PHP comme moteur de templates.
Une des failles de sécurité avec l'extension phtml est qu'il est possible
de voir le code source des templates:
http://www.monsite.com/templates/validationInscription.phtml
affichera tout le code source du template validationInscription.phtml.
On remédie à cette faille de sécurité en intégrant au répertoire templates un
fichier .htaccess contenant ceci:
deny from all
Si vous êtes sous Windows, il n'est pas possible de créer directement ce fichier .htaccess
dans les dossiers contenant vos fichiers sources. Pour Windows, créez un fichier nommé
htaccess.txt puis après transfert sur votre serveur,
renommez-le en .htaccess.
Cette protection est simple et radicale et s'applique à tous les types de fichiers placés dans
le répertoire templates.
Où mettre les fichiers css et images
On évitera de mettre les fichiers définissant les styles et les images à la racine du site. Pour chaque type de fichiers, on crée un répertoire spécifique:
- un répertoire
csspour les feuilles de style - un répertoire
imagespour toutes les images utilisées dans les templates - un répertoire
jspour tous les scripts javascript
Comme le contenu de ces répertoires doit être librement accessible, on n'y mettra pas de
fichier .htaccess.
Où mettre les librairies
On désigne par librairies toutes les fonctions et classes d'usage générales et applicatives.
En général, on les met dans un répertoire distinct, en général inc (pour
fichiers à inclure).
Par exemple, votre site et le script index.php a besoin d'intégrer des paramètres
constants, comme les codes d'accès aux bases de données. On peut mettre ces codes dans un fichier
parameters.php et contenant par exemple ceci:
$baseLogin = "monlog"; $basePaswd = "AZERTY"; $maBase = "annonces";
Si une page a besoin du centenu de ce fichier, il intégrera les informations de paramétrage de cette manière:
<?php include 'inc/parameters.php'; ?>
Les fichiers d'un répertoire inc sont également protégés par un fichier
.htaccess placé dans ce répertoire inc.
Plus généralement, on place un fichier .htaccess dans tous les répertoires
non accessibles directement par le navigateur. Ainsi, les scripts JavaScripts sont généralement
placés dans un répertoire js et dans ce répertoire js on ne met
pas de fichier .htaccess parce que le navigateur coté client final doit
pouvoir accéder à ce répertoire.
En résumé
Voici l'arborescence minimale pour commencer à bien structurer le contenu de votre premier site web. Ces répertoires sont à créer à partir de la racine de votre site web:
- css
- images
- inc
- js
- logs
- templates
Ici, le répertoire logs est destiné à enregistrer toutes les actions spéciales:
- tracage d'actions spéciales
- enregistrement d'erreurs de fonctionnement serveur, etc...
Par exemple, dans notre modèle MVC simplifié, on charge un template après avoir testé l'existence
de ce template. On peut tracer les pages dont le nom de fichier n'existe pas. Exemple, un client tente
d'accéder à la page listePrix alors que la bonne page est listeDesPrix. Si
on rajoute un script de traçage de ces erreurs d'accès à des templates qui n'existent pas, on retrouvera
ces traces dans des fichiers spécialement enregistrés dans ce répertoire logs.
Le traçage des erreurs de chargement des templates est traité ici: traçage des erreurs dans un fichier log