Главная страница / Советы / Единая регистрация и авторизация на нескольких сайтах
апрель 18 2007

Единая регистрация и авторизация на нескольких сайтах

celsoft 18 апреля 2007 Советы 40 723
Дорогие друзья,

Сегодня хотелось бы рассказать вам об одном из нововведении версии 5.7, а именно о том что в скрипт добавлена поддержка единой регистрации и авторизации на ваших сайтах, которые могут находится на различных доменах и работать под управлением разных копий скрипта, но при этом вашим пользователям достаточно зарегистрироваться только на одном из ваших сайтах и в дальнейшем использовать свой логин и пароль на других ваших сайтах. Единственным условием для реализации данной возможности является то, что все домены должны иметь доступ к одной и той же MySQL базе данных, в пределах одного хостера это не проблема, если хостеры разные, то MySQL сервер должен разрешать внешние подключения.

Внимание: несмотря на то что скрипт поддерживает работу с несколькими проектами, это не меняет условий лицензирования и одна лицензия выдается на один домен второго уровня, и для другого домена вам понадобится еще одна лицензия.

Итак рассмотрим более подробно как вам реализовать и использовать данную возможность:

Нам необходимо установить скрипт на основной домен, допустим http://site.ru/. Для этого делаем все как обычно, закачиваем файлы скрипта на сервер и запускаем мастер установки скрипта install.php. После того как скрипт проведет тестирование вам необходимо будет заполнить данные для доступа к MySQL серверу.

Например:

Сервер MySQL: localhost
Имя базы данных: datalife
Имя пользователя: root
Пароль: password

Эти данные вам предоставляет ваш хостер.

Следующим параметром идет Префикс, этот параметр вы можете определить и указать самостоятельно, мы например укажем: site

После того как мы успешно установили скрипт на один домен, нам необходимо установить скрипт на другой возмем для примера http://games.site.ru/. Делаем все по аналогии и данные для доступа к MySQL серверу указываем теже самые что и для первого сайта:

Сервер MySQL: localhost
Имя базы данных: datalife
Имя пользователя: root
Пароль: password

Единственным отличием является это параметр Префикс, который мы укажем другой, например укажем: games.

Итак мы получили два самостоятельных сайта http://site.ru/ и http://games.site.ru/, которые работают отдельно и между собой не связаны. Поэтому следующей нашей задачей является объединить авторизацию и регистрацию на этих сайтах. Для этого мы заходим по FTP на наш второй сайт http://games.site.ru/ и открываем файл engine/data/dbconfig.php, находим там строчку:

define ("USERPREFIX", "games");

и заменяем ее на

define ("USERPREFIX", "site");

Другими словами мы поставили для параметра USERPREFIX префикс от первого сайта. После этих действий ваш второй сайт будет использовать базу данных для пользователей и групп пользователей от первого сайта, а для всего остального будет использовать собственную отдельную базу данных.

Внимание: Некоторые продвинутые пользователи после этих действий решат удалить неиспользуемые в дальнейшем MySQL таблицы, но мы предостерегаем вас от этих действий, маленькие и неиспользуемые таблицы не будут вам мешать, но так как вам придется обновлять в дальнейшем каждый отдельно, то во избежания конфликтов вам нужно оставить эти таблицы, т.к. они также будут проходить процедуру обновления структуры.

Ну вот в принципе и все, как видите все достаточно просто.

Удачи вам и всего наилучшего.

Комментарии

  1. celsoft (Администраторы)

    22 октября 2010 12:53 3 370 комментариев
    Цитата: saigontov
    Скажите плз. Если у меня есть site.ru и я к нему привязываю games.site.ru, то на каком из них будет производиться регистрация? только на site.ru? или пользователю будет безразницы где региться?

    какой адрес поставите в форме в шаблоне login.tpl там и будет производится
  2. ilya.batrak (Посетители)

    13 января 2011 11:12 7 комментариев
    Приветствую!
    Спасибо за решение, но возник вопрос.

    Если на домене пользователь принадлежит к группе id=4, а на поддомене я хочу создать отдельную группу с id=6 и расширенными правами, по сравнению с той, что на домене (например, возможность публикаций нововтей будет открыта), да и названия групп стандартных отличаются, то как в этом случае всё будет работать? Раздельны ли права и принадлежности к группам в таком случае? Спасибо.

    Другими словами, если на домене пользователь не может ничего публиковать, то разрешение на публикацию на субдомене для группы - не откроет такой возможности на домене.
  3. celsoft (Администраторы)

    13 января 2011 12:51 3 370 комментариев
    ilya.batrak,
    Группы и их настройки, будут едины для всех сайтов, как и едины сами пользователи.
  4. ilya.batrak (Посетители)

    4 марта 2011 12:55 7 комментариев
    Пользователи-то едины и группы тоже, но название групп и и их права для каждого сайта отдельно smile И это радует
  5. ilya.batrak (Посетители)

    6 апреля 2011 10:09 7 комментариев
    Не долго я радовался. На рабочих сайтах произошёл конфуз и на поддомене присвоились права групп домена... :( пришлось выставить одинаковые права везде. Но сначала всё работало гуд и раздельно.
  6. Investor (Посетители)

    9 мая 2011 12:14 1 комментарий
    А как с аватаром, почему то некто не задал такой вопрос?
    Аватар везде разный, да и хорошо бы сделать ссылку на просмотр сайта на основной... всмысле везде в сплывающих и выпадающих окнах
  7. chontash (Посетители)

    13 августа 2012 01:07 3 комментария
    Вопрос: Если домен и поддомен подключены к одной базе, как будет выводиться ТОП???

    Например: я хочу на поддомене music.site.ru выводить выводить ТОП музыки, а на movies.site.ru ТОП фильмов. А на основном домене выводить ТОПЫ поддоменов (или категорий).

    И еще, ожидается ли реализация вывода topnews по категориям? Topnews просматриваемой категории не решает проблемы. Есть хак Alter top news, но он ужасно корявый.
    Очень надо...
  8. celsoft (Администраторы)

    13 августа 2012 11:17 3 370 комментариев
    chontash,
    Важно не сколько БД, важно к каким таблицам подключен скрипт, т.е. префикс, если префикс един на обоих сайтах, то и топ будет един.
  9. chontash (Посетители)

    13 августа 2012 13:10 3 комментария
    celsoft,
    Важно не сколько БД, важно к каким таблицам подключен скрипт, т.е. префикс, если префикс един на обоих сайтах, то и топ будет един.

    Это понятно, ожидается ли реализация вывода topnews по категориям? Topnews просматриваемой категории не решает проблемы. Есть хак Alter top news, но он ужасно корявый.

    я хочу на поддомене music.site.ru выводить выводить ТОП музыки, а на movies.site.ru ТОП фильмов. А на основном домене выводить ТОПЫ поддоменов (или категорий).

    Как подобное реализовать???
  10. celsoft (Администраторы)

    13 августа 2012 14:10 3 370 комментариев
    Цитата: chontash
    Это понятно, ожидается ли реализация вывода topnews по категориям?

    нет не ожидается.

    Цитата: chontash
    Как подобное реализовать???

    Тех. поддержка не пишет модификаций скрипта на заказ.
  11. deminrd (Посетители)

    28 апреля 2013 21:31 3 комментария
    не работает у меня у меня ошибка вылетает
    MySQL error in file: /engine/modules/sitelogin.php at line 131
    Error Number: 1146
    The Error returned was:
    Table '****************' doesn't exist
    SQL query:

    SELECT * FROM ***** WHERE user_id='1'




    у меня 3 базы

    1 site.ru
    Сервер MySQL: localhost
    Имя базы данных: datalife1
    Имя пользователя: root1
    Пароль: password1

    2 online.site.ru
    Сервер MySQL: localhost
    Имя базы данных: datalife2
    Имя пользователя: root1
    Пароль: password1

    2 online.site.ru
    Сервер MySQL: localhost
    Имя базы данных: datalife2
    Имя пользователя: root1
    Пароль: password1

    3 games.site.ru
    Сервер MySQL: localhost
    Имя базы данных: datalife3
    Имя пользователя: root1
    Пароль: password1
  12. celsoft (Администраторы)

    28 апреля 2013 22:20 3 370 комментариев
    Цитата: deminrd
    Table '****************' doesn't exist

    Ошибка означает что таблица которая у вас под звездочками отсутствует. Прочитайте внимательно статью, вы должны при установке использовать одну и туже базу данных, а не создавать под свои сайты разные базы данных. А у вас в одном случае:
    Имя базы данных: datalife2

    а в другом
    Имя базы данных: datalife3

    Отличаться должен только префикс таблиц при установке, а не базы данных.
  13. arkiller (Посетители)

    23 сентября 2013 10:28 1 комментарий
    У меня все работает, именно то что искал, единственное уточнение:
    Можно ли сделать так, чтобы новости со всех субдоменов отображались на главном сайте.
    Я сделал все как тут описано получилось что на site.ru свои новости, на subdomen1.site.ru свои и на subdomen2.site.ru третьи. Можно ли сделать так чтобы site.ru собирал новости с subdomen1 и subdomen2?
    Заранее спасибо.
  14. celsoft (Администраторы)

    23 сентября 2013 11:15 3 370 комментариев
    Цитата: arkiller
    У меня все работает, именно то что искал, единственное уточнение:
    Можно ли сделать так, чтобы новости со всех субдоменов отображались на главном сайте.
    Я сделал все как тут описано получилось что на site.ru свои новости, на subdomen1.site.ru свои и на subdomen2.site.ru третьи. Можно ли сделать так чтобы site.ru собирал новости с subdomen1 и subdomen2?
    Заранее спасибо.

    Можно. Получайте и выводите новости через RSS информеры.
  15. Pira (Посетители)

    15 февраля 2014 22:02 1 комментарий
    Здравствуйте. Сайт ни с того, ни с сего стал выдавать такую вот ошибку
    MySQL error in file: /engine/modules/topnews.php at line 37
    Error Number: 1
    The Error returned was:
    Can't create/write to file '/mysqltmp/#sql_29f7_0.MYI' (Errcode: 13)
    SQL query:

    SELECT p.id, p.date, p.short_story, p.xfields, p.title, p.category, p.alt_name FROM dle10__post p LEFT JOIN dle10__post_extras e ON (p.id=e.news_id) WHERE p.approve=1 AND p.date >= '2014-02-16 00:49:00' - INTERVAL 1 MONTH AND p.date < '2014-02-16 00:49:00' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,7

    подскажите пожалуйста, как исправить и в чем может быть причина?
  16. celsoft (Администраторы)

    16 февраля 2014 08:40 3 370 комментариев
    Цитата: Pira
    подскажите пожалуйста, как исправить и в чем может быть причина?

    Вам ответили в вашей теме на форуме.
  17. samo733792 (Посетители)

    21 марта 2014 12:24 5 комментариев
    Без разницы.
  18. kira_vo (Посетители)

    22 декабря 2015 11:44 6 комментариев
    подскажите пожалуйста, будет ли работать этот приём, если на сайте1 и на сайте2 стоят разные версии движка (10.5 и 10.06 например) или эти версии в разных кодировках?
  19. celsoft (Администраторы)

    23 декабря 2015 08:18 3 370 комментариев
    Цитата: kira_vo
    подскажите пожалуйста, будет ли работать этот приём, если на сайте1 и на сайте2 стоят разные версии движка (10.5 и 10.06 например) или эти версии в разных кодировках?

    Нет, так делать нельзя. И кодировка сайтов, и версии скрипта должны быть обязательно одинаковые.
  20. kira_vo (Посетители)

    5 февраля 2016 22:27 6 комментариев
    Подскажите пожалуйста:
    На втором сайте не открываются профили пользователей.
    Авторизация работает на обоих, в админках всех видно, но при клике на ссылку на профиль со второго сайта выдаёт это:
    Parse error: syntax error, unexpected T_FUNCTION in /<*личное**>/engine/modules/profile.php on line 444
  21. kira_vo (Посетители)

    5 февраля 2016 23:14 6 комментариев
    Ещё вопрос:
    Как разделить пользователей сайтов, объединённых этим способом?
    Базой пользователей второго сайта можно пожертвовать.
    Достаточно ли вернуть юзерпрефикс? Что будет с администратором? Как его (админа) восстановить?
  22. celsoft (Администраторы)

    6 февраля 2016 13:58 3 370 комментариев
    Цитата: kira_vo
    Подскажите пожалуйста:
    На втором сайте не открываются профили пользователей.
    Авторизация работает на обоих, в админках всех видно, но при клике на ссылку на профиль со второго сайта выдаёт это:
    Parse error: syntax error, unexpected T_FUNCTION in /<*личное**>/engine/modules/profile.php on line 444

    Версия PHP на вашем сервере не соответствует минимально требуемой. Для работы DLE актуальной версии нужно наличие PHP 5.3.x. и выше.

    Цитата: kira_vo
    Ещё вопрос:
    Как разделить пользователей сайтов, объединённых этим способом?
    Базой пользователей второго сайта можно пожертвовать.
    Достаточно ли вернуть юзерпрефикс? Что будет с администратором? Как его (админа) восстановить?

    Они не могут быть разделены, т.к. двух баз пользователей в данном случае не существует. Используется одна база данных. Если вы вернете префикс, то база пользователей второго сайта вернется к состоянию которое было на момент первоначального изменения этого префикса, т.е. как правило один админ, которого вы создавали при установке второго сайта.
  23. kira_vo (Посетители)

    7 февраля 2016 16:52 6 комментариев
    Цитата: celsoft
    Цитата: kira_vo
    Подскажите пожалуйста:
    На втором сайте не открываются профили пользователей.
    Авторизация работает на обоих, в админках всех видно, но при клике на ссылку на профиль со второго сайта выдаёт это:
    Parse error: syntax error, unexpected T_FUNCTION in /<*личное**>/engine/modules/profile.php on line 444

    Версия PHP на вашем сервере не соответствует минимально требуемой. Для работы DLE актуальной версии нужно наличие PHP 5.3.x. и выше.

    Оба сайта находятся на одном хостинге и одном сервере. Однако ошибка выдаётся только на одном. В чём может быть дело?
    Да, ошибка на свежем сайте, лицензионный ключ ещё не зарегистрирован, может быть в этом дело?
  24. celsoft (Администраторы)

    8 февраля 2016 06:06 3 370 комментариев
    Цитата: kira_vo
    Оба сайта находятся на одном хостинге и одном сервере. Однако ошибка выдаётся только на одном. В чём может быть дело?
    Да, ошибка на свежем сайте, лицензионный ключ ещё не зарегистрирован, может быть в этом дело?

    Никакие активации лицензии, и вообще лицензионные вопросы к вашей проблеме отношения не имеют. Причина вашей проблемы только одна и я ее указал выше. А именно несоответствие версии PHP вашей версии DLE. Для DLE 10.6 необходимо наличие PHP 5.3 и выше https://dle-news.ru/request.html

    В пределах одного сервера и одного хостинга могут быть несколько различных версий PHP, зачастую хостинги дают возможность персонально назначить каждому сайту свою версию PHP в панели управления хостингом. Какая у вас версия PHP установлена на данном сайте вы можете увидеть в админпанели DLE на главной, во вкладке "Автопроверка системы". Как изменить версию PHP вам нужно узнать уже в службе поддержки вашего хостинга.
  25. kira_vo (Посетители)

    8 февраля 2016 07:40 6 комментариев
    celsoft,
    спасибо большое за развёрнутый ответ!
  26. kira_vo (Посетители)

    9 февраля 2016 08:48 6 комментариев
    Разобралась! моя ошибка. PHP одинаковые, а вот версии DLE разные - 10.5 и 10.6
    Глюк был действительно из-за PHP.
    Если кому интересно - Интеграция базы пользователей работает на разных версиях.
  27. celsoft (Администраторы)

    9 февраля 2016 11:34 3 370 комментариев
    Цитата: kira_vo
    Если кому интересно - Интеграция базы пользователей работает на разных версиях.

    Это ваша большая ошибка. Версии скрипта должны быть одинаковы, и если вы не видите проблем на первый взгляд, то это не значит, что они не могут проявится в любой момент. Разные версии содержат разную функциональность и разную структуру БД.
  28. Dimon966 (Клиенты)

    10 ноября 2016 01:06 4 комментария
    Здравствуйте!
    У меня возникла проблема с аватарами.

    На поддомене у пользователей, авторизованных через соц. сеть указывается неправильный адрес на аватар

    Хотя для зарегистрированных показывается правильный адрес

    http://talks.yabkupila.com/user/dimon966/

    Та же ситуация и в админке http://yabkupila.com/uploads/posts/2016-11/1478736451_2356763.png
  29. celsoft (Администраторы)

    10 ноября 2016 11:55 3 370 комментариев
    Dimon966,

    При использовании авторизации через соц. сети, не сохраняется в базе данных домен того куда загружен был аватар. Данная проблема будет исправлена в следующей версии скрипта.
  30. AntiPlagiat (Посетители)

    14 января 2018 23:49 5 комментариев
    Здравствуйте!

    В описании речь идет о доменах, а по сути описываются поддомены.
    Я сделал все как описано на одном vps, одном ip но на разных доменах (.ru и .com), т.е. именно на доменах. Регистрация и авторизация едины, круто!
    Но.
    Как сделать так, чтобы авторизовавшись на .ru сайте и перейдя на .com сайт, быть авторизованным и на .com?
    Сейчас это не работает на 12.0 версии, приходится и там и там авторизовываться отдельно, если включено подтверждение по email то вообще не удобно. Еще и конфликт возникает, на одном домене авторизовываешься, на втором наоборот...
    Было бы очень здорово уметь авторизовываться сразу на всех доменах и поддоменах, очень удобно!

    Спасибо!

Информация

Комментирование публикаций доступно только пользователям имеющим действующую лицензию на скрипт. Если вы уже приобретали скрипт, то вам необходимо зайти на сайт под своим клиентским аккаунтом.

Календарь

«    Июль 2020    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031 

Опрос на сайте

Совершаете ли вы покупки в интернет?