Как объеденить два сайта

InstantCMS 2.X

Одни куки для двух доменов

#1 24 декабря 2019 в 17:53
Приветствую форумчан!
Средствами из "коробочки", можно объединить сайт и поддомен общими пользователями и куками. Когда пробовал добавить другой домен пропадала авторизация. В интернете нашел такой метод
Одни куки для двух доменов (костыль), такой код:

if (!isset($_COOKIE["drd"])) {
if (isset($_GET['drd'])) {
setcookie("drd", $_GET['drd'], time() + 2592000, "/");
header('Location: site2.ru/');
exit;
}
setcookie("drd", "site1.ru", time() + 2592000, "/");
header('Location: site2.ru/?drd=site1.ru');
exit;
} else {
$drd = $_COOKIE["drd"];
if ($drd != "site1.ru") {
header('Location: site2.ru/');
}
}

На втором домене размещаем аналогичный код, только заменяем site1 на site2 и обратно.
Вуаля, у пользователя всегда открывается сайт, к которому он обратился первым.

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

if (isset($_GET['reset'])) {
if ($_GET['reset'] == 1) {
setcookie("drd", "", -1, "/");
header('Location: site2.ru/?reset=2');
exit;
}else{
setcookie("drd", "", -1, "/");
header('Location: site2.ru/');
exit;
}
} else {

if (!isset($_COOKIE["drd"])) {
if (isset($_GET['drd'])) {
setcookie("drd", $_GET['drd'], time() + 2592000, "/");
header('Location: site2.ru/');
exit;
}
setcookie("drd", "site1.ru", time() + 2592000, "/");
header('Location: site2.ru/?drd=site1.ru');
exit;
} else {
$drd = $_COOKIE["drd"];
if ($drd != "site1.ru") {
header('Location: site2.ru/');
}
}
}

А теперь недостатки:

Параметры берутся напрямую из GET запроса и записываются в куки. Но сделать данный код более безопасным большого труда не составит.
Так же куки несложно подделать. Но если кто-то заморочится по этому поводу, пускай уже посмотрит на второй сайт, заслужил.
Хорошо бы это всё сделать методами класса или хотя бы функциями.
При сбое, во время перенаправления, возможно некорректная работа или зацикливание.

Если кто-то знаком с лучшими способами справиться с подобными задачами, буду рад услышать их в комментариях. Так же буду рад здравой кода, который был приведён выше.
Есть ли такое решение для InstantCMS 2...? Или можно ли этот способ объединения применить к движку?
Вопрос — куда вставлять этот код чтобы заработало!
#2 24 декабря 2019 в 18:29


Приветствую форумчан!
Средствами из "коробочки", можно объединить сайт и поддомен общими пользователями и куками. Когда пробовал добавить другой домен пропадала авторизация. В интернете нашел такой метод

Одни куки для двух доменов (костыль), такой код:

Антон Круппо

Вы основной сайт хотите объединить с сайтами на субдоменах? Или как?
#3 24 декабря 2019 в 19:19


Вы основной сайт хотите объединить с сайтами на субдоменах? Или как?

Scythian

Надо объединить два разных домена, у которых общие пользователи на InstantCMS 2…
#4 24 декабря 2019 в 19:28

Надо объединить

Антон Круппо
Здравствуйте. Все есть в документации.

Также, если вы планируете использовать общую базу пользователей с другим сайтом на InstantCMS 2, нужно изменить путь и URL папки для загрузок. Они должны указывать на папку для загрузок первого (созданного ранее) сайта. Это необходимо для того, чтобы изображения и файлы загружаемые пользователями имели одинаковые пути на обоих сайтах.

Например, первый сайт расположен по адресу site1 и лежит в папке /var/www/site1. Текущий устанавливаемый сайт располагается по адресу site2 и лежит в /var/www/site2. Тогда необходимо указать следующие пути:

Папка для загрузок: /../site1/upload/
URL для загрузок: site1/upload
То есть указываем путь папки для загрузок первого сайта относительно текущего пути. URL для загрузок так же указываем от первого сайта.
#5 24 декабря 2019 в 19:29



Вы основной сайт хотите объединить с сайтами на субдоменах? Или как?

Scythian

Надо объединить два разных домена, у которых общие пользователи на InstantCMS 2...

Антон Круппо

Вы хотите объединить уже рабочие сайты, или вы еще можете какой либо из них установить с нуля?..
#6 24 декабря 2019 в 19:51
Я делал авторизацию по API.
То есть если человек никогда не авторизовывался на подключенном сайте — запрашивается его профиль из базы основного сайта и регистрируется на подключенном. Аватару тоже подгружает.
Про общие куки не знаю, что сказать…
#7 24 декабря 2019 в 19:58


Вы хотите объединить уже рабочие сайты, или вы еще можете какой либо из них установить с нуля?.

Scythian
Жду выхода новой версии и готовлюсь ставить оба сайта с нуля.
А по поводу инструкции, — так делал, пользователи становятся общие и папка загрузок общая.
Но приходится авторизовываться на обоих сайтах. Сначала на одном, потом на другом.
Если сайт объединён с поддоменом, то в таком случае все нормально. Заходишь на первый сайт, а на втором уже авторизован.
#8 24 декабря 2019 в 20:01


Я делал авторизацию по API.

Ris

Есть краткое руководство, как подключать по API.
Если не жалко, поделитесь!
#9 24 декабря 2019 в 20:31

Если не жалко, поделитесь!

Антон Круппо
Не жалко. Но работает только с версией с гитхаба (2.12.3).
Найду — причешу — выложу.
#10 24 декабря 2019 в 20:48
Антон Круппо, придется ждать решение от Ris.
#11 24 декабря 2019 в 20:50


Придется ждать решение от Ris.

Scythian
Буду ждать! Спасибо всем за помощь и участие!
#12 11 июля 2021 в 13:46

Если не жалко, поделитесь!

Антон Круппо
Не жалко. Но работает только с версией с гитхаба (2.12.3).
Найду — причешу — выложу.
Ris

Причесали? Поди забыли?

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.