Joomla.it Forum
Non solo Joomla... => Sviluppo => : Trigor 17 Jun 2010, 14:35:02
-
ciao a tutti :)
sto lavorando sull'inserimento di un gran numero di utenti e ho deciso di leggere un file excel dove questi utenti si trovano e di inserirli nel database joomla.
va tutto bene nella lettura del file, ma quando provo ad inserire nel database gli utenti, le password inserite non corrispondono.
questo è il codice che uso per la creazione delle password usando il crypt di joomla:
$salt = JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword($password, $salt);
$password = $crypt.':'.$salt;
dovrebbe in teoria essere corretto ma evidentemente mi è sfuggito qualcosa :)
ovviamente richiamo la classe e le password che ottengo sono nel format giusto, ad esempio
8cee5f829444da8fb515cdb75c23c69a:qzOOVP8Ba0YZJjO1Y0p9SMNazkDvFzrb
ma quando faccio login con la password di partenza, non funziona :(
grazie dell'attenzione :)
-
Ma le password le hai criptate in md5?'
-
no, il dato $password the do al metodo getCryptedPassword($password, $salt); è un plain text come scritto nell'api di joomla
quindi se la mia password è "pippo" passerò $password = "pippo"
questo perchè nell'api di joomla ho trovato
getCryptedPassword (line 106)
Formats a password using the current encryption.
* return: The encrypted password.
* access: public
string getCryptedPassword (string $plaintext, [string $salt = ''], [string $encryption = 'md5-hex'], [boolean $show_encrypt = false])
* string $plaintext: The plaintext password to encrypt.
* string $salt: The salt to use to encrypt the password. [] If not present, a new salt will be generated.
* string $encryption: The kind of pasword encryption to use. Defaults to md5-hex.
* boolean $show_encrypt: Some password systems prepend the kind of encryption to the crypted password ({SHA}, etc). Defaults to false.
non mi sembra che debba essere criptata prima con md5($password)... spero :)
-
no, non è così che si fa.
utenti e autorizzazioni sono definiti su più tabelle.
M.
-
sì, ho notato e ora ho risolto.
non salvavo gli utenti sulle altre tabelle (3 totali, quelle 'aro').
per chi avesse il mio stesso problema questo è il codice dopo aver creato i dati necessari (visto che il "non è così che si fa" non è proprio utile per la soluzione...)
$query = "INSERT INTO #__users (id, name, username, email, password, usertype, block, sendEmail, gid, registerDate, lastvisitDate, activation, params) VALUES (NULL, '$username', '$email1', '$email', '$password', 'Registered', '0', '0', '18', CURDATE(), CURDATE(), '', '')";
$db->setQuery($query);
$result = $db->query();
$query2 = "INSERT INTO #__core_acl_aro (id, section_value, value, order_value, name, hidden) VALUES(NULL, 'users', '$id', '0', '$username', '0')";
$db->setQuery($query2);
$result2 = $db->query();
$query3 = "INSERT INTO #__core_acl_groups_aro_map (group_id, section_value, aro_id) VALUES('18', '', '$aro_id')";
$db->setQuery($query3);
$result3 = $db->query();