WDForge - Forum

Le forum des développeurs professionnels WinDev ®

Connecter un utilisateur de joomla depuis windev

Discussion sur WinDev®

Message non lupar EMIDEV » Mar 22 Nov 2016 10:22

bonjour, a tous

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.
EMIDEV
Animateur WDForge
 
Messages: 16
Enregistré le: Mer 6 Jan 2016 14:23

Retourner vers WinDev

cron