• Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5


Faire un système de maintenance (PHP+MYSQL)
#1
Bonjour à tous !

Je vous partage en cette fin de soirée un petit tutoriel pour faire un système de maintenance, mais avant cela, nous allons voir comment et pour qui est-il utilisable !

Ici, je vais vous proposer 2 méthode, une méthode très basique, mais manuelle, et une seconde un peu plus technique, demandant l'usage d'une BDD (base de donnée) et d'un espace membre avec des rangs déjà prédéfinis.



I] Méthode basique :

Nous allons commencer par un créer un fichier, par exemple config.php :

à l'intérieur nous allons mettre une variable sous le nom de "maintenance", ce qui donne $maintenance, puis = False ou True
Code PHP :
$maintenance False// False = Désactivée True = Activée 

Après avoir créer et compléter le fichier config.php, vous allez mettre dans votre "header.php" ou votre "en-tête.php" la ligne suivante :

il s'agit d'une include, c'est-à-dire qu'on récupère "copie/colle" les informations du fichier config.php pour ne pas à le réécrire sur toutes les page
Code PHP :
include ('config.php'

et on rajoute un petit code tout simple, on le décryptant, "si la variable maintenance équivaut à True, redirigé vers la page maintenance.php"
Code PHP :
if($maintenance == True) {
Header('location: maintenance.php'); } 




II] Méthode demandant une Base de Donnée :

Vous possédez donc déjà d'un espace membre avec un système de rang (aussi bien sous le nom de rank ou rang).


Nous allons créer notre table dans notre base de donnée :
vous remarquerez qu'il y a "info" et "auteur", c'est-à-dire que durant la maintenance, un message personnalisable s'affichera

Code :
CREATE TABLE IF NOT EXISTS `maintenance` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `info` text COLLATE latin1_general_ci NOT NULL,
 `auteur` varchar(40) COLLATE latin1_general_ci NOT NULL,
 `datestr` varchar(50) COLLATE latin1_general_ci DEFAULT NULL,
 `activ` varchar(3) COLLATE latin1_general_ci NOT NULL DEFAULT 'Non',
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2

Deuxièmement, dans votre administration, nous allons créer la page qui permettra de mettre notre site en maintenance :
avec pour début ceci, qui reprend bien les informations de la base donnée pour actualiser la table maintenance et mettre un chiffre par défaut "1"

Code PHP :
if(isset($_POST['id']) || isset($_POST['info']) || isset($_POST['auteur']) || isset($_POST['datestr']) || isset($_POST['maintenance'])) {  
$id 
Securise($_POST['id']);
 
  $info Securise($_POST['info']);
 
  $auteur Securise($_POST['auteur']);
 
  $datestr Securise($_POST['datestr']);
 
  $maintenance Securise($_POST['maintenance']);

 
     if($info != "") {
     
 mysql_query("UPDATE maintenance SET id = '1', info = '".addslashes($info)."', auteur = '".$user['username']."', datestr = '".FullDate('full')."', activ = '".$maintenance."' WHERE id = '1'") or die(mysql_error());
     
 echo '<div id="ok">Mise &agrave; jour bien prise en compte.</div>';
     
 } else {
     
 echo '<div id="pasok">Merci de marquer une information.</div>';
     
 }
 
 }
$sql mysql_query("SELECT * FROM maintenance WHERE id = '1'") or die(mysql_error());;
$m mysql_fetch_assoc($sql); 
puis le code html qui suit :

Code :
 <form name='editor' method='post' action="?do=maintenance"><br>
<td width='100' class='tbl'><b>Message que tu souhaites afficher :</b><br><br></td>
<td width='80%' class='tbl'><textarea name="info" rows=4 cols=75 ><?PHP echo nl2br($m['info']);?></textarea><br></td>
<br>
<td width='100' class='tbl'><b>Etat de la maintenance :</b><br></td>
<label><input type="radio" name="maintenance" value="Non" <?PHP if($m['activ'] == "Non") { ?> checked="checked" <?PHP } ?> /><span style="color:#FF0000;">Non active</span></label> 
<label><input type="radio" name="maintenance" value="Oui" <?PHP if($m['activ'] == "Oui") { ?> checked="checked" <?PHP } ?> /><span style="color:#008800;">Active</span></label> 
<br><br>
<td align='center' colspan='2' class='tbl'>
<input type='submit' name='submit' value='Ex&eacute;cuter' class='submit'></form>
</tr>

Après avoir créer cette page, nous nous attaquons au fichier "config.php" sert de relais entre la base de donnée et le site, que vous possédez déjà :
en rajoutant à suite mais en rajoutant une petit fonction, c'est à dire que nous allons prendre le cas ou le système de rang est appelé "rank" et que pour être administrateur et pour accéder malgré la maintenance, il faut être "rank" 3 sinon on redirige l'utilisateur vers la page "maintenance.php"
Code :
$maintid = "1";
       $sqlss = mysql_query("SELECT * FROM gabcms_maintenance WHERE id = '1'") or die(mysql_error());;
       $c = mysql_fetch_assoc($sqlss);
       if($c['activ'] == "Oui")
          if($user['rank'] < "3"){
               Redirect("".$url."/maintenance.php");
               }


ce qui donne :

Code PHP :
        $MySQL_HOST "";
        
$MySQL_PORT "3306";
        
$MySQL_USER "";
        
$MySQL_PASSWORD "";
        
$MySQL_DATABASE "";
        
$MySQL_ERROR_CONNECT "Erreur de connexion entre la bdd et le site";
        
$MySQL_ERROR_DATABASE "La base de donnée -> <b>".$MySQL_DATABASE."</b> est introuvable.";
     
   $MySQL_AUTORIZE 1;
        
        if(
$MySQL_AUTORIZE == 1)
            {
                
mysql_connect("".$MySQL_HOST.":".$MySQL_PORT."","".$MySQL_USER."","".$MySQL_PASSWORD."") or die("".$MySQL_ERROR_CONNECT."");
                
mysql_select_db("".$MySQL_DATABASE."") or die("".$MySQL_ERROR_DATABASE."");
            }

$maintid "1";
        $sqlss mysql_query("SELECT * FROM maintenance WHERE id = '1'") or die(mysql_error());;
        $c mysql_fetch_assoc($sqlss);
        if($c['activ'] == "Oui")
           if($user['rank'] < "5"){
                Redirect("".$url."/maintenance.php");
                

puis sur la page maintenance nous avons l'affichage des informations faites via l'administration :

Code :
<?php echo stripslashes($m['info']); ?><br><br><i>Message de <b>
<?php echo stripslashes($m['auteur']); ?></b> le
<?php echo stripslashes($m['datestr']); ?>.</i>

et on rajoute un petit formulaire de connexion qui ne sera valide uniquement pour les administrateurs de "rank" 3

Code :
<form action="<?PHP echo $url; ?>/maintenance.php?do=process_login" method="post" >
<b><i>Pseudo :</i></b> <input id="email" name="username" title="Écris ici ton pseudo" placeholder="Ton pseudo"  onmouseover="tooltip.show(this)" onmouseout="tooltip.hide(this)" type="text"><br>
<b><i>Mot de passe :</i></b> <input id="password" name="password" title="Écris ici ton mot de passe" placeholder="Ton mot de passe"  onmouseover="tooltip.show(this)" onmouseout="tooltip.hide(this)" type="Password" >
<br><br><input type="submit" value="Login" style="margin: -10000px; position: absolute;">
<input type="image" src="<?PHP echo $imagepath; ?>/suivant.png"></td>
</form>
je vous ai mis en pièce jointe, l'image qui sert de bouton

Voilà, c'est donc la fin de ce petit tutoriel rapide, qui ne demande aucun niveau, mais juste un peu de jugeote et de réflexion, je vous demanderai juste de respecter mon travail (c'est-à-dire en ne pas le partageant sans ajouter la source), car il m'a pris une bonne demi-heure (30min ^^).

Si jamais vous rencontrez une erreur ou bien vous bloquez à une étape, je suis entièrement à votre disposition, et surtout commentez pour savoir si la présentation est complète et compréhensible, merci à vous !


Pièces jointes
.png   suivant.png (Taille : 1.2 Ko / Téléchargements : 53)
Répondre

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Atteindre :


Utilisateur(s) parcourant ce sujet :
1 visiteur(s)

   
A propos
Hack-Crack est une communauté ouverte à tous. Nous concentrons notre activité, notre documentation et nos discussions autour de thèmes qui tournent majoritairement autour du Cracking et du Hacking et de façon générale, l'informatique et la technologie. Toute activité illégale est prohibée et la documentation et les logiciels partagés par nos membres ne sauraient être utilisés à des fins illégales, tous les partages sont présents à titre éducationnel. Hack-Crack ne se porte aucunement garant des actions et des partages de ses membres.