Как программно (через PHP) зарегистрировать нового пользователя в Joomla 3

Как программно (через PHP) зарегистрировать нового пользователя в Joomla 3

32133

В программировании бывают ситуации, когда необходимо автоматически зарегистрировать нового пользователя средствами PHP. Например, мне это было нужно, когда я создавал специальный компонент для админки со своими пользователями. Эти пользователи имели свои логины и пароли не связанные с пользователями Joomla. В последствии появилась надобность, чтобы при регистрации пользователя в моем компоненте, ему автоматически создавался Joomla профиль с правами Registered.

Принцип регистрации для Joomla через PHP очень прост.

Для этого надо подключиться к БД и использовать несколько запросов. Но обо всем по порядку.

Предположим, вы решили регистрировать пользователя через index.php (кодировка UTF-8 без BOM) вашего шаблона. Для этого поставьте в самом верху следующий код:

<?php defined( '_JEXEC' ) or die( 'Restricted access' );
$jconfig = new JConfig();
$database_host = $jconfig->host;
$database_user = $jconfig->user;
$database_password = $jconfig->password;
$database_name = $jconfig->db;
$database_dbprefix = $jconfig->dbprefix;
mysql_connect($database_host, $database_user, $database_password);
mysql_query("SET NAMES 'utf8'");
mysql_select_db($database_name);
?>

Он позволить вам подключиться к БД Joomla из файла configuration.php, который находится в корне сайта.

После того, как у вас появится подключение к БД перейдем к самой регистрации. В Joomla 3 пользователи находятся в таблице префикс_users, а группы, которые им присваиваются в табличке префикс_uuser_usergroup_map. К слову о группах, они бывают нескольких типов (задаются цифрами в столбце group_id):

1 - Public
2 - Registered
3 - Author
4 - Editor
5 - Publisher
6 - Manager
7 - Administrator
8 - Super Users

Для моих целей, мне нужен был доступ Registered - он дается пользователю по умолчанию при обычной регистрации.

А теперь сам код для авторегистрации пользователей Joomla 3 (ставьте его сразу после первой части кода, либо ниже):

<?php
$bnamez = "Имя пользователя";
$bloginz = "Login"; //логин
$bemailz = "testovyi2016@mail.ru"; //email пользователя
$bparolz = "2016"; //пароль пользователя
mysql_query("INSERT INTO ".$jconfig->dbprefix."users (name, username, email, password, block, sendEmail, registerDate, lastvisitDate, activation, params, lastResetTime, resetCount, otpKey, otep, requireReset) VALUES ('$bnamez', '$bloginz', '$bemailz', '".md5($bparolz)."', '0', '0', '".date('Y-m-d H:i:s')."', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '0', '', '', '0')");
$podresult = mysql_query("select * from ".$jconfig->dbprefix."users ORDER BY id DESC LIMIT 1");
while ($podrow=mysql_fetch_array($podresult)) {$idzapisi = $podrow['id'];}
mysql_query("INSERT INTO ".$jconfig->dbprefix."user_usergroup_map (user_id, group_id) VALUES ('$idzapisi', '2')"); //здесь 2 - группа пользователя Registered
?>

Теперь если вы его запустите, то у вас автоматически создастся пользователь с параметрами, которые записаны в переменные $bnamez, $bloginz, $bemailz и $bparolz. Их вы можете поменять на свои. В самой последней строке кода есть цифра 2 - ставьте на свою, чтобы поменять уровень доступа пользователи при регистрации.

Думаю, данный материал вам будет полезен в программировании Joomla. О том, как сделать автоматическую авторизацию напишу позже.

Желаю успехов!

 

 

| | Как программно (через PHP) зарегистрировать нового пользователя в Joomla 3 | В программировании бывают ситуации, когда необходимо автоматически зарегистрировать нового пользователя средствами PHP. Например, мне это было нужно, | http://blogprogram.ru/wp-content/uploads/2016/05/32133-131x131.png