Форум русской поддержки Joomla!® CMS
04.12.2016, 22:20:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Создание пользователей из сторонних скриптов

 (Прочитано 127 раз)
0 Пользователей и 1 Гость смотрят эту тему.
m.smetannikov
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 69


« : 19.08.2016, 01:24:44 »

Всем привет.
В Joomla 3.4 у меня работало создание новых пользователей из скрипта который лежит к корне
Не помню откуда сделал копипаст этого кода, но он работал:
Код:

if (!defined('_JEXEC', 1)) {
define( '_JEXEC', 1);
define ('JPATH_BASE', __DIR__);
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );
$mainframe = JFactory::getApplication('site');
}
$db = JFactory::getDbo();
$user = JFactory::getUser();
function addJoomlaUser($name, $username, $password, $email) {
$data = array(
"name"=>$name,
"username"=>$username,
"password"=>$password,
"password2"=>$password,
"email"=>$email
);

$user = clone(JFactory::getUser());
//Write to database
if(!$user->bind($data)) {
throw new Exception("Could not bind data. Error: " . $user->getError());
}
if (!$user->save()) {
throw new Exception("Could not save user. Error: " . $user->getError());
}

return $user->id;
}
Потом я обновился до J3.5 и началось:
- сначала defined() ожидает один параметр, а передается 2 - defined() убрал вообще,
- потом появилась такая ошибка: Error displaying the error page: Application Instantiation Error: Failed to start the session because headers have already been sent by "Мой скрипт" at line 32 - в этой строке у меня после if идет echo отладочное - непонятно(решил как и в прошлый раз с defined() - комментарием непонятного для меня $mainframe = JFactory::getApplication('site'); который еще и нигде дальше не используется).
-дальше вот такая ошибка: Error displaying the error page: Application Instantiation Error: Could not save user. Error: Application Instantiation Error (это вот финальная ошибка дальше которой я не продвинулся)
-после того как при вызове попытался передать пользователя с уже используемым в Joomla e-mail появилась вот такая ошибка: Error displaying the error page: Application Instantiation Error: Could not save user. Error: JLIB_DATABASE_ERROR_EMAIL_INUSE то есть получается запрос в базу делается на проверку наличия передаваемого e-mail, но пользователь с новым e-mail все равно не сохраняется - вот это для меня вообще не понятно.

Подскажет кто - нибудь в чем дело?
Записан
m.smetannikov
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 69


« Ответ #1 : 19.08.2016, 03:24:43 »

В общем я не понимаю почему это работало, почему это перестало работать и почему это снова заработало.
Решение следующее: перед
Код:
if (!$user->save())
я добавил
Код:
$user->save();
И снова заработало.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet