Joomla 3で複数のユーザーを追加するにはどうすればよいですか拡張子を使用せずに?
ありがとうございました! :)
私はあなたの質問のタグでmysqlとphpmyadminを使用しているのを確認したので、ユーザーのレコードを直接Joomlaデータベースに挿入する方法が必要だと思います。
ただし、正確なアプローチは、これらのユーザーをインポートする場所と、すでに持っているインポートしたい実際のユーザーデータによって異なることに注意してください。
また、これらのユーザーが以前のバージョンの別のJoomlaサイトに存在する場合、db移行または SP Tranfer 、これは、IDと他のユーザーデータをサイトの他の部分と一緒に保持する最も簡単で簡単な方法です。そのような場合、他の種類の直接DBインポートを気にする必要はありません。
しかし、インポートしたい名前と電子メールを持つユーザーの簡単なリストがあるとしましょう。Joomla3の2つのdbテーブルにレコードを挿入する必要があります。#__users
および#__user_usergroup_map
。
#__users
必須フィールドは:name
、username
、email
、password
、block
したがって、次のような[〜#〜] insert [〜#〜]クエリで終了する必要があります。
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);
等々...
パスワードフィールドについては、すべてのユーザーにデフォルトのパスワードを使用し、ログインするために各ユーザーにパスワードのリセットを要求することができます。
たとえば、上記のクエリでは、パスワードフィールドの値$2y$10$Zy4d0JrrUq7Ed6pAzMFtQ.IZf5NtAsMyhDS7AwXlAZqMBgogqCev6
は 'test123
'、3人のユーザーすべて。
各ユーザーの実際のパスワードにアクセスでき、これらを使用したい場合は、それらを生成する必要があります。 J3ユーザーパスワードの暗号化について詳しくは、こちらをご覧ください:https://stackoverflow.com/questions/21304038/joomla-3-2-1-password-encryption 。
#__users
テーブルはIDフィールドです(自動インクリメントされます)。保持したいIDが既に割り当てられているユーザーがいる場合は、それらも挿入クエリに含める必要があります。そうしないと、各ユーザーが自動的に自分のIDを取得します。
最後に、ブロック値を0に設定すると、これらのユーザーはブロックされず、アカウントの使用が許可されないことがJoomlaに通知されます。
ここで、ユーザーのインポートを完了するには、すべてのユーザーをユーザーグループに割り当てる必要もあります。これは、ユーザーIDとユーザーグループを組み合わせることによって行われます。通常、ユーザーの大多数はRegisteredユーザーグループ(デフォルトのユーザーグループID = 2)に移動します。
したがって、次のような単純なINSERTクエリを実行する必要があります。
INSERT INTO `#__user_usergroup_map` (`user_id`, `group_id`)
VALUES
(20, 2),
(21, 2),
(22, 2);
user_id
フィールド、以前の挿入からユーザーに割り当てられたIDを使用する必要があります。
これがあなたの特定のニーズに応じて開始し、それに応じて調整するための基礎を提供するのに役立つことを願っています。
デフォルトでは0の値を取得するため、実際にはBlockフィールドは必要ありません。ただし、上記の回答はそのままにしておきます。
私はajax呼び出しを行い、変数をこのスクリプトに渡しています。
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);
このスクリプトをルートディレクトリに置きます。私はスクリプトとその動作をうまく試しました。
問題が発生した場合はお知らせください。