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 :

Requête qui refuse de passer [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Par défaut Requête qui refuse de passer
    Bonsoir,
    je conçois une petite application. Je n'ai pas voulu m'embêter pour la gestion des utilisateurs et j'ai décidé simplement pour chaque utilisateur, de le créer dans mysql en lui donnant les droits qu'il faut sur la base de données. Mais voici ce que ma fonction génère une erreur et je suis bloquée:
    Fonction:
    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
    function creation_user($profiluser, $log, $pas) {
    	$requete = "GRANT SELECT , INSERT , UPDATE , DELETE ON 'bd_getir'.* TO '$log'@'%' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0";
    	$result = mysql_query($requete);
    	if (!$result) {
    	$message = 'Erreur SQL : ' . mysql_error() . "<br>\n";
    	$message .= 'SQL string : ' . $requete . "<br>\n";
    	$message .= 'SQL string : ' . $_SESSION['profuser'] . "<br>\n";
    	$message .= 'SQL string : ' . $_SESSION['matruser'] . "<br>\n";
    	$message .= 'SQL string : ' . $_SESSION['passuser'] . "<br>\n";
    	$message .= "Merci d'envoyer ce message au webmaster";
    	die($message);
    	}
    
    	$requete = 'SET PASSWORD FOR '.$log.'@'%' = PASSWORD('.$pas.');';
    	$result = mysql_query($requete);
    	if (!$result) {
    	$message = 'Erreur SQL : ' . mysql_error() . "<br>\n";
    	die($message);
    	}
    
    	switch ($profiluser) {
    		case 'public':
    			$requete = 'GRANT SELECT ON `bd_getir` . * TO '.$log.'@'%';';
    			break;
    
    		case 'gestionnaire':
    			$requete = 'GRANT SELECT , INSERT , UPDATE ON `bd_getir` . * TO '.$log.'@'%';';
    			break;
    
    		case 'super utilisateur': //ce profil a le menu qui lui permet de gérer des utilisateurs
    			$requete = 'GRANT SELECT , INSERT , UPDATE, DELETE ON `bd_getir` . * TO '.$log.'@'%';';
    			break;
    	}
    	$result = mysql_query($requete);
    	if (!$result) {
    	$message = 'Erreur SQL : ' . mysql_error() . "<br>\n";
    	die($message);
    	}
    }
    Voici l'erreur:
    Warning: mysql_query(): Access denied for user 'ODBC'@'localhost' (using password: NO) in c:\program files\easyphp1-8\www\getir\mes_fonctions.php on line 136

    Warning: mysql_query(): A link to the server could not be established in c:\program files\easyphp1-8\www\getir\mes_fonctions.php on line 136
    Erreur SQL : Access denied for user 'ODBC'@'localhost' (using password: NO)
    SQL string : GRANT SELECT , INSERT , UPDATE , DELETE ON 'bd_getir'.* TO 'test'@'%' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0
    SQL string : public
    SQL string : test
    SQL string : test
    Merci d'envoyer ce message au webmaster
    NB: la ligne 136 ou l'erreur est signalée est marquée en rouge et en gras dans la fonction. Bien sûr, c'est la requête avant qui génère l'erreur. Je l'ai pourtant remplacée par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	$requete = 'GRANT SELECT , INSERT , UPDATE , DELETE ON *.* TO `'.$log.'`@`%` WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0';
    L'erreur demeure toujours. La même et à la même ligne.

    Comme on peut bien le constater, les variables de session fonctionne correctement et retourne l'utilisateur TEST et son mot de passe TEST ainsi que son profil PUBLIC.

    Tout ce que je veux faire, c'est de le créer dans la base avec la fonction plus hat mais ça ne passe pas.

    Merci pour votre aide qui me sera hautement précieuse (pour me spremier pas dans la programmation Web).

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Par défaut
    je crois que le problème arrive car tu n'est pas connecté à la bdd avant de faire la requète, ou que tu n'a pas signifié de mot de passe de connection.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Par défaut
    Je ne comprends pas.

    Je me connecte bien à la base de données avec la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function connexion_DB($serveur, $utilisateur, $password, $base) {
    // Déclaration des paramètres de connexion
    $host = $serveur;
    $user = $utilisateur;
    $bdd = $base;
    $passwd = $password;
    // Connexion au serveur
    mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
    mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
    }
    ENsuite à l'aide du code suivant, je crée les variables de session:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // On n'effectue les traitement qu'à la condition que 
    // les informations aient été effectivement postées
    if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {
    	extract($_POST);  // je vous renvoie à la doc de cette fonction
    	$_SESSION['login'] = $login;
    	$_SESSION['password'] = $password;
    	$_SESSION['profil']=requete_profils();
     
     
    	header('location:accueil.php');
    	exit();	
    }
    ?>
    Attends, pendant que j'écris, je me pose une question:

    Est ce que l'erreur ne provient pas de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	header('location:accueil.php');
    	exit();	
    }
    qui me déconnecte effectivement de la base de données?

    En effet, dans mon index.php, l'utilisateur se connecte et j'envoie les infos à la page accueil.php.

    Seulement, comme je ne savais pas comment faire celà, j'ai cherché et trouvé le code HEADER suivi du EXIT sans vraiment cherché à savoir ce que ça implique.

    Si mon erreur vient bien de là, commet si j'ai vérifié que l'utilisateur est le bon, je peux afficher la page accueil.php?

    Dois je garder en l'état mon code et supprimer le EXIT?

    Bon, je test déjà cette idée.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Par défaut
    Bon, ce n'est pas ça le problème puisque le mal persiste.

    Mais est ce bien la commande pour dire à php d'ouvrir une autre page? Si oui tant mieux.

    Mais d'où vient le problème?

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Le message d'erreur est explicite

    'ODBC'@'localhost n'a accès à la base de données !

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Par défaut
    Oui, explicite pour qui s'y connaît vraiment.
    Mais pour le commun des mortels ou ceux qui débutent dans la programmation web comme moi, c'est "explixite" mais quelle action doit on mener?

    Je me connecte correctement à la base de données. J'essaie ensuite de créer un utilisateur et j'ai ce problème. Qu'est ce à dire? Comment puis je résoudre ce problème?

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

Discussions similaires

  1. [ADO.NET Oracle] Requête paramétrée en C# qui refuse de s'exécuter
    Par NeraOne dans le forum Accès aux données
    Réponses: 9
    Dernier message: 11/05/2007, 17h50
  2. Requête DELETE qui refuse de fonctionner chez Free
    Par fafafa dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/06/2006, 15h00
  3. Requête qui ne passe pas
    Par TheBart dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/08/2005, 10h12
  4. [...] doit utiliser une requête qui peut être mise à jour
    Par requiemforadream dans le forum ASP
    Réponses: 4
    Dernier message: 26/04/2005, 09h12
  5. Problème requête qui renvoie plusieurs
    Par dai.kaioh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/04/2004, 10h07

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