Salut à tous ! :)

Je suis depuis quelques semaine, sur la création d'un site perso et j'aurai souhaité savoir comment créer un système de maintenance en php ?

J'ai pu trouvé ce bout de code sur le Sdz:

<?php
ob_start();
echo $_GET'message'];
switch($_GET'action'])
{
        case 'active':
                if(!@rename('#maintenance.html','maintenance.html'))
                {
                        header('Location: ?message=Maintenance non-activé<br/>');
                }
                else
                {
                        header('Location: ?');
                }
        break;
        case 'deactive' :
                if(!@rename('maintenance.html','#maintenance.html'))
                {
                        header('Location: ?message=Maintenance non-désactivé<br/>');
                }
                else
                {
                        header('Location: ?');
                }
        break;
        case 'edit' :

                $fp=fopen(((is_file('maintenance.html'))?('maintenance.html'):('#maintenance.html')),'w+');
                fwrite($fp,$_POST'text']);
                fclose($fp);
                header('Location: maintenance.php?message=Enregistrement réussi !<br/>');
        break;
        default:
                if(is_file('maintenance.html'))
                {
                        echo 'Maintenance activé<br/><a href="?action=deactive">Désactivé la maintenance</a>';
                }
                else
                {
                        echo 'Maintenance désactivé<br/><a href="?action=active">Activé la maintenance</a>';
                }
        break;
}
?>
<br/>
<h4>Changer le contenu du fichier de maintenance</h4>
<form action="?action=edit" method="post">
<p>
        <textarea name="text" cols="50" rows="15"><?php readfile(((is_file('maintenance.html'))?('maintenance.html'):('#maintenance.html'))); ?></textarea><br/>
        <input type="submit" value="Envoyer" />
</p>
</form>

Avec ceci dans toutes mes page ( sauf l'administration bien sur x) )

if(is_file('maintenance.html'))
    exit(readfile('maintenance.html'));

Le problème est que moi aussi je voit cet page alors que j'aimerai privilégier que mon adresse IP. Peut-on passé par un htacess ? ou bien modifier le code php ? Si cela est possible, peut-on m'aidé car je rame un peut x)

Merci pour votre aide :)

2 réponses


didouchy
Auteur
Réponse acceptée

J'ai trouvé comment faire lol
Je suis partie voir du côté de php manuel et j'ai réussis a faire ceci:

Dans toutes mes page

<?php
$path_maintenance = 'maintenance.txt'; // chemin vers le fichier maintenance.txt
if(file_exists($path_maintenance) AND file_get_contents($path_maintenance) != $_SERVER'REMOTE_ADDR']){
 header('Location: maintenance.html');
 exit();
}

Et la parti administration ( faut que je l'améliore un peut ^^ )

<?php
$path_maintenance = 'maintenance.txt'; // chemin vers le fichier maintenance.txt
if(isset($_GET'maint']) AND $_GET'maint'] == 'on'){
 file_put_contents($path_maintenance, $_SERVER'REMOTE_ADDR']);
 echo '<div style="font-weight: bold; color: #FF0000;">Site en maintenance !</div>'; 
}
if(isset($_GET'maint']) AND $_GET'maint'] == 'off' AND file_exists($path_maintenance)){
 unlink($path_maintenance);
 echo '<div style="font-weight: bold; color: #00FF00;">Site en ligne !</div>';
}
echo file_exists($path_maintenance) ? '<a href="?maint=off">Mettre le site en ligne ?</a>' : '<a href="?maint=on">Mettre le site en maintenance ?</a>';

Bien sur, maintenance.txt sera mit dans l'administration protégé ou il contiendra mon IP. Pour le moment sa fonctionne x)

Tu peux aller voir du côté des .htaccess ou .htpaswrd, grafikart a fait 2/3 tutus dessus ;-)