кроссдоменная авторизация
В общем есть у меня два сайта, которые лежат на одном сервере и используют одну базу данных. При этом они имеют разные домены - один домен первого уровня а второй субдомен другого домена первого уровня.
Пытаюсь сделать чтобы пользователь при логине на одном из сайтов имел логин на другом сайте.. Пока этих сайтов 2, но потом их будет больше...
Из того что я прочитал, понял что надо каким-то образом перепрописать куки с одного домена на другой, хотя может и нет.. В общем в голове полная каша.
Как это сделать?
Забыл добавить что сайты все на одном движке - Social Engine и OpenId не подходит.
Только через GET запрос. Параметры куков передавать в ифрейме.
В двух словах - сделай общую БД для обоих сайтов, где будешь хранить данные авторизованных юзеров (ticket'ы, например). При логине на одном из сайтов можешь попробовать поставить куки не только для того сайта, где вошли, а и для другого с помощью $domain: setcookie('ticket', '...', 0, '/', '.other.site.ru');
Если с куки не прокатит, можешь просто делать запись в БД об IP клиента и другой его инфе (чем больше, тем лучше), а при входе на другом домене проверять, совпадает ли инфа о клиенте с этого IP с инфой о том же IP в базе. Если да - юзер вошёл.
Собственно, RussianSpy идеальный вариант предложил. Нужно на втором сайте страничку для подцепления кук из get-запроса сделать и вызывать ее с первого сайта во время авторизации на нем с помошью Iframe/AJAX.
Так что такая штука, как $domain: setcookie('ticket', '...', 0, '/', '.other.site.ru'); вряд ли прокатит, хотя надо попробовать:) А что имеется в данном случае под $domain? Сюда надо занести значение текущего домена, с которого я хочу передать куки .other.site.ru?
А вообще, я ж говорю что у этих сайтов и так уже одна БД. И в бд есть таблица, в которой храняться данные об авторизации, например ключ сессии.
Цитата:
Только через GET запрос. Параметры куков передавать в ифрейме.
так а что куда передавать? можно поподробней?)
Цитата: Shiizoo
Сам не знаю, можно ли куки ставить на домен отличный от того, на котором сидишь, но выглядит это как дырка для затирания кук других сайтов. Чисто зловредительская. =)
ну да...дырки не нужны) тут пользователей >65000 )
Цитата: Neonion
ну да...дырки не нужны) тут пользователей >65000 )
Я просто о том, что это, скорее всего, невозможно. Что хорошо. =) Перечитайте выше, я немного детализировал предложение RussianSpy.
Сделать скрытый iFrame на сайте№2, который будет подключать в себя какой-нибудь coockies.js или coockies.php, который находится на сайте№1. При этом в этом скрипте вытягиваются куки и посылаются get-запросом на сайт№2, где я с ними что-то делаю..так?
сори, если чего не так понимаю, работы много))
Никаких изменений на втором сайте, кроме добавления этого скрипта не делается. А в первом сайте в страничку успешной авторизации добавляется JavaScript код, выполняющий get-запрос со вставленными на основе необходимых кук параметрами.
в общем буду сегодня пробовать)
Все верно. Shiizoo абсолютно правильно развил мою мысль. Спасибо.
Попробовал setcookie() с другим доменом - действительно не работает. Чего и следовало ожидать :)