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:
Voici l'erreur:
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); } }
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: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
L'erreur demeure toujours. La même et à la même ligne.
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';
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).
Partager