Back to top

Autore Topic: inserimento utenti manuale  (Letto 11434 volte)

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
inserimento utenti manuale
« il: 18 Giu 2009, 14:45:50 »
Ciao a tutti,
sto veramente impazzendo sono settimane che cerco in internet ovunque e non sono ancora giunta a una soluzione.
Ho realizzato una paginetta per l'inserimento degli untenti dentro joomla 1.5.9 aggiorno correttamente le 3 tabelle (jos_users, jos_core_acl_aro e jos_core_acl_groups_aro_map )
utilizzo le stesse funzioni che utlizza il componente nativo com_user di joomla infatti, nel database le 3 tabelle hanno tutti i record inseriti correttamente.
se provo a fare il login da frontend xo mi dice: "Nome utente e password non sono corrette o non possiedi ancora un account" se dall'amministrazione entro in uno di questi utenti e semplicemente incollo la password numerica e li risalvo, il login funziona.

non capisco come possa esserci un problema di codifica della password visto che utilizzo la funzione bind() è la stessa che usa joomla O_O cosa dovrei fare?

Offline ramses_2th

  • Global Moderator
  • Instancabile
  • ********
  • Post: 4067
  • Sesso: Maschio
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #1 il: 18 Giu 2009, 15:11:43 »
da pannello controllo, l'utente lo vedi abilitato ?

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #2 il: 18 Giu 2009, 15:15:12 »
SI! è tutto perfetto, abilitato , del gruppo registered!!!!
ma secondo me è la password xke se aggiorno semplicemente l'utente dal pannello di amministrazione cmq non funziona. se invece dal pannello di amministrazione inserisco manualmente la password (per es 1234) e salvo, allora va.....

ma non capisco xke io passo alla funzione bind dell'user la password in chiaro (quindi 1234) e poi è la funzione stessa di joomla (contenuta nella funziona bind con il suo salto e il suo pezzo random) che genera la password cifrata e la inserisce nel database quindi non capisco come cavolo faccia ad essere sbagliata.....

Offline ramses_2th

  • Global Moderator
  • Instancabile
  • ********
  • Post: 4067
  • Sesso: Maschio
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #3 il: 18 Giu 2009, 15:31:23 »
uhmmm il problema sta proprio nella password cifrata che vai ad inserire manualmente ...

faccio una prova ...

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #4 il: 18 Giu 2009, 15:35:54 »
non so se puo esserti di aiuto ma ti posto il pezzo di codice che uso per importare gli utenti

Codice: [Seleziona]
$user = new JUser(JRequest::getVar( 'id', 0, 'post', 'int'));
//$original_gid = $user->get('gid');

$post = array();
$post['username'] = sql_prep($valore[0]);
$post['password'] = sql_prep($valore[9]);
$post['password2'] = sql_prep($valore[9]);
$post['name']=sql_prep($valore[1]);
$post['email']= str_replace(" ","",sql_prep($valore[1])).'@soteha.it';
$post['gid']= "18";
$post['params']= "language=
timezone=0

";



if (!$user->bind($post))
{
echo 'Errore: ', $user->getError(), '<br />';

}

$objectID = $acl->get_object_id( 'users', $user->get('id'), 'ARO' );
$groups = $acl->get_object_groups( $objectID, 'ARO' );
$this_group = strtolower( $acl->get_group_name( $groups[0], 'ARO' ) );


// Are we dealing with a new user which we need to create?
$isNew = ($user->get('id') < 1);
if (!$isNew)
{
// if group has been changed and where original group was a Super Admin
if ( $user->get('gid') != $original_gid && $original_gid == 25 )
{
// count number of active super admins
$query = 'SELECT COUNT( id )'
. ' FROM #__users'
. ' WHERE gid = 25'
. ' AND block = 0'
;
$db->setQuery( $query );
$count = $db->loadResult();

if ( $count <= 1 )
{
// disallow change if only one Super Admin exists
$this->setRedirect( 'index.php?option=com_users', JText::_('WARN_ONLY_SUPER') );
return false;
}
}
}

/*
* Lets save the JUser object
*/
if (!$user->save())
{

//echo 'Errore: ', $user->getErrorNum(), '<br />';
echo $user->getError();
}

come vedi io faccio ben poco, fa tutto la pagina in "libraries/joomla/user.php"
veramente mi viene voglia di dargli fuoco!!! ;D

Offline ramses_2th

  • Global Moderator
  • Instancabile
  • ********
  • Post: 4067
  • Sesso: Maschio
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #5 il: 18 Giu 2009, 15:49:10 »
.... in effetti..

"dovrebbe" funzionare, ma qualcosa ci sfugge.

Fuoco ? nooooo, già siamo abbondantemente sui 30°  :'(

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #6 il: 18 Giu 2009, 16:06:11 »
ahahahah io sono abbondantemente condizionata!
cmq veramente non capisco sono due settimane che faccio "test" su "test" ormai ho il cervello saturo, speriamo che venga un illuminazione a te che sei arrivato ora davanti al mio problema!! :'(

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #7 il: 19 Giu 2009, 09:01:51 »
ummm nessuno che puo aiutarmi?
non c'e' proprio una soluzione?!?!?! ???

Offline 56francesco

  • Fuori controllo
  • *
  • Post: 29585
  • Sesso: Maschio
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #8 il: 19 Giu 2009, 09:35:57 »
mi sfugge: cosa ci trovi di sbagliato o che non fa per te nell'usare il normale pannello utenti?
nuovo utente ed inserisci tutti quello che ti pare..
(uso XP perchè win98 non si installa) 
PS: non sono un dipendente dello sbonzor quindi è necessario un "per favore" alla richiesta e un "grazie" alla risposta, sempre! PPS: non scrivo mai per primo in MP, in caso contrario chiedimi una conferma, Grazie.

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #9 il: 19 Giu 2009, 10:22:35 »
eh che ho bisogno di importare una lista di utenti esterna....

Offline 56francesco

  • Fuori controllo
  • *
  • Post: 29585
  • Sesso: Maschio
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #10 il: 19 Giu 2009, 10:36:16 »
ora capisco, non sarebbe bene allora spiegare il problema che si ha ed usare un titolo in tema?
(uso XP perchè win98 non si installa) 
PS: non sono un dipendente dello sbonzor quindi è necessario un "per favore" alla richiesta e un "grazie" alla risposta, sempre! PPS: non scrivo mai per primo in MP, in caso contrario chiedimi una conferma, Grazie.

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #11 il: 19 Giu 2009, 10:42:31 »
ma infatti il titolo è "inserimento utenti manuale" e ho spiegato abbondantemente il mio problema inserendo anche il codice che utilizzo...
se avessi dovuto inserire un utente dal beckend di joomla non avrei scritto un post  ;)

Offline 56francesco

  • Fuori controllo
  • *
  • Post: 29585
  • Sesso: Maschio
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #12 il: 19 Giu 2009, 10:49:49 »
mah..
non è nella mentalità joomler star li a modificare il codice ma di solito utilizziamo componenti, moduli e plugin
quello che ti proponi di fare è facilmente risolvibile con un giretto su www.joomla.it nella sezione estensioni ma poi ciascuno può scegliere la strada che più gli piace...
(uso XP perchè win98 non si installa) 
PS: non sono un dipendente dello sbonzor quindi è necessario un "per favore" alla richiesta e un "grazie" alla risposta, sempre! PPS: non scrivo mai per primo in MP, in caso contrario chiedimi una conferma, Grazie.

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #13 il: 19 Giu 2009, 10:56:00 »
Infatti io non tocco assolutamente il core di joomla ma sto sviluppando un componente perchè questa è solo una parte di quello che dovrò andare a realizzare....

se nessuno si mettesse a realizzare i componenti non ce ne sarebbero...è questo il bello di joomla!

Cmq il mio problema persiste, la bind() di user.php di joomla genera una password non corretta, oppure c'e' qualche altra funzione oltre alla bind che gestiste la password prima di inserirla nel database che io non so !!!

qualche sviluppatore che mi può dare una mano? grazie mille a tutti!


Offline 56francesco

  • Fuori controllo
  • *
  • Post: 29585
  • Sesso: Maschio
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #14 il: 19 Giu 2009, 10:58:47 »
allora se stai sviluppando un componente la sezione giusta non è questa...

sposto
(uso XP perchè win98 non si installa) 
PS: non sono un dipendente dello sbonzor quindi è necessario un "per favore" alla richiesta e un "grazie" alla risposta, sempre! PPS: non scrivo mai per primo in MP, in caso contrario chiedimi una conferma, Grazie.

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #15 il: 19 Giu 2009, 11:33:19 »
Grazie, speriamo che in questa sezione ci sia qualcuno che sappia come generare una password corretta per joomla 1.5.9 o almneo capire xke la password che genera la funzione bind() di joomla non funziona!!

Offline copesc

  • Appassionato
  • ***
  • Post: 500
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #16 il: 19 Giu 2009, 12:49:00 »
Ciao Mirzia, la password la inserisci già codificata in MD5 giusto?
Extensioni e Template per Joomla

Offline ramses_2th

  • Global Moderator
  • Instancabile
  • ********
  • Post: 4067
  • Sesso: Maschio
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #17 il: 19 Giu 2009, 12:59:29 »
No, è proprio quello che genera l'errore. Ho trovato un po di notizie in giro (risalente ai tempi di Mambo) sto mettendo giu' qualche appunto.

Riusciremo nell'intento. ;D

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #18 il: 19 Giu 2009, 13:35:09 »
Ciao, la password iniziale è in chiaro e la passo alla funzione bind() di libraries/joomla/user/user.php.
quindi è lo stesso joomla che codifica la password per questo non riesco a capire come faccia a generarla sbagliata.
se guardate nel codice che ho scritto qualche "post" fa io non codifico nulla ma passo tutto l'array con i dati dell'utente prima alla funzione joomla bind() e poi alla save() esattamente come fa il componente nativo di joomla com_user....

magari mi perdo qualcosa :)

Offline ramses_2th

  • Global Moderator
  • Instancabile
  • ********
  • Post: 4067
  • Sesso: Maschio
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #19 il: 19 Giu 2009, 13:38:32 »
Rieccomi.

Dunque a parte che forse non avevo cercato nel posto piu' ovvio.

Dalle varie ricerche ed appunti è uscito fuori questo.

Codice: [Seleziona]
<?php
//database data
$dbhost="";
$dbname="";
$dbuser="";
$dbpass="";
//filename
$filename="users.csv";

$debugactive=false;
$fileline=0;
$recordsupdated=0;
$skippedrecords=-1;

$file=fopen($filename,"r") or exit("Unable to open file!");

$con mysql_connect($dbhost,$dbuser,$dbpass);
if (!
$con) {
die('Could not connect: ' mysql_error() . "\n");
}
else {
mysql_select_db($dbname$con) or die(mysql_error());
if ($debugactive) echo "Connessione con db Ok\n----------------------------\n";
}

while(!
feof($file))
{
$fileline $fileline+1;
$stringfgets($file);
$token strtok($string",");

$found=false;
$i=0;
$array;

while ($token !== false)
{
$array[$i]= str_replace("\""""trim($token));
if ($debugactive) echo $i." = ".$array[$i]."\n";

$i."\n";
$i=$i+1;
$token strtok(",");
}
//done making the array to insert into the MySQL tables

//encrypt the password
//$pw= md5($array[0]);
//$pw= $array[0];

$result mysql_query("SELECT * FROM jos_users WHERE username='$array[1]'");
//check if User exists in the table
while($row mysql_fetch_array($result)) {
$found=true;
echo $row['username'] . " - found skipping this row ($fileline)\n";
$skippedrecords $skippedrecords 1;
}
if($found==true) {
continue;
$found=false;
}

//insert into the 3 joomla tables
//jos_users
//jos_core_acl_aro
//jos_core_acl_groups_aro_map

//start with jos_users
$insertQuery="INSERT INTO jos_users (name,username,email,password,usertype,block,sendEmail,gid,registerDate,lastvisitDate,activation,params)
VALUES ('
$array[0]','$array[1]','$array[2]','$array[3]','$array[4]','$array[5]','$array[6]','$array[7]','$array[8]','$array[9]','$array[10]','$array[11]')";
if (! mysql_query($insertQuery)) die("Wrong query:\n"."$insertQuery"."\n");
$recordsupdated $recordsupdated 1;


//now do a select statement to figure out the jos_user ID you just generated
$result mysql_query("SELECT id FROM jos_users WHERE username='$array[1]'");

while($row mysql_fetch_array($result))
{
$joomID$row['id'];
}
if ($debugactive) {
echo "added user: "$array[1];
echo "\n";
echo "Joomla ID: " $joomID;
echo "\n";
}
//now insert jos_core_acl_aro
$insertQuery="INSERT INTO jos_core_acl_aro
(section_value, value, order_value, name, hidden)
VALUES ('users', '
$joomID', '$array[11]', '$array[12]', '$array[13]')";
if (! mysql_query($insertQuery)) die("Wrong query:\n" "$insertQuery"\n");

//now find out the jos_core_acl_aro ID you just generated
$result mysql_query("SELECT id FROM jos_core_acl_aro WHERE value='$joomID'");
while($row mysql_fetch_array($result))
{
$aroID$row['id'];
}
if ($debugactive) echo "with aroID: " $aroID "\n";

//now insert into jos_core_acl_groups_aro_map
mysql_query("INSERT INTO jos_core_acl_groups_aro_map (group_id , aro_id) VALUES ('$array[14]','$aroID')");
}
$fileline $fileline 1;
echo 
"Total processed lines = " $fileline "\n";
echo 
"Added " $recordsupdated " records\n";
echo 
$skippedrecords " record(s) already present\n";
?>




Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #20 il: 19 Giu 2009, 13:43:14 »
ma in questo script dove la fa la codifica della pass?
io le tabelle le aggiorno tutte correttamente l'unica cosa non corretta è il campo della password che anche se uso la funzione che utilizza joomla (bind()) evidentemente ritorna in dietro una codifica che poi a lui non piace...
« Ultima modifica: 19 Giu 2009, 13:59:11 da mirzia »

Offline copesc

  • Appassionato
  • ***
  • Post: 500
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #21 il: 19 Giu 2009, 15:25:13 »
Hai ragione, in effetti Joomla dovrebbe codificarla in automatico.

http://api.joomla.org/__filesource/fsource_Joomla-Framework_User_joomlauseruser.php.html#a378

Prova a modificare la funzione bind() inserendo un codice che ti permetta di vedere dove sta l'errore, scrivendolo su un file.

Quando scopri in quale if entra il tuo codice, allora scopri l'errore.
Extensioni e Template per Joomla

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #22 il: 19 Giu 2009, 15:38:26 »
Eh ho gia provato, ho messo un set error in ogni miniciclo per vedere se magari entrava nell'if della password vuota ma niente, se entrata nell'if della password troppo lunga ma niente, esegue la funzione tutta correttamente generando la password
con questo pezzo di codice :

Codice: [Seleziona]
$this->password_clear = JArrayHelper::getValue( $array, 'password', '', 'string' );

$salt  = JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword($array['password'], $salt);
$array['password'] = $crypt.':'.$salt;

quindi non entra in nessun caso eccezionale...non lo so se volete vi posto l'intera pagina magari trovate l'inghippo!

teakor

  • Visitatore
Re:inserimento utenti manuale
« Risposta #23 il: 20 Giu 2009, 10:33:42 »
Ciao.

Domanda la password la passi doppia? cioè password1 e password2?

Per vedere magari dove sta l'inghippo piazza qua e la degli echo o dei print_r che ristituiscono gli array e sui valori così da verificare se i dati sono giusti.

Poi prova a controllare anche il db. Verifica se la password che va a generare sia uguale a quella che dovrebbe inserire.

Un possibile errore riguardo la password potrebbe essere, che magari le password che gli passi hanno un involontario spazio iniziale o finale, e quindi ovviamente la password registrata è diversa da quella che dovrebbe essere.

Offline mirzia

  • Nuovo arrivato
  • *
  • Post: 29
  • Sesso: Femmina
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #24 il: 22 Giu 2009, 08:08:39 »
Ciao,
si passo pass 1 e pass 2 xke se no la funzione bind da errore xke fa il controllo che le due password siano uguali.
ho gia messo echo e print ovunque e sembra tutto giusto, niente spazi ne nulla, non posso neanche controllare l'esattezza della password codificata xke c'e' un pezzo random che quindi cambia di volta in volta anche se la si aggiorna dal pannello di amministrazone di joomla...
veramente nn so dove sbattere la testa!
i dati li prendo da un csv e il resto fa tutto joomla non so dove sbaglio, è giusto che uso prima la funzione bind() e poi la save() giusto? non c'e' altro che devo fare vero?

teakor

  • Visitatore
Re:inserimento utenti manuale
« Risposta #25 il: 24 Giu 2009, 08:59:25 »
Save()? non ne sono sicuro ma credo faccia tutto la funzione bind

Offline moise

  • Nuovo arrivato
  • *
  • Post: 10
    • Mostra profilo
Re:inserimento utenti manuale
« Risposta #26 il: 21 Lug 2009, 20:31:45 »
per la generazione della password usa questo codice che trovi al link, funziona.
https://secure.phil-taylor.com/generate_password.phps

oppure
https://secure.phil-taylor.com/generate_password.php

. IO ho il problema, che durante l'inserimento manuale, quando vado a fare il login come utente che ho inserito mi esce questo messaggio:

Login negato! Il tuo account è stato bloccato oppure non l'hai ancora attivato. Ti è arrivata un'e-mail di attivazione e hai cliccato sul link di attivazione?
dove posso attivar eil link? o sbloccare l'utente?

grzie

 



Web Design Bolzano Kreatif