it-swarm.it

Aggiunta di più utenti in Joomla

Come posso aggiungere più utenti in Joomla 3 senza usare un'estensione?

Grazie! :)

3
Justin C

Vedo nei tag della tua domanda che stai usando mysql e phpmyadmin, quindi presumo che tu stia cercando un modo per INSERIRE i record degli utenti direttamente nel database Joomla.

Tuttavia, tieni presente che l'approccio esatto dovrebbe dipendere da dove vuoi importare questi utenti e dai dati utente che hai già e vuoi importare.

Inoltre, se questi utenti esistono in un altro sito Joomla di versioni precedenti, ciò potrebbe essere possibile tramite la migrazione db o utilizzando un'estensione come SP Tranfer , che sarebbe il metodo più semplice e più semplice per mantenere ID e altri dati utente con il resto del sito. In tal caso non dovresti preoccuparti di altri tipi di importazioni dirette di db.

Importazione semplice DB di utenti

Tabella utenti

Ma supponiamo che tu abbia un semplice elenco di utenti con nomi ed e-mail che desideri importare, dovrai inserire i record in 2 tabelle db per Joomla 3, il #__users e #__user_usergroup_map.

Per il #__users i campi essenziali sono: name, username, email, password, block

Quindi, dovresti finire con una [~ # ~] insert [~ # ~] Query come:

INSERT INTO `#__users` (`name`, `username`, `email`, `password`, `block`)
VALUES
    ('User1 Name', 'username1', '[email protected]', '$2y$10$Zy4d0JrrUq7Ed6pAzMFtQ.IZf5NtAsMyhDS7AwXlAZqMBgogqCev6', 0),
    ('User2 Name', 'username2', '[email protected]', '$2y$10$Zy4d0JrrUq7Ed6pAzMFtQ.IZf5NtAsMyhDS7AwXlAZqMBgogqCev6', 0),
    ('User3 Name', 'username3', '[email protected]', '$2y$10$Zy4d0JrrUq7Ed6pAzMFtQ.IZf5NtAsMyhDS7AwXlAZqMBgogqCev6', 0);

e così via...

Le password

Per quanto riguarda il campo password, è possibile utilizzare una password predefinita per tutti gli utenti e quindi richiedere a ciascun utente di reimpostare la propria password per accedere.

Ad esempio nella query sopra, il valore del campo password $2y$10$Zy4d0JrrUq7Ed6pAzMFtQ.IZf5NtAsMyhDS7AwXlAZqMBgogqCev6 utilizzato è per 'test123 ', per tutti e 3 gli utenti.

Se hai accesso alle password reali di ciascun utente e desideri utilizzarle, dovrai generarle. Ulteriori informazioni sulla crittografia della password utente J3 qui: https://stackoverflow.com/questions/21304038/joomla-3-2-1-password-encryption .

ID utente

Un'altra nota per il #__users tabella è il campo id (che verrà auto-incrementato). Se si hanno utenti con ID già assegnati che si desidera conservare, è necessario includerli anche nella query Inserisci, altrimenti ogni utente riceverà automaticamente il proprio ID.

Block Field

Infine, il valore di blocco impostato su 0 indica a Joomla che questi utenti non sono bloccati e possono utilizzare i propri account.

Tabella User_Usergroups

Ora, per completare l'importazione degli utenti, dovrai anche assegnare tutti gli utenti a un gruppo utenti. Questo viene fatto, combinando l'id utente con un gruppo utenti. Comunemente, la maggior parte degli utenti andrebbe nel gruppo utenti registrato (con ID gruppo utenti predefinito = 2).

Quindi, dovrai eseguire una query INSERT che farà semplicemente qualcosa del tipo:

INSERT INTO `#__user_usergroup_map` (`user_id`, `group_id`)
VALUES
    (20, 2),
    (21, 2),
    (22, 2);

Per il user_id, dovrai utilizzare gli ID che sono stati assegnati ai tuoi utenti dal precedente Inserisci.

Spero che questo ti aiuti a darti una base per iniziare e adattarti di conseguenza alle tue esigenze specifiche.

AGGIORNARE:

In realtà il campo Blocco non è obbligatorio, poiché per impostazione predefinita ottiene un valore 0. Tuttavia lascerò le risposte di cui sopra così come sono.

8
FFrewin

Ho fatto una chiamata Ajax e poi ho semplicemente passato le variabili a questo script.

define('_JEXEC', 1);
define('JPATH_BASE', __DIR__);
define('DS', DIRECTORY_SEPARATOR);

/* Required Files */
require_once(JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once(JPATH_BASE . DS . 'includes' . DS . 'framework.php');
$app = JFactory::getApplication('site');
$app->initialise();

require_once(JPATH_BASE . DS . 'components' . DS . 'com_users' . DS . 'models' . DS . 'registration.php');

$model = new UsersModelRegistration();

jimport('joomla.mail.helper');
jimport('joomla.user.helper');
$language = JFactory::getLanguage();
$language->load('com_users', JPATH_SITE);

$jinput = JFactory::getApplication()->input;

$type       = 0;
$name       = $jinput->get('name', '', 'string');
$username   = $jinput->get('username', '', 'string');
$email      = $jinput->get('email', '', 'email');
$password   = $jinput->get('password', '', 'string');
$alias      = strtr($name, array(' ' => '-'));
$sendEmail  = 1;
$activation = 0;

$data = array(
    'username'   => $username,
    'name'       => $name,
    'email1'     => $email,
    'password1'  => $password, // First password field
    'password2'  => $password, // Confirm password field
    'sendEmail'  => $sendEmail,
    'activation' => $activation,
    'block'      => "0", 
    'groups'     => array("2", "10")
);

$response = $model->register($data);

//print_r($data); //tested
$model->register($data);

Inserisci questo script nella directory principale. Ho provato la sceneggiatura e funziona bene.

Fammi sapere se hai qualche problema.

1
Joomler