4
« il: 18 Ott 2012, 16:38:30 »
io avrei prodotto quanto segue:
function codificapassword($password){
$salt = '';
for ($i = 1; $i <= 32; $i++) {
$maiusc = rand (1, 2);
if ($maiusc == 1)
{
$str = strtoupper(dechex(rand (0, 16)));
}
else {
$str = dechex(rand (0, 16));
}
$salt .= $str;
}
$passwordcodificata = md5($password.$salt).":".$salt;
return $passwordcodificata;
}
che genera random una password codificata con il metodo di joomla con salt esadecimale e caratteri maiuscolie minuscoli
poi il codice vero e proprio che scrive nelle tabelle del db di joomla è questo:
require_once "connetti.inc";
require_once "codificapassword.inc";
$prefisso = "prefissotabella_"; // inserire il prefisso delle tabelle di joomla
$link = connetti('nomedatabase','nome host','nomeutente','passwordutente'); // dove connetti è una funzione che connette al db di joomla richiamando semplicemente mysql_connect e inviando messaggi di errore nel caso di impossibilità di connessione al db
$row = 1;
if (($handle = fopen("prova.csv", "r")) !== FALSE) // dove prova.csv è il file di testo che contiene i dati
{
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
// inserisce nome, username, email, password e data registrazione nella tabella users
$password = codificapassword($data[4]);
$comando = "INSERT INTO ".$prefisso."users (name,username,email,password,registerDate) VALUES ('$data[1] $data[2]','$data[3]','$data[0]','$password',NOW())";
$valori = mysql_query($comando);
// legge il numero ID dell'utente inserito
$comando = "SELECT id FROM ".$prefisso."users WHERE username='$data[3]'";
$result = mysql_query($comando);
$valori = mysql_fetch_assoc($result);
echo $valori['id'];
// ricava i codici di tutti i gruppi a cui appartiene l'utente dalla tabella usegroups e li inserisce nella tabella user_usergroup_map
$num = count($data);
$row++;
$id = $valori['id'];
for ($c=5; $c < $num; $c++)
{
// legge l'id del gruppo dalla tabella usergroups
$comando = "SELECT id FROM ".$prefisso."usergroups WHERE title='$data[$c]'";
$result = mysql_query($comando);
$gruppi = mysql_fetch_assoc($result);
$gruppo = $gruppi['id'];
// scrive l'id del gruppo nella tabella user_usergroup_map
$comando = "INSERT INTO ".$prefisso."user_usergroup_map (user_id,group_id) VALUES ('$id','$gruppo')";
$valori = mysql_query($comando);
}
}
fclose($handle);
}
else
{
echo "errore";
}
il file prova.csv ha i seguenti campi:
mail,nome,cognome,username,password,gruppo1,gruppo2, ecc... (grippo1 ecc.. sono i nomi dei gruppi che creati in joomla)
i vari campi sono separati da una ',' e non c'è carattere di fineriga
cosa ne dici?