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 :

Securité lors de l'insertion de données dans MySQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut Securité lors de l'insertion de données dans MySQL
    Bonjour,

    J'ai un tout petit soucis.

    Lorsque j'insère dans ma base de données, tout se passe bien mais si je réactualise ma page, l'insertion se refait ce qui me donne 2 lignes de données identiques...

    Je voudrai pouvoir tester que si l'insertion a été effectuée, qu'elle ne s'effectue qu'une seule fois.

    J'ai essayé d'initialiser une variable pour que lorsque elle est égale à rien on insert sinon on insert rien mais ca ne fonctionne pas...

    Voici mon code :
    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
    //Traitement des données :
     
    		//Selection id du projet :
    		$comm=addslashes($comm);
    		$repOuv=addslashes($repOuv);
     
    		$pro=mysql_query("select * from tab_projet where projet_nom='$projet_nom'") or die (mysql_error());
    		$pro2=mysql_fetch_array($pro);
    		$pro3=$pro2['id_projet'];
     
    		if(empty($var)) {
     
    		if ($comm=="" AND !empty($repOuv)) { //if (empty($comm) AND !empty($repOuv))
     
    		$requete12=mysql_query("INSERT INTO analyse (id_analyse, id_projet, id_analtype, id_chap, id_quest, id_rep
    		, repOuv_nom, comm_nom, contact_nom, ste_nom, id_qualif, date) VALUES ('','$pro3','$id_anal','$id_chap','$id_quest','$id_rep',
    		'$repOuv', '0','$contact_nom','$ste_nom', '$id_qualif', '$date')") or die (mysql_error());
    		}
    		if ($repOuv=="" AND !empty($comm)) {
     
    		$requete12=mysql_query("INSERT INTO analyse (id_analyse, id_projet, id_analtype, id_chap, id_quest, id_rep
    		, repOuv_nom, comm_nom, contact_nom, ste_nom, id_qualif, date) VALUES ('','$pro3','$id_anal','$id_chap','$id_quest','$id_rep',
    		'0', '$comm','$contact_nom','$ste_nom', '$id_qualif', '$date')") or die (mysql_error());
    		}
    		if ($repOuv=="" AND $comm=="") {
     
    		$requete12=mysql_query("INSERT INTO analyse (id_analyse, id_projet, id_analtype, id_chap, id_quest, id_rep
    		, repOuv_nom, comm_nom, contact_nom, ste_nom, id_qualif, date) VALUES ('','$pro3','$id_anal','$id_chap','$id_quest','$id_rep',
    		'0', '0','$contact_nom','$ste_nom', '$id_qualif', '$date')") or die (mysql_error());
    		}
    		else if (!empty($repOuv) AND !empty($comm)){	
     
    		//Insertion des données de l'analyse dans la table analyse :
    		$requete12=mysql_query("INSERT INTO analyse (id_analyse, id_projet, id_analtype, id_chap, id_quest, id_rep
    		, repOuv_nom, comm_nom, contact_nom, ste_nom, id_qualif, date) VALUES ('','$pro3','$id_anal','$id_chap','$id_quest','$id_rep',
    		'$repOuv', '$comm','$contact_nom','$ste_nom', '$id_qualif', '$date')") or die (mysql_error());
     
    		}
     
    		}
    		$var='1';
    Merci pour votre future aide !

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Points : 375
    Points
    375
    Par défaut
    Je te conseille d'effectuer une redirection avec De cette manière une fois que ta requête est effecutée tu va sur une nouvelle page et la tu aura beau raffraichir autant de fois que tu veux, ta requête ne sera pas réexecuté car tu ne sera plus sur le meme fichier.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 150
    Points
    150
    Par défaut
    Bonjour,

    J'ai deux solutions à vous proposer qui ne sont pas forcément les meilleurs, vu que je n'ai jamais cherché à faire mieux étant donné qu'elles fonctionnent.

    La première, c'est de rediriger l'utilisateur juste après l'enregistrement vers la page précédente ou la page d'acceuil :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<meta http-equiv='refresh' content='0; url=PageAcceuil.php'>";
    Pour le moment celle-ci marche et j'ai jamais eu de doublon, mais si d'avenir quelqu'un réussisait à trouver la faille j'ai déjà songé à mettre en place un système avec les sessions, à savoir initialiser une session qui autorise l'enregistrement, du style.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($_SESSION[EnregistrementAutoriser])
    {
        ...
        $_SESSION[EnregistrementAutoriser] = false;
        echo "<meta http-equiv='refresh' content='0; url=PageAcceuil.php'>";
    }
    et sur la page de redirection, je rajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION[EnregistrementAutoriser] = true;
    C'est un peu barbare comme code, mais ça fonctionne après il y a peut être meilleur, et je suis prenneur également.

  4. #4
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Merci pour la redirection ca marche !!!

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

Discussions similaires

  1. [MySQL] problème d'insertion de données dans MySQL à partir d'un formulaire
    Par centia28 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/08/2010, 14h31
  2. Réponses: 2
    Dernier message: 18/03/2010, 13h31
  3. Insertion de donnée dans mysql : problème d'accent
    Par DonKnacki dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 20/06/2009, 18h44
  4. [MySQL] Encodage lors d'une insertion de données dans MySQL
    Par arnaudperfect dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 08/02/2008, 14h24
  5. [C#] problème avec l'insertion des données dans MySQL
    Par madica dans le forum Accès aux données
    Réponses: 7
    Dernier message: 08/11/2005, 13h27

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