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

  • 1 Ответов
  • 329 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

m.smetannikov

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
Всем привет.
В 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

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
В общем я не понимаю почему это работало, почему это перестало работать и почему это снова заработало.
Решение следующее: перед
Код
if (!$user->save())
я добавил
Код
$user->save();
И снова заработало.