Système de maintenance économique

Comment mettre son site en maintenance et interdire son accès sans modifier tous les fichiers ?
Cette question est très souvent posée et beaucoup de personne gèrent leur système de maintenance via une table MySql.

Mais faire 1 requête pour seulement obtenir un petit nombre, n’est pas nécessaire.
En ces temps de crise, nous devons économiser.. les requêtes MySql aussi ! :D

Et si le serveur MySql tombe en panne ? Ah .. mince alors triste

Je vous propose de créer votre propre système de maintenance en utilisant les fichiers, et plus précisément les .txt

Php et les fichiers, les fichiers et Php

Beaucoup de fonctions permettent à Php de communiquer avec des fichiers.
Par exemple, nous pouvons vérifier si un fichier existe, lire son contenu, mettre en forme son contenu, récupérer seulement une ligne d’un fichier, renommer un fichier, le déplacer, le supprimer, et bien d’autres.

Les fichiers peuvent être utilisés pour stocker des informations qui n’ont pas leurs places dans une BDD, ou qu’il est plus pratique de mettre dans un fichier (un compteur de visite par exemple).

Mais on peut utiliser un fichier sans qu’il n’est pas de contenu, juste un nom, c’est ce que nous verrons plus loin.

Enfin, les fichiers peuvent servir à tout et n’importe quoi (faites attention à la sécurité quand même sympatique)

Consignes et contraintes

Le fonctionnement est simple : Si le fichier maintenance.txt existe : maintenance, sinon ce fichier s’appelera #maintenance.txt et la maintenance sera désactivée.

Partie publique, sur toutes les pages (sera corrigée)
- Nous allons créer un fichier maintenance.txt
- Notre script ira voir si ce fichier existe (fonction : is_file())
- Si c’est le cas, nous allons afficher un message de maintenance puis bloquer son accès (fonction : exit())

Partie administration (ne sera pas corrigée)
- Vous irez chercher le statut de la maintenance, avec la fonction is_file()
- Selon le statut de la maintenance, vous afficherez un lien permettant de désactiver ou activer la maintenance.
- Pour la désactiver, vous renommerez le fichier maintenance.txt en #maintenance.txt (fonction : rename()), puis vous redirigerez vers la page d’administration de maintenance, pour que le statut modifié s’affiche sans avoir besoin d’actualiser (fonction : header(), ou en html)
- Pour l’activer, vous renommerez le fichier #maintenance.txt en maintenance.txt (fonction : rename()), puis vous redirigerez vers la page d’administration de maintenance, pour que le statut modifié s’affiche sans avoir besoin d’actualiser (fonction : header(), ou en html)

Correction de la 1ère partie

Avouez que ce n’était pas dur.

Si vous avez un fichier commun à inclure au début de toutes les pages, vous pourrez mettre le bout de code ci-dessous dans ce fichier, sinon sur toutes les pages coeur brisé

Code PHP:

<?
// A placer en haut de votre page
if(is_file('maintenance.txt')) // Si le fichier maintenance.txt existe
{
 echo 'Maintenance en cours.'; // On affiche un ptit message
 exit(); // On arrête le script, le code du dessous ne sera pas exécutée. Pas besoin de else { } autour de votre page.
}
?>

Magnifique, en 5 lignes nous avons codé notre système de maintenance !

Il reste maintenant la partie administration, mais ce ne sera pas trop dur étant donné que vous avez toutes les fonctions et aides nécessaires au-dessus sympathique
Bonne chance à vous ;)

Améliorations

- Au lieu d’afficher un message si la maintenance est activée, vous pouvez lire le contenu du fichier maintenance.txt et le modifier via votre zone d’administration pour avoir un message différent éditable sur votre site !
- Vous pouvez aussi enregistrer le motif, heure de maintenance et heure prévue pour la réouverture, dans ce fichier et le mettre en forme lorsque vous afficherez le contenu.
- Lors de la maintenance, autorisez les administrateurs à voir le site ou à se connecter !
- Et bien d’autres, votre imagination est votre amie !

Auteur: graphox

Laissez une réponse