Jump to content

[résolu]Crypt Password Mysql


Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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é :chinois:

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é :yes:

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 />";

Link to comment
Share on other sites

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 />";

Link to comment
Share on other sites

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 :chinois:

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 :yes:

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)

Link to comment
Share on other sites

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).

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 :keskidit:

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 :cartonrouge:

bonne chance

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...