Back to top

Autore Topic: inserimento utenti manuale  (Letto 11460 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";
?>




 



Web Design Bolzano Kreatif