Решено Создание нового пользователя SQL

Статус
В этой теме нельзя размещать новые ответы.

Appologies

Проверенные
Сообщения
145
Реакции
59
Баллы
3,325
Доброго времени суток.
Возникла задача создания и регистрации нового пользователя сторонним скриптом.
Имеется ряд переменных: $username, $usermail, $userpass.
Как правильно сделать SQL запрос к базе данных, для создания нового пользователя? Какие столбцы обязательны для заполнения? Есть ли какие то подводные камни?
И будут ли какие то последствия от того, что пользователь будет добавлен не через форму регистрации на форуме?

Достаточно ли будет одного запроса?
Код:
INSERT INTO `xf_user` (`user_id`, `username`, `email`, `gender`, `custom_title`, `language_id`, `style_id`, `timezone`, `visible`, `user_group_id`, `secondary_group_ids`, `display_style_group_id`, `permission_combination_id`, `message_count`, `conversations_unread`, `register_date`, `last_activity`, `trophy_points`, `alerts_unread`, `avatar_date`, `avatar_width`, `avatar_height`, `gravatar`, `user_state`, `is_moderator`, `is_admin`, `is_banned`, `like_count`, `warning_points`, `is_staff`) VALUES
(1, 'admin', '[email protected]', '', '', 1, 0, 'Europe/Moscow', 1, 2, '3,4', 3, 5, 0, 0, 1422333732, 1422333934, 0, 0, 0, 0, 0, '', 'valid', 1, 1, 0, 0, 0, 1);

Так же в таблице xf_user не нашел столбца для заполнения пароля. В какой таблице хранятся пароли пользователей?
 
Последнее редактирование:
PHP:
<?php
require(__DIR__ . '/../library/XenForo/Autoloader.php');
set_time_limit(0);

XenForo_Autoloader::getInstance()
                  ->setupAutoloader(__DIR__ . '/../library');

$startTime = microtime(true);
XenForo_Application::initialize(__DIR__ . '/../library', __DIR__ . '/../');
XenForo_Application::set('page_start_time', $startTime);
XenForo_Application::disablePhpErrorHandler();

foreach ($userData as $user) {
    /** @var XenForo_DataWriter_User $writer */
    $writer = XenForo_DataWriter::create('XenForo_DataWriter_User');

    $writer->set('username', $user['username']);
    $writer->set('email', $user['email']);
    $writer->setPassword($newpassword, $user['password']);
    $writer->set('user_group_id', $user['groupId']);

    try {
        $writer->save();
    } catch (Exception $e) {
        echo("Ошибка создания аккаунта {$username}: {$e->getMessage()}<br />\r\n");
        continue;
    }
 
Последнее редактирование:
PHP:
<?php
require(__DIR__ . '/../library/XenForo/Autoloader.php');
set_time_limit(0);

XenForo_Autoloader::getInstance()
                  ->setupAutoloader(__DIR__ . '/../library');

$startTime = microtime(true);
XenForo_Application::initialize(__DIR__ . '/../library', __DIR__ . '/../');
XenForo_Application::set('page_start_time', $startTime);
XenForo_Application::disablePhpErrorHandler();

foreach ($userData as $user) {
    /** @var XenForo_DataWriter_User $writer */
    $writer = XenForo_DataWriter::create('XenForo_DataWriter_User');

    $writer->set('username', $user['username']);
    $writer->set('email', $user['email']);
    $writer->setPassword($newpassword, $user['password']);
    $writer->set('user_group_id', $user['groupId']);

    try {
        $writer->save();
    } catch (Exception $e) {
        echo("Ошибка создания аккаунта {$username}: {$e->getMessage()}<br />\r\n");
        continue;
    }
Пробую вот так:
Код:
<?php
    $newusername = "New_User";
    $newpassword = "123456";
    $newemail = "[email protected]";
 
    $fileDir = "/home/host1561194/site.ru/htdocs/forum";
 
    require($fileDir .'/library/config.php'); 
    require($fileDir.'/library/XenForo/Autoloader.php');
    XenForo_Autoloader::getInstance()->setupAutoloader($fileDir . '/library');
 
    $startTime = microtime(true);
    XenForo_Application::initialize($fileDir . '/library', $fileDir);
    XenForo_Application::set('page_start_time', $startTime);
    XenForo_Application::disablePhpErrorHandler();
 
    // create new user
    $writer = XenForo_DataWriter::create('XenForo_DataWriter_User');
    // set all the values 
    $writer->set('username', $newusername);
    $writer->set('email', $newemail);
    $writer->setPassword($newpassword, $newpassword);
    $writer->set('user_group_id', XenForo_Model_User::$defaultRegisteredGroupId);
    //$writer->set('adcredit_shop_postbit_icons', NULL);
    // save user
    $writer->save();
?>

Получаю ошибку:
An unexpected database error occurred. Please try again later.

В логе ошибок сервера:
The field 'adcredit_shop_postbit_icons' was not recognised.минуту назад - /home/host1561194/site.ru/htdocs/forum/library/XenForo/DataWriter.php:1359
Отключение плагина не помогает
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу