LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
19.06.2013, 21:59:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 2.5 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: При регистрации нового пользователя - добавить еще одну запись  (Прочитано 308 раз)
rafaello9 и 5 Гостей смотрят эту тему.
rafaello9
Осваиваюсь на форуме
***

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

Сообщений: 139



« : Сегодня в 12:03:42 »

Общий привет!
Есть такая необходимость, чтобы при регистрации нового пользователя (joomla 2.5) в таблицу #__users добавить еще один столбец и внести туда запись.
Добавить еще столбец особых проблем не вызывает, выполнить sql-запрос тоже, только вот куда именно надо прописать этот самый sql-запрос? Пожалуйста, подскажите, как мне добавить еще одну запись для нового юзера?
Кстати, необходимые уточнения.
Название нового столбца принципиального значения не имеет, для примера можно обозвать example, а вот значение, вносимое в этот столбец - это
Код:
base64_encode($password)
Причем, $password - это не хеш, а чистое значение пароля, которое юзер вбивает в поле регистрации.
Ну здесь понятно, что после проверки
Код:
if (jform[password1] == jform[password2]){
$passw = base64_encode($password);
sql = "INSERT INTO `#__users` (`example`) VALUES (`$passw`)"; // здесь выполняется вставка значение в столбец
}
Только где все это дело прописать?
Записан
SDKiller
Dev Team
******

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

Сообщений: 2667


...но войти в неё ты должен сам


« Ответ #1 : Сегодня в 12:39:43 »

Решается на самом деле просто, но с этической точки зрения и с точки зрения безопасности не надо бы этого делать.

Или вы хотите сделать клон одноклассников и заняться фишингом паролей? Wink

Да и без клонов - с учётом того что более 70% юзеров используют одни и те же пароли, в том числе и для email, на всех подряд сайтах - как-то неприлично.

Записан
rafaello9
Осваиваюсь на форуме
***

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

Сообщений: 139



« Ответ #2 : Сегодня в 12:56:04 »

Дело в том, что на одном домене с joomla2.5 на поддомене установлен другой скрипт (е-мейл рассылок). При регистрации нового пользователя на Joomla, мне необходимо, чтобы этот пользователь смог зайти в свой аккаунт в скрипте рассылок под этими же самыми логином и паролем. Причем, новая запись в таблицу #__users должна вводиться автоматически.
Я думаю, что эта необходимость вполне этически выглядит.
Что касается безопасности. Здесь просто нет выбора. После некоторых раздумий, я пришел к выводу, что по идее можно как-то вытащить пароль вновь созданного юзера из базы, но так ведь там хэш!.  Но мне ведь нужен именно пароль, вводимый в поле при регистрации. Необходимость заставляет использовать base64_encode.
Дальнейший ход этих действий такой - я извлекаю из базы запись, пропускаю ее через
Код:
base64_decode
и получаю пароль в чистом виде. А затем уже вношу этот пароль, после некоторых преобразований, в соответствии с требованиями скрипта почтовых рассылок, в базу, в таблицу пользователей этого самого скрипта.
Вот!
Записан
SDKiller
Dev Team
******

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

Сообщений: 2667


...но войти в неё ты должен сам


« Ответ #3 : Сегодня в 13:08:16 »

Вообще корректнее бы было реализовать этот ваш скрипт как компонент Joomla и не разводить субдомены с посторонними скриптами.
А что касается пароля при регистрации - он же не по пути от браузера пользователя до сайта хешируется )

Смотрите в сторону плагина группы user - на некоторые события при регистрации он передаётся в плагин в незашифрованном виде.
Записан
rafaello9
Осваиваюсь на форуме
***

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

Сообщений: 139



« Ответ #4 : Сегодня в 13:45:01 »

Что касается того, чтобы сделать этот скрипт как компонент, то там 20 МБ кода (там кода чем у Joomla более, чем в три раза).
А что касается плагина группы  user
то я нашел там функции onUserAfterDelete, onUserAfterSave, onUserLogin и onUserLogout
а куда именно там вставлять, мозгов не хватает.
В общем я представляю так.
Где-то надо перехватить пост-запрос, переопределить переменную пароля и добавить параметр для вставки в таблицу базы.
Но, е-мое, башка не варит, в какой именно функции там это можно сделать.
Пожалуйста, разжуйте слегка!
Записан
SDKiller
Dev Team
******

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

Сообщений: 2667


...но войти в неё ты должен сам


« Ответ #5 : Сегодня в 14:15:53 »

Плагин user/joomla посмотрите и найдёте всё что вам нужно
Записан
SDKiller
Dev Team
******

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

Сообщений: 2667


...но войти в неё ты должен сам


« Ответ #6 : Сегодня в 14:19:39 »

Кстати, можно бы было и другим путём пойти - нафига перехватывать пароли и писать их в базу в практически открытом виде, когда можно было бы в том скрипте реализовать такой же алгоритм хеширования и проверки хеша как в Joomla

И тогда вам остаётся просто копировать логины и хеши из базы Joomla в ту базу.
Записан
Fedor Vlasenko
Практически профи
*******

Репутация: +368/-4
Online Online

Пол: Мужской
Сообщений: 2531


Ctrl + U - иногда помогает


« Ответ #7 : Сегодня в 14:39:58 »

Гораздо проще проверять наличие ид и по его присутствию делать запрос. Исключив тем самым двойную идентификацию
Записан
SDKiller
Dev Team
******

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

Сообщений: 2667


...но войти в неё ты должен сам


« Ответ #8 : Сегодня в 14:43:06 »

ID чего?
Записан
Fedor Vlasenko
Практически профи
*******

Репутация: +368/-4
Online Online

Пол: Мужской
Сообщений: 2531


Ctrl + U - иногда помогает


« Ответ #9 : Сегодня в 14:46:22 »

Юзера естественно. Если есть значит пользователь зарегистрирован в системе и делать запрос в другую базу или таблицу
Записан
SDKiller
Dev Team
******

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

Сообщений: 2667


...но войти в неё ты должен сам


« Ответ #10 : Сегодня в 14:49:06 »

Юзера естественно. Если есть значит пользователь зарегистрирован в системе и делать запрос в другую базу или таблицу

А откуда этот ID взять?
У ТС задача чтобы юзер логинился на субдомене. Вот он идёт на субдомен и пытается там логиниться.
Что дальше?
Записан
rafaello9
Осваиваюсь на форуме
***

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

Сообщений: 139



« Ответ #11 : Сегодня в 14:54:05 »

Цитировать
Кстати, можно бы было и другим путём пойти - нафига перехватывать пароли и писать их в базу в практически открытом виде, когда можно было бы в том скрипте реализовать такой же алгоритм хеширования и проверки хеша как в Joomla

И тогда вам остаётся просто копировать логины и хеши из базы Joomla в ту базу.
очень мудрое решение...!
...
Но я не смог найти (или не хотел), (хотя я искал) этот механизм в Joomla.
Записан
SDKiller
Dev Team
******

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

Сообщений: 2667


...но войти в неё ты должен сам


« Ответ #12 : Сегодня в 15:01:54 »

plugins\authentication\joomla\joomla.php
libraries\joomla\user\helper.php
Записан
Fedor Vlasenko
Практически профи
*******

Репутация: +368/-4
Online Online

Пол: Мужской
Сообщений: 2531


Ctrl + U - иногда помогает


« Ответ #13 : Сегодня в 15:38:32 »

Копируете данный код в файл register.php файл записываете в корень сайта. (Тестовое решение, проблемы с безопасностью)
Теперь, чтобы пользователь был авторизован, достаточно вызвать ваш домен/register.php?userid=837 где 837 ид авторизованного пользователя
Показать текстовый блок
Записан
SDKiller
Dev Team
******

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

Сообщений: 2667


...но войти в неё ты должен сам


« Ответ #14 : Сегодня в 16:06:29 »

Теперь, чтобы пользователь был авторизован, достаточно вызвать ваш домен/register.php?userid=837 где 837 ид авторизованного пользователя

1) у ТС на субдомене не Joomla
2) а если бы была - таким образом любой посторонний или бот может подбирать id и авторизовываться

Если уж делать синхронизацию "залогиненного" состояния - то при авторизации и не http запросами, а работая непосредственно с базой.
Записан
Fedor Vlasenko
Практически профи
*******

Репутация: +368/-4
Online Online

Пол: Мужской
Сообщений: 2531


Ctrl + U - иногда помогает


« Ответ #15 : Сегодня в 16:26:45 »

При регистрации нового пользователя на Joomla, мне необходимо, чтобы этот пользователь смог зайти в свой аккаунт в скрипте рассылок под этими же самыми логином и паролем.
Т. есть я как понимаю регистрация на субдомене произведена. Тогда почему к регистрации на субдомене не прикрепить автоматическую регистрацию пользователя Joomla в основном домене
2)Тестовое решение, проблемы с безопасностью
Записан
SDKiller
Dev Team
******

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

Сообщений: 2667


...но войти в неё ты должен сам


« Ответ #16 : Сегодня в 16:29:17 »

Изначально же в условии - первичная регистрация на основном домене где Joomla
Параллельно - синхронизация базы пользователей субдомена, где самописное что-то.
Записан
Fedor Vlasenko
Практически профи
*******

Репутация: +368/-4
Online Online

Пол: Мужской
Сообщений: 2531


Ctrl + U - иногда помогает


« Ответ #17 : Сегодня в 16:38:42 »

Ух тогда так.
Пишем плагин регистрации. При регистрации:
1. получаем e-mail зарегистрированного
2. Делаем запрос на субдомен с выборкой логина пароля
3. Записываем юзера
Записан
rafaello9
Осваиваюсь на форуме
***

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

Сообщений: 139



« Ответ #18 : Сегодня в 17:10:02 »

Fedor Vlasenko
Цитировать
Ух тогда так.
Пишем плагин регистрации. При регистрации:
1. получаем e-mail зарегистрированного
2. Делаем запрос на субдомен с выборкой логина пароля
3. Записываем юзера
Большое спасибо, конечно, за помощь, но, действительно, здесь задачка немного другая.
На поддомене установлен совершенно другой скрипт (не joomla), но основоном домене стоит Joomla.
Мои клиенты регистрируются на основном сайте (joomla) и после этого, могут войти в аккаунт того - другого скрипта, под тем же логином и паролем.

Г-н SDKiller все правильно понял.

Только вот дело за малым осталось. Не ложиться спать, пока не допилю плагин user/joomla
Записан
Fedor Vlasenko
Практически профи
*******

Репутация: +368/-4
Online Online

Пол: Мужской
Сообщений: 2531


Ctrl + U - иногда помогает


« Ответ #19 : Сегодня в 17:14:18 »

Цитировать
могут войти в аккаунт того - другого скрипта
вот откуда там данные(логин и пароль) в другом скрипте?
Записан
rafaello9
Осваиваюсь на форуме
***

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

Сообщений: 139



« Ответ #20 : Сегодня в 17:21:56 »

логин вытаскивается из базы #__users и вставляется в базу того - другого скрипта.
Вот с паролем здесь посложней.
Хеш, сохраненный в базе #__users обратно расшифровать - большая проблема, поэтому мне необходимо, где-то перехватить этот пароль, пока он не превратился в хэш, переопределить переменную и выполнить вставку этого пароля в базу того скрипта (другого).
Записан
Fedor Vlasenko
Практически профи
*******

Репутация: +368/-4
Online Online

Пол: Мужской
Сообщений: 2531


Ctrl + U - иногда помогает


« Ответ #21 : Сегодня в 17:30:35 »

пишите плагин группы user обрабатывайте событие
public function onUserAfterSave($user, $isnew, $success, $msg){}
в $user будет ваш пароль не зашифрованный
« Последнее редактирование: Сегодня в 17:34:22 от Fedor Vlasenko » Записан
rafaello9
Осваиваюсь на форуме
***

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

Сообщений: 139



« Ответ #22 : Сегодня в 17:34:53 »

Я никогда в жизни не писал плагинов........
Но... видимо, когда то надо начинать пробовать.
Записан
Fedor Vlasenko
Практически профи
*******

Репутация: +368/-4
Online Online

Пол: Мужской
Сообщений: 2531


Ctrl + U - иногда помогает


« Ответ #23 : Сегодня в 17:37:04 »

Все учатся http://jdevtools.com/
Записан
rafaello9
Осваиваюсь на форуме
***

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

Сообщений: 139



« Ответ #24 : Сегодня в 17:42:12 »

Простыми словами, на существующем плагине внутри функции onUserAfterSave
есть то, что мне нужно?
Записан
Fedor Vlasenko
Практически профи
*******

Репутация: +368/-4
Online Online

Пол: Мужской
Сообщений: 2531


Ctrl + U - иногда помогает


« Ответ #25 : Сегодня в 17:44:40 »

вставьте там строку и зарегистрируйтесь
var_dump($user); //или
die (var_dump($user));
« Последнее редактирование: Сегодня в 17:51:39 от Fedor Vlasenko » Записан
rafaello9
Осваиваюсь на форуме
***

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

Сообщений: 139



« Ответ #26 : Сегодня в 17:48:30 »

я попозже отвечу.... дела возникли
Записан
rafaello9
Осваиваюсь на форуме
***

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

Сообщений: 139



« Ответ #27 : Сегодня в 21:51:56 »

Fedor Vlasenko !
Спасибо за реальную помощь!
Все-таки я поймал мышку за хвост.
А мышка пряталась в
[password_clear] =>
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.18 | 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