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

PHP & Base de données Discussion :

Creation Admin [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut Creation Admin
    Dans l'optique d'une partie ADMIN sur mon site, je souhaite me donner la possibilité de créer un admin s'il n'en existe pas un au préalable ...
    comme je fais tout en local sous EasyPHP, je souhaiterai lors de la diffusion de mon site sur un hébergeur, créer l'admin lors de ma première connexion au panneau d'admin.

    pour celà j'ai créé la foncton suivante :

    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
    <?php
     
    require_once('../includes/config.php');
    global $prefix;
     
     
    function create_admin ($nom,$prenom,$email,$mdp)
    {
    //verification si aucun membre n'est déjà inscrit
    $prem = @mysql_num_rows(@mysql_query("select * from" .$prefix."user"));
    	if ($prem == 0)
    	{
    		$mdp = md5($mdp);
    		$user_regdate = date("d M Y");
    		@mysql_query("insert into ".$prefix."user values (NULL, '$nom', '$prenom', '$email', '$mdp', '$user_regdate', '1')");
    		login();
    	}
     
    }
     
     
    $prems = @mysql_num_rows(@mysql_query("select id_user from ".$prefix."user"));
    	if ($prems == 0)
    	{
    		echo "<form action=\"index.php\" method=\"post\">"
    		."<table border=\"0\">"
    		."<tr><td><b>Nom :</b></td><td><input type=\"text\" name=\"nom\" size=\"20\" maxlength=\"25\"></td></tr>"
    		."<tr><td><b>Pr&eacute;nom :</b></td><td><input type=\"text\" name=\"prenom\" size=\"20\" maxlength=\"25\"></td></tr>"
    		."<tr><td><b>Mot de Passe:</b></td><td><input type=\"password\" name=\"mdp\" size=\"20\" maxlength=\"40\"></td></tr>"
    		."<tr><td><b>Email :</b></td><td><input type=\"text\" name=\"email\" size=\"20\" maxlength=\"255\"></td></tr>"
    		."<tr><td><input type=\"hidden\" name=\"firstadmin\" value=\"create_admin\">"
    		."<input type=\"submit\" value=\"Valider\">"
    		."</td></tr></table></form>";
     
    		switch ($firstadmin) {
    			case "create_admin":
    			$nom = htmlentities($_POST["nom"]);
    			$prenom = htmlentities($_POST["prenom"]);
    			$email = htmlentities($_POST["email"]);
    			$mdp = htmlentities($_POST["mdp"]);
    			create_admin ($nom, $prenom, $email, $mdp);	
    			break;
    		}
    		die();
    	}
     
    ?>
    il me renvoie une erreur comme quoi la variable firstadmin n'est pas définie ... alors que je l'ai définie dans le formulaire via le champ caché ...

    merci d'avance pour votre aide

  2. #2
    Membre chevronné Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Par défaut
    Salut et bonnes fêtes,

    Au moment ou tu testes $firstadmin dans ton switch, cette variable n'est pas encore définie.

    Elle existe à l'état latent dans ton champ hidden mais php ne la connait pas.

    Tu dois travailler en deux temps :
    1) formulaire à remplir et à envoyer (avec un champ hidden :passe_dans_le_formulaire)
    2) récupération des données du formulaire et traitement (injection dans ta base de donnée)

    Pour savoir ce que tu dois faire : montrer le formulaire ou traiter les données tu utilise la fonction isset()
    Si la variable $_POST["passe_dans_le_formulaire"] n'existe pas tu envoie le formulaire si elle existe tu traites les données.

    Tu devras aussi utiliser ton test sur le nombre d'entrées dans la base.

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    Bonne fêtes aussi

    Voilà, après changement comme tu me l'as indiqué, je n'ai plus de message d'erreur ... seulement il ne fait pas les insertions des données dans la table

    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
     
    <?php
     
    require_once('../includes/config.php');
     
    global $prefix;
    if (!isset($_POST["firstadmin"]))
    {
     
    /* verification si aucun admin n'est déjà inscrit */
    $prems = @mysql_num_rows(@mysql_query("select id_user from ".$prefix."user"));
       if ($prems == 0)
       {
          echo "<form action=\"index.php\" method=\"post\">"
          ."<table border=\"0\">"
          ."<tr><td><b>Nom :</b></td><td><input type=\"text\" name=\"nom\" size=\"20\" maxlength=\"25\"></td></tr>"
          ."<tr><td><b>Pr&eacute;nom :</b></td><td><input type=\"text\" name=\"prenom\" size=\"20\" maxlength=\"25\"></td></tr>"
          ."<tr><td><b>Mot de Passe:</b></td><td><input type=\"password\" name=\"mdp\" size=\"20\" maxlength=\"40\"></td></tr>"
          ."<tr><td><b>Email :</b></td><td><input type=\"text\" name=\"email\" size=\"20\" maxlength=\"255\"></td></tr>"
          ."<tr><td><input type=\"hidden\" name=\"firstadmin\" value=\"create_admin\">"
          ."<input type=\"submit\" value=\"Valider\">"
          ."</td></tr></table></form>";
    	}
     
     
    function create_admin ($nom,$prenom,$email,$mdp)
    {
    //verification si aucun membre n'est déjà inscrit
    $prem = @mysql_num_rows(@mysql_query("select * from" .$prefix."user"));
       if ($prem == 0)
       {
          $mdp = md5($mdp);
          $user_regdate = date("Y-m-d");
          @mysql_query("insert into ".$prefix."user values (NULL, '$nom', '$prenom', '$email', '$mdp', '$user_regdate', '1')");
       }
    }
     
     
    	switch (isset($_POST["firstadmin"])) {
    			 case "create_admin":
     
    			 if(isset($_POST["nom"]))
    			 $nom = htmlentities($_POST["nom"]);
     
    			 if(isset($_POST["prenom"]))
    			 $prenom = htmlentities($_POST["prenom"]);
     
    			 if(isset($_POST["email"]))
    			 $email = htmlentities($_POST["email"]);
     
    			 if(isset($_POST["mdp"]))
    			 $mdp = htmlentities($_POST["mdp"]); 
     
    			 create_admin ($nom, $prenom, $email, $mdp);   
    			 break;
     
    	}
    }
    ?>

  4. #4
    Membre chevronné Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Par défaut
    Ce que je ferais :

    Pense à mettre un mysql_error après tes requêtes.
    Comme ça tu sais pourquoi elle ne fonctionne pas.

    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
     
    <?php
     
    require_once('../includes/config.php');
     
    global $prefix;
    function create_admin ($nom,$prenom,$email,$mdp)
    {
      $mdp = md5($mdp);
      $user_regdate = date("Y-m-d");
      @mysql_query("insert into ".$prefix."user values (NULL, '$nom', '$prenom', '$email', '$mdp', '$user_regdate', '1')")or die(mysql_error());
       }
     
     
    /* verification si aucun admin n'est déjà inscrit */
    $prems = @mysql_num_rows(@mysql_query("select id_user from ".$prefix."user"));
     
    if ($prems == 0)
    {
      if (!isset($_POST["firstadmin"]))
     {
       echo "<form action=\"index.php\" method=\"post\">"
          ."<table border=\"0\">"
          ."<tr><td><b>Nom :</b></td><td><input type=\"text\" name=\"nom\" size=\"20\" maxlength=\"25\"></td></tr>"
          ."<tr><td><b>Pr&eacute;nom :</b></td><td><input type=\"text\" name=\"prenom\" size=\"20\" maxlength=\"25\"></td></tr>"
          ."<tr><td><b>Mot de Passe:</b></td><td><input type=\"password\" name=\"mdp\" size=\"20\" maxlength=\"40\"></td></tr>"
          ."<tr><td><b>Email :</b></td><td><input type=\"text\" name=\"email\" size=\"20\" maxlength=\"255\"></td></tr>"
          ."<tr><td><input type=\"hidden\" name=\"firstadmin\" value=\"create_admin\">"
          ."<input type=\"submit\" value=\"Valider\">"
          ."</td></tr></table></form>";
    	}
       else
    {
        switch ($_POST["firstadmin"]) {
    			 case "create_admin":
     
    			 if(isset($_POST["nom"]))
    			 $nom = htmlentities($_POST["nom"]);
     
    			 if(isset($_POST["prenom"]))
    			 $prenom = htmlentities($_POST["prenom"]);
     
    			 if(isset($_POST["email"]))
    			 $email = htmlentities($_POST["email"]);
     
    			 if(isset($_POST["mdp"]))
    			 $mdp = htmlentities($_POST["mdp"]); 
     
    			 create_admin ($nom, $prenom, $email, $mdp);   
    			 break;	  
    	}
    }
    ?>

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    ah du coup je vois où est mon erreur

    il m'indique que : La table 'madb.user' n'existe pas

    alors que je lui demande pourtant d'insérer dans la table ".$prefix."user où $prefix = foot_


    en faisant un test d'affichage de $prefix je m'aperçois qu'il ne reconnaît pas la variable $prefix ... que j'ai pourtant définie dans le fichier config.php que j'inclu ici

    P.S. : l'insertion fonctionnant si je remplace $prefix par foot_ ... seulement ce n'est pas vraiment ce que je veux

  6. #6
    Membre chevronné Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Par défaut
    Mets global $prefix; dans ta fonction

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    Citation Envoyé par gilmaire
    Mets global $prefix; dans ta fonction
    effectivement, je sais pas pourquoi je l'ai mis à l'extérieur :X

    merci beaucoup tout marche

  8. #8
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 654
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 654
    Par défaut
    pour mieux gérer tes erreurs MySQL je te conseille d'utilise ce qui est indiquer dans la FAQ ainsi tu pourras trouver ce genre d'erreur plus rapidement :
    http://php.developpez.com/faq/?page=...ysql_ressource

  9. #9
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 46
    Par défaut
    Citation Envoyé par mathieu
    pour mieux gérer tes erreurs MySQL je te conseille d'utilise ce qui est indiquer dans la FAQ ainsi tu pourras trouver ce genre d'erreur plus rapidement :
    http://php.developpez.com/faq/?page=...ysql_ressource


    Ah bah ça c'est pas bete comme truc merci

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

Discussions similaires

  1. Creation de Session user et admin
    Par INESBERR dans le forum VB.NET
    Réponses: 8
    Dernier message: 15/11/2012, 19h23
  2. [1.x] creation formulaire custom dans un module admin
    Par erictomcat dans le forum Symfony
    Réponses: 0
    Dernier message: 02/05/2012, 17h31
  3. Creation d'une plateforme d'admin (bash et php)
    Par simoryl dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 25/01/2007, 09h56
  4. Creation d une clee dans la registry en VC++
    Par rico27fr dans le forum MFC
    Réponses: 4
    Dernier message: 30/05/2002, 12h36

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