PHP Multi site login

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

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

Так в основном, когда пользователь входит в систему example.com файл cookie создается с идентификатором сеанса, данные сеанса хранятся в базе данных. Как только это будет сделано файл cookie должен быть создан на всех других доменах с этим уникальным идентификатором сеанса, чтобы при перемещении пользователя с сайта на сайт он автоматически регистрировался.

теперь я нашел способ сделать это в Firefox (используя теги изображений, которые выполняют PHP-скрипты в других доменах, по существу создавая разные куки в разных доменах), но этот метод не работает в IE (не протестировал Opera или Safari и т. д. еще.)

есть ли у кого-нибудь идеи о том, как я могу заставить это работать в IE?

5 ответов


взгляните на мой вопрос Отслеживание Пользователей Через Домен.

Что вам нужно сделать, это добавить еще один HTTP-заголовок в "изображение".

цитата переменные сеанса теряются, если вы используете FRAMESET в Internet Explorer 6:

вы можете добавить компактную политику P3P заголовок к вашему дочернему контенту, и вы может объявить, что нет вредоносных действий выполняются с данными пользователь. Если Internet Explorer обнаруживает удовлетворительная политика, затем Интернет Проводник разрешает установку файла cookie.

простая компактная политика, которая выполняет этот критерий следующий:

СПЕЦИФИКАЦИЯ P3P: СР="СРП КАО НАШ"

этот пример кода показывает, что ваш сайт предоставляет вам доступ к вашим собственным контактная информация (CAO), что-либо анализируемые данные только "псевдо-анализ", что означает, что данные подключены к вашему online персона, а не ваше физическое тело идентичность (PSA), и что ваши данные не поставлено к любым внешним агенствам для тех агентств, чтобы использовать (наши).

вы можете установить этот заголовок, Если вы используете Ответ.Метод AddHeader в ASP страница. В ASP.NET можно использовать Ответ.Способ AppendHeader. Вы можете используйте управления IIS Оснастки (inetmgr) для добавления в статический файл.

выполните следующие действия, чтобы добавить этот заголовок в статический файл:

  1. Нажмите кнопку Пуск, выберите Выполнить и введите inetmgr.
  2. на левой навигационной странице щелкните соответствующий файл или каталог на вашем веб-сайте, к которому вы хотите добавить заголовок, щелкните файл правой кнопкой мыши и выберите Свойства.
  3. перейдите на вкладку заголовки HTTP.
  4. в группе пользовательские заголовки HTTP нажмите кнопку Добавить.
  5. введите P3P для имени заголовка, а затем для политики compact строку, введите CP=..., где." .." есть соответствующий код для вашего компакт-диска политика.

Не уверен, что это хорошее предложение на данный момент в вашем развитии, но вы обязательно должны его посмотреть единый вход Если вы хотите сделать это "правильный" путь.


Это только я, или это звучит как ваш CSRFing себя с вашей техникой, используя изображения, которые работают в Firefox?

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


Я не делал этого сам, но я думаю, что вы идете по правильному пути. Я бы, вероятно, сделал то же самое, за исключением того, что вместо изображения я бы использовал файл Javascript. Он будет создаваться на serverer стороны и обновит куки на стороне клиента.


возможно, я немного глуп, но не могли бы вы установить куки для каждого доменного имени при входе в систему? Таким образом, вместо того, чтобы иметь один файл cookie при входе на сайт A, у них есть пять или сколько у вас сайтов?

setcookie(A, $sessid, expire, path, domainA.com);
setcookie(B, $sessid, expire, path, domainB.com);
setcookie(C, $sessid, expire, path, domainC.com);
setcookie(D, $sessid, expire, path, domainD.com);