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

EndErr

  • Новичок
  • 8
  • 0 / 0
автологин при активации
« : 27.03.2012, 11:39:32 »
пытаюсь автоматически залогинить пользователя при активации с мыла, на примере
Код
	
$dbpass = explode(':',$this->password);
$usersipass['username'] = $this->username;
$usersipass['password'] = $dbpass[0];
$mainframe->login($usersipass);
проблема в пароле, в бд оно зашифрованно, если plain то нет проблем.
вопрос: Как передать зашифрованный пароль модулю авторизации?
*

nixsystem

  • Захожу иногда
  • 207
  • 10 / 0
Re: автологин при активации
« Ответ #1 : 27.03.2012, 15:02:21 »
Пароль пользователя Joomla если он сгенерирован самой Joomla состоит из двух частей - самого хеша пароля, вычисленного из комбинации пароль+соль и, через точку, соли.
Соль (salt) добавляется для больше криптостойкости, чтобы сложнее (дольше) было подбирать пароль.
Если зайти в базу в таблицу jos_users то можно увидеть в поле password  такую строку
Код
f188e4ccd7d9e38fc1222861f2ba7b2a:wqftVAFr7VXpnqqCLIWNeZLlEZ4soFrf
где - первая часть, до ":" - "соленый" хеш, а вторая - сама соль.
Первая пароль генерируется так (это не код самой Joomla, это пример)
Код: php
$pass = 'password'; //здесь берется то значение, которое ввел пользователь в качестве пароля
$salt = 'salt'; // значение $salt Joomla генерирует автоматически для каждого пользователя уникальное
$pass_hash = md5($pass.$salt); // в данном примере в $pass_hash будет строка "b305cadbb3bce54f3aa59c64fec00dea"
$pass_for_db = $pass_hash.':'.$salt; // а это уже то, что записывается в базу, тут уже будет строка "b305cadbb3bce54f3aa59c64fec00dea:salt"

При логине Joomla ищет пользователя по имени, найдя берет $salt из поля password, заново генерирует этот соленый хеш из того пароля что ввел пользователь и той соли, что хранится в базе. Если все совпадает - то пользователя авторизует на сайте.

В вашем случае нужно сделать так
Код: php
$dbpass = explode(':',$this->password);
$usersipass['username'] = $this->username;
$usersipass['password'] = $dbpass[0].':'$dbpass[1];
$mainframe->login($usersipass);
Тогда для логина будут отправляться корректные данные.
*

EndErr

  • Новичок
  • 8
  • 0 / 0
Re: автологин при активации
« Ответ #2 : 27.03.2012, 17:14:32 »
Код
$dbpass[0].':'.$dbpass[1];
и есть
Код
$this->password
я сделал так: при регистрации хранится пароль (без шифровки) в отдельную колонку в бд, при активации используется этот пароль для автоматического входа и потом удаляется
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

письмо об подтверждении активации

Автор radiant

Ответов: 4
Просмотров: 1926
Последний ответ 09.12.2015, 09:45:32
от capricorn
Можно ли автоматизировать отправку письма активации учётных записей пользователям после их регистрац

Автор Woland66

Ответов: 14
Просмотров: 2093
Последний ответ 17.02.2012, 06:43:42
от Woland66
Не выводится сообщение что пользователю отправлено письмо со ссылкой активации

Автор Shattl

Ответов: 2
Просмотров: 1354
Последний ответ 16.06.2010, 13:57:05
от Shattl
Повторная отправка письма об активации

Автор Shverep

Ответов: 14
Просмотров: 4387
Последний ответ 21.03.2010, 14:47:34
от Shverep
Код активации аккаунта по SMS

Автор se_demon

Ответов: 6
Просмотров: 2489
Последний ответ 13.02.2010, 19:45:08
от Lexx