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 :

Double enregistrements en base avec mon formulaire


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut Double enregistrements en base avec mon formulaire
    Bonjour,
    Mon code ci-dessous fonctionne très bien, mais ma requête enregistre 2 fois mon utilisateur et j'ai beau chercher, je ne trouve pas mon erreur
    Une aide svp

    Code html : 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
    <!DOCTYPE html>	
    <html>
     
    	<!-- Mise en couleur de fond -->
    		<body 
    			bgcolor='#34495e'> 
    		</body> 
       <div class="card-header">
    		<div style="float:left"><FONT color="#fffff" size="4"><strong>FICHE UTILISATEUR</strong></div>  <!-- Integre la mise en couleur des champs -->
    		<a href="user.php" style="float:right"><FONT size="4"><strong>✓   Retour</strong></a><br> 
        </div>
     
    <link rel="stylesheet" type="text/css" href="css/ficheuser.css" />
    <form action="UserFiche.php" method="post">
      <p><i>Complétez le formulaire. Les champs marqué par </i><em>*</em> sont <em>obligatoires</em></p>
     
     
      <fieldset>
        <legend>Contact</legend>
     
          <label for="name">Nom <em>*</em></label>
          <!-- placeholder: indication grisée 
          //required: il faut renseigner le champs sinon la validation est bloquée
          //autofocus: le curseur est positionné dans cette case au chargement de la page -->
          <input id="name" name="name" placeholder="Rynek" autofocus="" required="">
    	  <label for="prenom">Prénom</label>
          <input id="prenom" placeholder="Dominique" autofocus="" required=""><br>
          <label for="telephone">Portable</label>
          <!-- type="tel": bascule le clavier sur un smartphone
          // pattern: expression régulière à vérifier pour pouvoir valider -->
          <input id="telephone" type="tel" placeholder="06xxxxxxxx" pattern="06[0-9]{8}">
          <label for="email">Email</label>
          <input id="email" type="email" name="email" placeholder="prenom.nom@gmail.com" required="" pattern="[a-zA-Z]*.[a-zA-Z]*@gmail.com"><br>
    	  <label for="adresse">Adresse</label>
          <input id="adresse" placeholder="Rue de Paris" autofocus="" required="">
    	  <label for="zip">Code postal</label>
          <input id="zip" placeholder="92100" autofocus="" required=""><br>
    	  <label for="ville">Ville</label>
          <input id="ville" placeholder="Paris" autofocus="" required="">
    	  <label for="pays">Pays</label>
          <input id="paus" placeholder="France" autofocus="" required=""><br>
     
      </fieldset>
      <fieldset>
        <legend>Niveau d'accréditation</legend>
          <label for="niveau">Date de création</label>
          <!--type="number": bascule le clavier sur un smartphone-->
    	  <input type="Date" id="Cday" name="Cday"><br>
         <!-- <input id="niveau" type="number" placeholder="xx" pattern="[0-9]{2}" required=""><br>-->
          <label for="niveau">Niveau</label>
          <select id="niveau">
            <option value="1" name="L1">Consulation</option>
            <option value="2" name="L2">Modification</option>
    		<option value="3" name="L3">Suppression</option>
    		<option value="4" name="L4">Administrateur</option>
          </select><br>
          <label for="comments">Information complémentaire</label>
          <textarea id="comments"></textarea><br>
    	  <label for="niveau">Date de modification</label>
          <!--type="number": bascule le clavier sur un smartphone-->
    	  <input type="Date" id="Uday" name="Uday">
      </fieldset>
     
    	<div>
    	<input type="submit" value="Enregistrer"/>
     
    	<!--input type="submit" name="modifier" value="Modifier"/>
    	 <!-- <a><input type="submit" value="Remove"></a>-->
      </div>
     
    </form>
      <body>
     
    <?php
      //connection au serveur
      $cnx = mysql_connect( "localhost", "root", "mdp" ) ;
      //sélection de la base de données:
      $db  = mysql_select_db( "BDD" ) ;
     
      //récupération des valeurs des champs:
      //name:
      $name     = $_POST["name"] ;
      //email:
      $email = $_POST["email"] ; 
     
      //création de la requête SQL:
      $sql = "INSERT  INTO people (name,email) VALUES ( '$name', '$email') " ;
      //exécution de la requête SQL:
      $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
     
    ?>
    	</body>	
    </html>
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Par défaut
    Hormis le fait que je ne vois pas de JavaScript dans ton code, tu n'aurais pas un bon potentiel d'injection SQL avec ce code ?

  3. #3
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Bonjour

    Merci beaucoup pour votre réponse, débutant en php, c'est la première fois que je suis confronté à cette remarque, est-ce la cause d'un double enregistrement ?
    Néanmoins, j'ai tenu de votre remarque et lu un article qui m'a permis d'ajouter une protéction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_real_escape_string()
    Je vous en remercie
    Bien à vous
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Par défaut
    Échapper le contenu reçu ne fera pas grand chose pour ton salut et la sécurité de ton appli
    Par ailleurs la fonction que tu utilises pour échapper : http://php.net/manual/fr/function.my...ape-string.php est obsolète

    Il te faut absolument des requêtes préparées et paramétrées.

    Je n'y connais rien du tout en PHP à vrai dire mais je sais lire du code.
    Regarde cette page : https://www.owasp.org/index.php/SQL_...on_Cheat_Sheet
    Puisque tu débutes, autant adopter tout de suite les bonnes pratiques

    Pour le double post, je ne sais pas, ça ne m'a pas sauté aux yeux en lisant ton code, c'est plutôt l'injection qui m'a saisi

  5. #5
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Merci beaucoup.
    Je vais travailler selon tes conseils, et pour la requête, j'espère recevoir de l'aide car je ne vois pas mon erreur
    Encore merci
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  6. #6
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Bonjour

    Je crois avoir compris et modifié ma requête en fonction de vos remarques et penses avoir trouvé la solution quant à l'injection sql
    Par contre, je ne comprends toujours pas pourquoi ma requête enregistre avant que je clic sur "enregistrer", de fait quant je clic à nouveau, j'ai un deuxième enregistrement

    Help Please

    Code html : 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
    <!DOCTYPE html>	
    <html>
     
    	<!-- Mise en couleur de fond -->
    		<body 
    			bgcolor='#34495e'> 
    		</body> 
       <div class="card-header">
    		<div style="float:left"><FONT color="#fffff" size="4"><strong>FICHE UTILISATEUR</strong></div>  <!-- Integre la mise en couleur des champs -->
    		<a href="user.php" style="float:right"><FONT size="4"><strong>✓   Retour</strong></a><br> 
        </div>
     
    <link rel="stylesheet" type="text/css" href="css/ficheuser.css" />
    <form action="UserFiche.php" method="post">
      <p><i>Complétez le formulaire. Les champs marqué par </i><em>*</em> sont <em>obligatoires</em></p>
     
     
      <fieldset>
        <legend>Contact</legend>
     
          <label for="name">Nom <em>*</em></label>
          <input id="name" name="name" placeholder="Rynek" autofocus="" required="">
    	  <label for="prenom">Prénom</label>
          <input id="prenom" placeholder="Dominique" autofocus="" required=""><br>
          <label for="telephone">Portable</label>
          <!-- type="tel": bascule le clavier sur un smartphone
          // pattern: expression régulière à vérifier pour pouvoir valider -->
          <input id="telephone" type="tel" placeholder="06xxxxxxxx" pattern="06[0-9]{8}">
          <label for="email">Email</label>
          <input id="email" type="email" name="email" placeholder="prenom.nom@gmail.com" required="" pattern="[a-zA-Z]*.[a-zA-Z]*@gmail.com"><br>
    	  <label for="adresse">Adresse</label>
          <input id="adresse" placeholder="Rue de Paris" autofocus="" required="">
    	  <label for="zip">Code postal</label>
          <input id="zip" placeholder="92100" autofocus="" required=""><br>
    	  <label for="ville">Ville</label>
          <input id="ville" placeholder="Paris" autofocus="" required="">
    	  <label for="pays">Pays</label>
          <input id="paus" placeholder="France" autofocus="" required=""><br>
     
      </fieldset>
      <fieldset>
        <legend>Niveau d'accréditation</legend>
          <label for="niveau">Date de création</label>
    	  <input type="Date" id="Cday" name="Cday"><br>
          <label for="niveau">Niveau</label>
          <select id="niveau">
            <option value="1" name="L1">Consulation</option>
            <option value="2" name="L2">Modification</option>
    		<option value="3" name="L3">Suppression</option>
    		<option value="4" name="L4">Administrateur</option>
          </select><br>
          <label for="comments">Information complémentaire</label>
          <textarea id="comments"></textarea><br>
    	  <label for="niveau">Date de modification</label>
    	  <input type="Date" id="Uday" name="Uday">
      </fieldset>
     
    	<div>
    	<input type="submit" value="Enregistrer"/>
     
    	<!--input type="submit" name="modifier" value="Modifier"/>
    	 <!-- <a><input type="submit" value="Remove"></a>-->
      </div>
     
    </form>
      <body>
     
    <?php
    $link = mysqli_connect("localhost", "root", "root", "simag_prod");
     
    /* Vérification de la connexion */
    if (mysqli_connect_errno()) {
        printf("Échec de la connexion : %s\n", mysqli_connect_error());
        exit();
    }
     
    $name = $_POST["name"] ;
    $email =$_POST["email"] ;
    $name = mysqli_real_escape_string($link, $name);
    $email = mysqli_real_escape_string($link, $email);
     
    /* Cette requête, par contre, réussira car nous avons échappé $city */
    if (mysqli_query($link, "INSERT into people (Name,email) VALUES ('$name','$email')")) {
        printf("%d ligne insérée OK.\n", mysqli_affected_rows($link));
    }
     
    mysqli_close($link);
    ?>
    	</body>	
    </html>
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


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

Discussions similaires

  1. prob avec mon formulaire d'envoi de mail
    Par zorba49 dans le forum ASP
    Réponses: 12
    Dernier message: 06/02/2007, 11h52
  2. [PHP-JS] probleme avec mon formulaire contact
    Par gtraxx dans le forum Langage
    Réponses: 27
    Dernier message: 03/10/2006, 00h41
  3. php : probleme avec mon formulaire
    Par rane dans le forum Langage
    Réponses: 39
    Dernier message: 29/06/2006, 20h13
  4. Réponses: 3
    Dernier message: 21/06/2006, 19h48
  5. Réponses: 6
    Dernier message: 06/06/2006, 11h46

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