1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
Pré-requis:
- Un serveur apache exécutant PHP.
- Le n'utilise pas de base de données mais un ensemble de fichiers HTML.
- Le module imagemagick ou GD de PHP pour créer des miniatures des photos (bande passante).
- La possibilité d'utiliser un fichier .htaccess pour la sécurité (du mot de passe admin en particulier).
- Le responsable du site (Melaine) ne doit pas utiliser un navigateur trop vieux (ckeditor).
Informations:
Le site n'utilise pas de base de données mais un ensemble de fichiers dans le dossier "data".
Les données sont dans les formats HTML et JSON, il y aussi des images et des miniatures
Le code suit une architecture modèle-vue-contrôleur, il n'utilise pas de framework mais quelques bibliothèques.
l'upload de son et vidéo ou l'embarquement (suovre le lien sans quitter le site) ne sont pas gérés pour l'instant.
Installation:
Extraire le fichier melainePHP.zip sur le serveur
OU
Se placer dans /var/www et faire un "git clone"
Créer à la racine du site un dossier data si il n'existe pas et lui donner les droits 777
Autoriser le .htaccess (normalement par une manipulation dans le fichier /etc/php/php.ini du serveur)
Augmenter la taille maximale des fichiers pouvant être réléchargé (par défaut de 2Mo) dans le php.ini
En fonction de la configuration et de ce qu'il a été possible de réaliser, éditer le fichier config.php
Redirections:
Si les redirections en cas d'erreur 404 ne fonctionnent pas c'est sans doute que le .htaccess ne pointe pas vers le fichier erreur404.php.
En effet, la racine du serveur pourrait bien, du point de vue d'apache, être le dossier parent à celui du site.
Vérifier le fichier config.php
architecture Modèle-Vue-Contrôleur (MVC):
modèle
^ |
| v
routeur --> contrôleur
|
v
vue ---> envoi de la page au client
-> sens dans lequel le code est interprété
pour retrouver quelque chose dans le code, il suffit de suivre un chemin linéaire dont le départ est ici
pas de croisement, pas de marche arrière, impossible de se perdre!
autre avantage: les chemins sont tous relatifs et sont toujours bons, parce que tous les fichiers sont "inclus" dans index.php
Les dossiers:
-> controller: traitements en PHP pur
-> model: interface entre PHP et données, on y trouve le SQL ou la manipulation de fichiers textes, le PHP y est orienté objet
-> view: le PHP y produit le HTML, il construit les pages,
le HTML figé est placé à part dans le fichier view/template.php
-> public: contient CSS, JS, images, polices, medias, etc, il est utilisé par template.php
-> lib: les bibliothèques, on y trouve en particulier le ckeditor qui occupe une place centrale dans le projet, et aussi htmLawed qui nettoie le HTML produit par l'éditeur (failles XSS)
-> data: comme son nom l'indique
Quelques fichiers spéciaux (indépendants de index.php):
- imageAJAX.php traite les requêtes AJAX envoyées par l'éditeur
- .htaccess pour la sécurité (configurer le httpd.conf d'apache peut être nécessaire)
- erreur404.php (fonctionne avec .htaccess)
le dossier data et son contenu sont "normalement" autorisés en écriture pour deux raisons:
- placer le contenu pré-existant avec son client FTP
- autoriser PHP (sinon, c'est comme si on avait un site statique)
-> pour pouvoir installer le site en n'ayant qu'à modifier les droits du dossier data uniquement et éviter les situations pénibles ou l'utilisateur est bloqué sans rien comprendre,
on pourra créer ou utiliser des sauvegardes au format ZIP depuis une page spéciale accessible avec le compte admin
|