it-swarm.com.de

Hinzufügen mehrerer Benutzer in Joomla

Wie kann man in Joomla 3 mehrere Benutzer hinzufügen ohne eine Erweiterung zu verwenden?

Vielen Dank! :)

3
Justin C

Ich sehe in den Tags Ihrer Frage, dass Sie mysql und phpmyadmin verwenden, also gehe ich davon aus, dass Sie nach einer Möglichkeit suchen, Datensätze von Benutzern direkt in die Joomla-Datenbank einzufügen.

Beachten Sie jedoch, dass die genaue Vorgehensweise davon abhängen sollte, von wo Sie diese Benutzer importieren möchten, und von den tatsächlichen Benutzerdaten, die Sie bereits haben und importieren möchten.

Wenn diese Benutzer auf einer anderen Joomla-Site der Vorgängerversionen vorhanden sind, kann dies entweder durch Datenbankmigration oder durch die Verwendung einer Erweiterung wie SP Tranfer , was möglich sein wäre die einfachste und einfachste Methode, um IDs und andere Benutzerdaten mit dem Rest der Site zu speichern. In diesem Fall sollten Sie sich nicht um andere Arten von direkten DB-Importen kümmern müssen.

Einfacher DB-Import von Benutzern

Benutzertabelle

Angenommen, Sie haben eine einfache Liste von Benutzern mit Namen und E-Mails, die Sie importieren möchten. In Joomla 3 müssen Sie Datensätze in 2-DB-Tabellen einfügen, die #__users und das #__user_usergroup_map.

Für die #__users Die wesentlichen Felder sind: name, username, email, password, block

Sie sollten also am Ende eine [~ # ~] einfügen [~ # ~] Abfrage wie:

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);

und so weiter...

Passwörter

In Bezug auf das Kennwortfeld können Sie ein Standardkennwort für alle Benutzer verwenden und dann verlangen, dass jeder Benutzer sein Kennwort zurücksetzt, um sich anzumelden.

Beispiel: In der obigen Abfrage wird der Wert des Kennwortfelds $2y$10$Zy4d0JrrUq7Ed6pAzMFtQ.IZf5NtAsMyhDS7AwXlAZqMBgogqCev6 verwendet wird für 'test123 'für alle 3 Benutzer.

Wenn Sie Zugriff auf die echten Passwörter der einzelnen Benutzer haben und diese verwenden möchten, müssen Sie diese generieren. Weitere Informationen zur Kennwortverschlüsselung für J3-Benutzer finden Sie hier: https://stackoverflow.com/questions/21304038/joomla-3-2-1-password-encryption .

Benutzer-ID

Ein weiterer Hinweis für die #__users table ist das ID-Feld (das automatisch inkrementiert wird). Wenn Sie Benutzer mit bereits zugewiesenen IDs haben, die Sie behalten möchten, sollten Sie diese auch in Ihre Einfügeabfrage einbeziehen. Andernfalls erhält jeder Benutzer automatisch seine ID.

Feld blockieren

Schließlich teilt der auf 0 gesetzte Sperrwert Joomla mit, dass diese Benutzer nicht gesperrt sind und ihre Konten verwenden dürfen.

User_Usergroups-Tabelle

Um den Benutzerimport abzuschließen, müssen Sie jetzt auch alle Benutzer einer Benutzergruppe zuweisen. Dies erfolgt durch Kombinieren der Benutzer-ID mit einer Benutzergruppe. Normalerweise würde die Mehrheit der Benutzer zur Benutzergruppe Registered wechseln (mit der Standardbenutzergruppen-ID = 2).

Sie müssen also eine INSERT-Abfrage ausführen, die einfach Folgendes ausführt:

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

Für die user_id Feld müssen Sie die IDs verwenden, die Ihren Benutzern vom vorherigen Insert zugewiesen wurden.

Hoffe, dies wird Ihnen helfen, eine Basis zu schaffen, um entsprechend Ihren spezifischen Bedürfnissen zu beginnen und sich anzupassen.

AKTUALISIEREN:

Tatsächlich ist das Feld Block nicht erforderlich, da es standardmäßig den Wert 0 erhält. Ich werde die obigen Antworten jedoch so lassen, wie sie sind.

8
FFrewin

Ich habe einen Ajax-Aufruf gemacht und dann nur die Variablen an dieses Skript übergeben.

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);

Fügen Sie dieses Skript in Ihr Stammverzeichnis ein. Ich habe das Skript ausprobiert und es funktioniert einwandfrei.

Lassen Sie mich wissen, wenn Sie irgendwelche Probleme haben.

1
Joomler