bsh34 Posté(e) le 3 avril 2006 Partager Posté(e) le 3 avril 2006 Bonjour, j'ai un petit soucis assez épineux, je suis un débutant en php/mysql et je n'arrive pas à créer un utilisateur sur ma bdd J'ai un mot de passe qui passe par une session php ( session_start() ) Ma variable contenant le mot de passe s'appel $_SESSION['mdp'] et est récupéré d'un formulaire html par méthode POST Voila mon code ... $_SESSION['mdp']=crypt($_SESSION['mdp']); $usage = mysql_query("GRANT USAGE ON ".$_SESSION['name'].".* TO ".$_SESSION['name']."@'localhost' IDENTIFIED BY ".$_SEESION['mdp'].";" ); if (!$usage) { die('Requete usage invalide : ' . mysql_error()); } $droit = mysql_query("GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER ON ".$_SESSION['name'].".* TO '".$_SESSION['name']."'@'localhost' IDENTIFIED BY '".$_SESSION['name']."';"); if (!$droit) { die('Requete droit invalide : ' . mysql_error()); } mysql_close($link); J'ai ce code erreur de retour Requete usage invalide : You have an error in your SQL syntax near '' at line 1 Je vois vraiment pas où j'ai pu oublié un quote (simple ou double) ou faire une erreur. Avant je créais ma utilisateur et sa bdd dans mon bash linux, étant donné que je cryptais le mot de passe avec la fonction crypt de bash, ça marché, là en php, faut que je crypte le mot de passe soit avec crypt fonction php, mais ça ne marche pas, j'y arrive pas, soit en utilisant PASSWORD() dans ma requete sql, mais j'y arrive pas non plus. svp j'ai besoin d'aide, je dois faire une démo en fin de semaine et j'en ai trop trop besoin merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 3 avril 2006 Partager Posté(e) le 3 avril 2006 En haut de ton code, tu as ça : $_SESSION['mdp']=crypt($_SESSION['mdp']); Ca devrait plutôt être ça je pense : $_SESSION['mdp']=crypt($_POST['mdp']); Sinon, tu as un "SEESION" au lieu de "SESSION" dans la définition de $usage. Et je pense que tu as dû oublier quelques ' à certains endroits. Tu devrais faire des : $sql = "GRANT USAGE ON ".$_SESSION['name'].".* TO ".$_SESSION['name']."@'localhost' IDENTIFIED BY ".$_SESSION['mdp'].";" $usage = mysql_query($sql); Ca te permettrait de faire des echo $sql."<br />"; pour tester tes requêtes. Lien vers le commentaire Partager sur d’autres sites More sharing options...
bsh34 Posté(e) le 3 avril 2006 Auteur Partager Posté(e) le 3 avril 2006 En haut de ton code, tu as ça : $_SESSION['mdp']=crypt($_SESSION['mdp']); Ca devrait plutôt être ça je pense : $_SESSION['mdp']=crypt($_POST['mdp']); Sinon, tu as un "SEESION" au lieu de "SESSION" dans la définition de $usage. Oups, seesion corrigé Je ne change pas le $_SESSION['mdp']=crypt($_POST['mdp']); car j'utilise le mot de passe plus au haut dans code et j'ai besoin qu'il ne soit pas crypté dès le départ, donc je le crypte par le suite avec $_SESSION['mdp']=crypt($_SESSION['mdp']); J'ai aussi droit à ça dans mon fichier de log : [Mon Apr 3 15:35:37 2006] [error] PHP Parse error: syntax error, unexpected T_ECHO in /home/bsdconce/www/bdd/creatdata.php on line 23 Alors que j'ai fais un c/c de ce que tu m'as marqué Mais ligne 22 et 23 sont : $sql = "GRANT USAGE ON ".$_SESSION['name'].".* TO ".$_SESSION['name']."@'localhost' IDENTIFIED BY ".$_SESSION['mdp'].";" // $usage = mysql_query($sql); echo $sql."<br />"; Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 3 avril 2006 Partager Posté(e) le 3 avril 2006 Essaye avec ça (corrigé d'instinct alors bon...) : $sql = "GRANT USAGE ON '".$_SESSION['name'].".*' TO '".$_SESSION['name']."@localhost' IDENTIFIED BY '".$_SESSION['mdp']."';" // $usage = mysql_query($sql); echo $sql."<br />"; Lien vers le commentaire Partager sur d’autres sites More sharing options...
bsh34 Posté(e) le 3 avril 2006 Auteur Partager Posté(e) le 3 avril 2006 non ça marche pas, même erreur, si je me souviens bien, les ' font abstraction de ce qu'ils contiennent, style : echo '$nom'; affichera $nom au lieu du contenu de la variable, à contraire des " qui marqueront le contenu de la variable $nom. Bref, c'est quand même une belle merde ce php quand il s'y met J'ai quand même pas envie de faire marche arrière en créant ma bdd et mon user en utilisant un bash linux, c'est chelou ça quand même EDIT : arf, j'ai trouvé la faute de synthax, la ligne exacte est : mysql_query("GRANT USAGE ON ".$_SESSION['name'].".* TO ".$_SESSION['name']."@'localhost' IDENTIFIED BY '".$_SESSION['mdp']."';" ); Mais c'est toujours pas le bon mot de passe, faut le crypter en quoi ? md5 non dans mysql 3.23.58 ? (merci OVH pour leur version datant de l'antéchrist) Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 3 avril 2006 Partager Posté(e) le 3 avril 2006 Aucun rapport avec les " ou les '. Etant donné que tu fais de la concaténation (avec le point), ça ne joue pas du tout. Je pense plutôt que tu devrais te pencher sur SQL. Faire une requête correcte à la main d'abord, puis la générer avec PHP ensuite (avec un écho pour vérifier que tu généres bien la même requête). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Helfima Posté(e) le 4 avril 2006 Partager Posté(e) le 4 avril 2006 In the IDENTIFIED BY clause, the password should be given as the literal password value. It is unnecessary to use the PASSWORD() function as it is for the SET PASSWORD statement. For example: GRANT ... IDENTIFIED BY 'mypass'; If you do not want to send the password in clear text and you know the hashed value that PASSWORD() would return for the password, you can specify the hashed value preceded by the keyword PASSWORD: GRANT ... IDENTIFIED BY PASSWORD '*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4'; source ceci resoud la question sur la pass donc si je comprend bien soit tu donne en clair le pass a la dbb soit tu le crypte mais seulement avec PASSWORD() et non crypt qui ne fait pas certainement la meme chose, enfin c'est a tester et n'oublie pas que si ton pass est crypté faut le préciser a la dbb sinon regarde le lien pour faire la bonne syntax j'espère que ca t'aidera Lien vers le commentaire Partager sur d’autres sites More sharing options...
Helfima Posté(e) le 4 avril 2006 Partager Posté(e) le 4 avril 2006 Mais c'est toujours pas le bon mot de passe, faut le crypter en quoi ? md5 non dans mysql 3.23.58 ? (merci OVH pour leur version datant de l'antéchrist) heu petite remarque complémentaire autant en local tu peux te connecter en admin sur la base mais sur un hébergeur faut pas rêver donc si tu dois mettre en ligne ton truc sans etre admin de la base (a moins que tu travail chez ovh) oublie l'affectation d'utilisateur sur la dbb car tu ne pourra jamais le faire tu est un simple utilisateur comme tous les hébergés bonne chance Lien vers le commentaire Partager sur d’autres sites More sharing options...
bsh34 Posté(e) le 12 avril 2006 Auteur Partager Posté(e) le 12 avril 2006 Mille excuse de ne pas avoir répondu avant, gros prob avec ma connexion internet. J'ai trouvé mon erreur, elle venait du fait que j'avais une autre requete qui donner un autre mot de passe à mon utilisateur La requete qui marche avec la bonne synthax est donc : $usage = mysql_query("GRANT USAGE ON ".$_SESSION['name'].".* TO ".$_SESSION['name']."@'localhost' IDENTIFIED BY '".$_SESSION['mdp']."';"); if (!$usage) { die('Requete usage invalide : ' . mysql_error()); } Désolé d'avoir fait le boulay et un énorme merci à tous ceux qui m'ont répondu Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.