attention ce code est valable pour les joomla version max 1.5.2.6 ou joomla 2.5 avec un php < 5.3) ou simplement si votre mot de passe est en MD5
certain d'entre vous veulent peut etre (comme je l'ai eu sur le forum SQLManagerX) vouloir connecter un user joomla dans un prog windev (ou windev mobile) mais voila la table user de joomla est un peu speciale le mot de asse de l'utilisateur en base est un hash
le hash de joomla est normalement un MD5 et depuis la version 1.5 un MD5 + SALT pour eviter les rainbow tables et donc voila pourquoi ca pose probleme
donc assez difficile et impossible a faire en une seule requete dans la plus part des forums ou discussions car en fait il faut selectionner l'utilisateur par son nom et recuperer le mot de passe
si le mot de passe contient ":" a l'interieur alors la premiere partie est le mot de passe haschée et la deuxieme partie la cle Salt. :
exemple avec mot de passe est la saisie par exemple toto et password le md5 qu'on trouve dans la base
si password ne contient pas ":" alors md5(Mot de passe) = password
si password contient ":" alors partie 1 de password = MD5(mot de passe + partie 2 de password)
tout ca est compliqué mais c'est comme cela que ca fonctionne.
pour contredire la plupart des forum qui disent qu'on peut pas le faire en une seule requete et bien si c'est possible : on peut créer une requete qui fait ça c'est pas du SQL simple mais on peut le faire :
il faut donc savoir si on est dans le cas de joomla avec un mot de passe contenant ":" ou pas pour savoir comment faire le md5 et suivant le cas faire le bon MD5 d'ou le case dans le WHERE
donc la requete avec %1 = Login et %2 = mot de passe en clair
- Code: Tout sélectionner
sCodeSql est une chaîne =[
SELECT * FROM jos_users
WHERE username='%1'
AND
CASE WHEN substring_index(password,":",-1) <> substring_index(password,":",1) THEN substring_index(password,":",1) = MD5(concat("%2",substring_index(password,":",-1)))
WHEN substring_index(password,":",-1) = substring_index(password,":",1) THEN substring_index(password,":",1) = MD5(concat("%2"))
END
voila cette requete fonctionne tres bien sur mon joomla donc normalement elle devrait fonctionner chez vous apres a vous de debugguer cette requete si besoin, je l'ai ecrite il y a 8 ans pour un client qui voulait se connecter a joomla.
utile pour avoir avec php4WD ou php4WM des modules windev utilisant les tables ou parties joomla.