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

Langage PHP Discussion :

Droits de l'utilisateur MySQL pour l'insertion et la mise à jour


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Droits de l'utilisateur MySQL pour l'insertion et la mise à jour
    Bonjour,

    Voici mon problème (avec un exemple simplifié) :

    J'ai un formulaire avec 4 champs, (Nom, Prenom, Age, Sexe). L'insertion dans la base de données s'effectue correctement, avec la Requête ci-dessous.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Requete="INSERT INTO $Nom_table (`Nom`,`Prenom` ,`Age` ,`Sexe`) VALUES ('$Nom', '$Prenom', '$Age', '$Sexe');";	
    $Result=mysql_query($Requete,$connexion);

    Maintenant, j'ai créé deux utilisateurs via phpmyadmin.

    Un utilisateur qui a les droit d'insertion sur Nom, Prenom et un qui a les droit d'insertion sur Age et Sexe.

    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GRANT INSERT( `Nom` , `Prenom` ) ON `base`.`t_stagiaires` TO 'user1'@'localhost';
     
    GRANT INSERT( `Age` , `Sexe` ) ON `base`.`t_stagiaires` TO 'user2'@'localhost';

    J'ai créé une page de login qui permet l'identification des user en fonction de ceux créés dans phpmyadmin.

    Le problème qui m'est posé est que lorsque je veux insérer dans la base avec user1 par exemple je vai sur la page de mon formulaire d'enregistrement je renseigne le nom et prénom mais un message d'erreur qui me dit que user1 n'a pas le droit d'INSERT sur champs Age et Sexe et inversement lorsque je renseigne juste Age et Sexe avec user2.

    Je comprend tout à fait pourquoi il y a ce message d'erreur mais je n'ai pas trouvé pas de solution pour résoudre ce problème, c'est pour cela que je me tourne vers vous.

    Si quelqu'un aurait une solutions se serait cool.
    Merci de vos réponses.

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 687
    Par défaut
    essaye d'indiquer juste 2 champs :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Requete="INSERT INTO $Nom_table (`Nom`,`Prenom`) VALUES ('$Nom', '$Prenom');";    
    $Result=mysql_query($Requete,$connexion);

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si je comprends bien le mecanisme, c'est en fait que l'on puisse définir des droits d'insertion sur une colonne précise qui est fallacieux puisqu'une insertion requiert les droits sur tous les champs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mathieu Voir le message
    essaye d'indiquer juste 2 champs :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Requete="INSERT INTO $Nom_table (`Nom`,`Prenom`) VALUES ('$Nom', '$Prenom');";    
    $Result=mysql_query($Requete,$connexion);
    En faite mon vrai formulaire contient 23 champs, donc si je dois faire plusieurs requête en fonction de l'utilisateur choisi, la gestion des utilisateurs dans mysql ne sert plus à rien alors si on code en dur que faire en fonction de user!

    C'est pour cela que je cherche une autre solution.


    Citation Envoyé par sabotage Voir le message
    Si je comprends bien le mecanisme, c'est en fait que l'on puisse définir des droits d'insertion sur une colonne précise qui est fallacieux puisqu'une insertion requiert les droits sur tous les champs.
    Oui voila c'est cela. Je pensais qu'en mettant des droits mysql sur les user, sa ne renseignerait que les champs autorisés, et ne renseignerait pas les autres !


    Pour info, c'est la première fois que j'utilise les droits mysql sur différents users.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Mais est ce que la proposition de mathieu fonctionne ?
    C'est à dire est ce que l'INSERT avec des droits partiels est possible ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Invité
    Invité(e)
    Par défaut
    Oui ceci fonctionne,

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Requete="INSERT INTO $Nom_table (`Nom`,`Prenom`) VALUES ('$Nom', '$Prenom');";    
    $Result=mysql_query($Requete,$connexion);

    Mais si je dois faire

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if($_SESSION['login'] == "user1")
    {
    $Requete="INSERT INTO $Nom_table (`Nom`,`Prenom`) VALUES ('$Nom', '$Prenom');";    
    $Result=mysql_query($Requete,$connexion);
    }
     
    else if($_SESSION['login'] == "user2")
    {
    $Requete="INSERT INTO $Nom_table (`Age`,`Sexe`) VALUES ('$Age', '$Sexe');";    
    $Result=mysql_query($Requete,$connexion);
    }

    je ne vois pas l'intéret de mettre des droits dans mysql alors qu'avec ce procéder on limite directement les mauvais insertions !

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 687
    Par défaut
    il y a peut-être une façon de faire mais je ne vois pas pourquoi tu aurais besoin de ça donc donne nous plus de détails sur les besoins et on pourra peut-être te proposer des autres solutions

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/09/2009, 13h30
  2. Réponses: 0
    Dernier message: 04/09/2009, 03h30
  3. Problème pour Comparer 2 Datatables et mise à jour
    Par Jean-Marc68 dans le forum C#
    Réponses: 4
    Dernier message: 21/11/2007, 19h28
  4. Insertion d'une mise à jour dans une création de vue
    Par Ptite_Tigresse dans le forum Langage SQL
    Réponses: 0
    Dernier message: 30/08/2007, 12h34
  5. Réponses: 2
    Dernier message: 24/11/2006, 13h20

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