IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Script de protection db_protect V1.2


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Par défaut Script de protection db_protect V1.2
    Salut à tous,

    Je voulais créer un petit centre de téléchargement avec juste une page de login, une page "accueil" (qui affiche telle ou telle informations selon si on est admin ou user) et une page "admin" qui permet d'ajouter des utilisateurs et enfin une page "admin_file" pour gérer l'ajout de fichier.

    Je suis partit sur la base d'un script trouvé sur un autre site.

    J'ai donc modifier le script surtout au niveau mise en page. Mon problème est que le script est buggé d'origine (et je n'ai pas réussit a joindre l'auteur par mail). En fait lorsqu'on est loggé en tant qu'admin et que l'on veut ajouter un utilisateur (page "admin.php") lorsqu'on clique sur le bouton ajouter les info contenues dans les champs s'insèrent bien dans la bdd mais on est renvoyé vers l'index en étant déconnecté. Normalement il y a une redirection vers la meme page ("admin.php?add=ok") mais cela ne fonctionne pas et je n'arrive pas a comprendre pourquoi

    Voici le fichier en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    <?php require_once('connexion.php'); ?>
    <?php
    /*
    -----------------------------------
    ------ SCRIPT DE PROTECTION -------
              DBProtect V1.2
    -----------------------------------
    */
     
    session_start(); // On relaye la session
    if (session_is_registered("authentification") && $_SESSION['privilege'] == "admin"){ // vérification sur la session authentification (la session est elle enregistrée ?)
    // On vérifie également si la session ouverte est bien une session admin et on place ici les éventuelles actions en cas de réussite de la connexion
    }
    else {
    header("Location:index.php?erreur=intru"); // redirection en cas d'echec
    }
    ?>
    <?php 
    // ------ AJOUT D'UN UTILISATEUR --------
    if(isset($_POST['login'])){ // on vérifie la présence des variables de formulaire (si le formulaire a été envoyé)
    	if(($_POST['login'] == "") || ($_POST['pass'] == "")){ // si login ou mot de passe non spécifiés >> message d'erreur
    		header("Location:admin.php?erreur=empty");
    	}
    	else if($_POST['pass'] == $_POST['pass2']){ // on vérifie si le mot de passe et le mot de passe confirmé ont la même valeur
    		// on passe toutes les variables $POST en variables
    		$login = $_POST['login'];
    		$pass = md5($_POST['pass']); // ici, on crypte le mot de passe à l'aide de MD5 (c'est tout simple non ? :)
    		$nom = $_POST['nom'];
    		$prenom = $_POST['prenom'];
    		$privilege = $_POST['privilege'];
    		// on fait l'INSERT dans la base de données
    		$add_user = sprintf("INSERT INTO utilisateurs (login, pass, nom, prenom, privilege) VALUES ('$login', '$pass', '$nom', '$prenom', '$privilege')");
      		mysql_select_db($database_dbprotect, $dbprotect);
      		$result = mysql_query($add_user, $dbprotect) or die(mysql_error());
    		header("Location:admin.php?add=ok"); // redirection si création réussie
    	}
    	else{
    		header("Location:admin.php?erreur=pass"); // redirection si le pass1 est différent du pass2
    	}
    }
     
    // ------ SUPPRESSION D'UN UTILISATEUR --------
    // on fait la requête sur tous les utilisateurs de la base pour alimenter notre sélecteur (on fait un tri par nom)
    mysql_select_db($database_dbprotect, $dbprotect);
    $query_users = "SELECT * FROM utilisateurs ORDER BY nom ASC"; // ORDER BY renvoi les données triées (ici par nom croissant)
    $users = mysql_query($query_users, $dbprotect) or die(mysql_error());
    $row_users = mysql_fetch_assoc($users);
     
    if(isset($_POST['suppr']) && ($_POST['suppr'] != "1")){ // on vérifie la présence des variables de formulaire (si le formulaire a été envoyé)
    	$id = $_POST['suppr'];
        $delete_user = sprintf("DELETE FROM utilisateurs WHERE id_user='$id'");
     
      mysql_select_db($database_dbprotect, $dbprotect);
      $result = mysql_query($delete_user, $dbprotect) or die(mysql_error());
      header("Location:admin.php?delete=ok"); // url qui servira pour afficher le message de réussite
    }
    ?>
    <html>
    <head>
    <title>ADMINISTRATION - DBProtect</title>
    <link href="styles.css" rel="stylesheet" type="text/css">
    </head>
    <body>
    <form action="" method="post" name="add">
     <div class="titre">- : : : ESPACE ADMINISTRATION : : : -</div> 
     <p align="center">
        <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "pass")) { // Affiche l'erreur  
    	?>
        <span class="erreur">Veuillez entrer deux fois votre mot de passe SVP</span>
        <?php } ?>
        <?php if(isset($_GET['add']) && ($_GET['add'] == "ok")) { // Affiche l'erreur 
    	?>
        <span class="reussite">L'utilisateur a &eacute;t&eacute; cr&eacute;&eacute; avec succ&egrave;s !</span>
        <?php } ?>
        <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "empty")) { // Affiche l'erreur  
    	?>
        <span class="erreur">Un petit oubli non ? Veuillez renseigner au moins un login et un mot de passe SVP</span>
        <?php } ?>
    </p>
      <p align="center"><strong><u>Cr&eacute;er un utilisateur</u></strong></p>
      <table width="350" border="0" align="center" cellpadding="5" cellspacing="0" bgcolor="#eeeeee" class="tableaux">
        <tr>
          <td width="40">Login</td>
          <td width="144"><input name="login" type="text" id="login"></td>
        </tr>
        <tr>
          <td>Mot de passe </td>
          <td><input name="pass" type="password" id="pass"></td>
        </tr>
        <tr>
          <td>R&eacute;p&eacute;ter mot de passe </td>
          <td><input name="pass2" type="password" id="pass2"></td>
        </tr>
        <tr>
          <td>NOM</td>
          <td><input name="nom" type="text" id="nom"></td>
        </tr>
        <tr>
          <td>Pr&eacute;nom</td>
          <td><input name="prenom" type="text" id="prenom"></td>
        </tr>
        <tr>
          <td>Privil&egrave;ge</td>
          <td><select name="privilege" id="privilege">
              <option value="user">Utilisateur</option>
              <option value="admin">Administrateur</option>
            </select></td>
        </tr>
        <tr>
          <td height="50" colspan="2"><div align="center">
              <input type="submit" name="Submit" value="Cr&eacute;er cet utilisateur">
            </div></td>
        </tr>
      </table>
    </form>
    <p align="center"><strong>
      <?php 
    if(isset($_GET['delete']) && ($_GET['delete'] == "ok")) { // Affiche l'erreur  
    ?>
      <span class="reussite">L'utilisateur a &eacute;t&eacute; supprim&eacute; avec succ&egrave;s</span>
      <?php } ?>
      <?php 
    if(isset($_POST['verif']) && (!isset($_POST['suppr']))) { // Affiche l'erreur  
    ?>
    </strong><span class="erreur">Veuillez s&eacute;lectionner un utilisateur &agrave; supprimer </span><strong>
    <?php } ?>
    <?php 
    if(isset($_POST['suppr']) && ($_POST['suppr'] == "1")) { // Affiche l'erreur  
    ?>
    </strong><span class="erreur">Vous ne pouvez pas supprimer l'utilisateur par d&eacute;faut toto.<br>
    Pour tester la fonction de supression, ajoutez un utilisateur.<br>
    Pour s&eacute;curiser votre script, il est fortement recommand&eacute; de le supprimer manuellement dans votre BDD ... </span><strong>
    <?php } ?></strong></p>
    <form action="" method="post" name="suppr">
      <p align="center"><strong><u>Supprimer un utilisateur</u></strong></p>
      <div align="center">
        <table width="500" border="0" cellpadding="5" cellspacing="0" class="tableaux">
          <tr>
            <td width="240"><div align="center">
                <select name="suppr" size="5" id="select2">
                  <?php
    	do {  
    ?>
                  <option value="<?php echo $row_users['id_user']?>">
                  <?php if($row_users['privilege']== "admin") echo ">> "; echo $row_users['nom']." ".$row_users['prenom']." (".$row_users['login'].")"; if($row_users['privilege']== "admin") echo " <<"?>
                  </option>
                  <?php
    	} while ($row_users = mysql_fetch_assoc($users));
     		$rows = mysql_num_rows($users);
      		if($rows > 0) {
          		mysql_data_seek($users, 0);
    	  		$row_users = mysql_fetch_assoc($users);
    		}
    ?>
                </select>
                <input name="verif" type="hidden" id="verif">
            </div></td>
            <td width="157"><input type="submit" name="Submit2" value="Supprimer cet utilisateur"></td>
          </tr>
        </table>
        <p><a href="accueil.php"><strong>&lt; Retour accueil</strong></a></p>
      </div>
    </form>
    </body>
    </html>
    En ce qui concerne la suppression d'utilisateur, cela fonctionne très bien, c'est juste le formulaire ou la fonction pour ajouter un utilisateur qui bug et que je n'arrive pas à comprendre.

    Si quelqu'un peu m'aider je lui en serait très reconnaissant

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Par défaut
    Bon bah a force d'acharnement je suis arrivé a le debuguer . En fait j'ai contourner le probleme d'affichage du message ("utilisateur ajouté avec succes" qui n'aparaissait pas vu qu'on était renvoyé vers l'index en étant déco) en changeant l'action lorsqu'on ajout l'utilisateur.

    Voici le bout de code a modifier si ce script vous interesse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    //
    // ------ AJOUT D'UN UTILISATEUR --------
    //
    if(isset($_POST['login'])){ 
    	if(($_POST['login'] == "") || ($_POST['pass'] == "")){ 
    		header("Location:admin.php?erreur=empty");
    	}
    	else if($_POST['pass'] == $_POST['pass2']){ 
    		$login = $_POST['login'];
    		$pass = md5($_POST['pass']);
    		$nom = $_POST['nom'];
    		$prenom = $_POST['prenom'];
    		$privilege = $_POST['privilege'];
    		$add_user = sprintf("INSERT INTO utilisateurs (login, pass, nom, prenom, privilege) VALUES ('$login', '$pass', '$nom', '$prenom', '$privilege')");
      		mysql_select_db($database_dbprotect, $dbprotect);
      		$result = mysql_query($add_user, $dbprotect) or die(mysql_error());
    		header("Location:ajout_util_ok.php"); //partie modifiée (necessite la creation d'une page supplémentaire (ajout_util_ok.php) avec le message que vous voulez + des bt pour revenir sur telle ou telle page
    	}
    	else{
    		header("Location:admin.php?erreur=pass");
    	}
    }
    Je conseille a tout le monde ce petit script surtout a ceux qui comme moi débutent en php car il est très simple a comprendre et surtout votre design est très facile a intégrer.

    Je posterais d'ici peu une version modifiée de ce script avec la possibilité de gérer des groupes d'utilisateurs et un espace de téléchargement (avec possibilité d'assigner tel ou tel type de fichier a un groupe d'utilisateur)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script de protection contre l'injection SQL
    Par mabrouk1987 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/12/2009, 08h52
  2. Le script de protection hotlink ne marche pas
    Par l.laurent60 dans le forum Apache
    Réponses: 1
    Dernier message: 23/10/2009, 12h42
  3. Script de protection de pages ne marchant plus
    Par shubnigg dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 15/12/2008, 10h40
  4. [Tableaux] bug script & protection code
    Par Doksuri dans le forum Langage
    Réponses: 6
    Dernier message: 26/11/2007, 09h41
  5. Protection de script
    Par passimal dans le forum Linux
    Réponses: 11
    Dernier message: 27/01/2005, 22h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo