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

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

Дорогие друзья,

Сегодня хотелось бы рассказать вам об одном из нововведении версии 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 таблицы, но мы предостерегаем вас от этих действий, маленькие и неиспользуемые таблицы не будут вам мешать, но так как вам придется обновлять в дальнейшем каждый отдельно, то во избежания конфликтов вам нужно оставить эти таблицы, т.к. они также будут проходить процедуру обновления структуры.

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

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

Комментарии

celsoft

celsoft

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

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

ilya.batrak

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

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

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

celsoft

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

ilya.batrak

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

ilya.batrak

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

Investor

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

chontash

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

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

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

celsoft

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

chontash

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

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

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

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

celsoft

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

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

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

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

deminrd

28 апреля 2013 21:31 Посетители
0
не работает у меня у меня ошибка вылетает
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
celsoft

celsoft

28 апреля 2013 22:20 Администраторы
0
Цитата: deminrd
Table '****************' doesn't exist

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

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

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

arkiller

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

celsoft

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

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

Pira

15 февраля 2014 22:02 Посетители
0
Здравствуйте. Сайт ни с того, ни с сего стал выдавать такую вот ошибку
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

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

celsoft

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

Вам ответили в вашей теме на форуме.
samo733792

samo733792

21 марта 2014 12:24 Посетители
1
Без разницы.
kira_vo

kira_vo

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

celsoft

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

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

kira_vo

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

kira_vo

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

celsoft

6 февраля 2016 13:58 Администраторы
0
Цитата: 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
Ещё вопрос:
Как разделить пользователей сайтов, объединённых этим способом?
Базой пользователей второго сайта можно пожертвовать.
Достаточно ли вернуть юзерпрефикс? Что будет с администратором? Как его (админа) восстановить?

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

kira_vo

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

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

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

celsoft

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

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

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

kira_vo

8 февраля 2016 07:40 Посетители
0
celsoft,
спасибо большое за развёрнутый ответ!
kira_vo

kira_vo

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

celsoft

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

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

Dimon966

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

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

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

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

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

celsoft

10 ноября 2016 11:55 Администраторы
0
Dimon966,

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

AntiPlagiat

14 января 2018 23:49 Клиенты
1
Здравствуйте!

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

Спасибо!

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Календарь
«    Июнь 2019    »
ПнВтСрЧтПтСбВс
 12
3456789
10111213141516
17181920212223
24252627282930
Опрос на сайте
Совершаете ли вы покупки в интернет?

Популярные новости
Архив новостей
Май 2019 (3)
Апрель 2019 (1)
Март 2019 (3)
Февраль 2019 (2)
Январь 2019 (2)
Декабрь 2018 (1)