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) для добавления в статический файл.
выполните следующие действия, чтобы добавить этот заголовок в статический файл:
- Нажмите кнопку Пуск, выберите Выполнить и введите inetmgr.
- на левой навигационной странице щелкните соответствующий файл или каталог на вашем веб-сайте, к которому вы хотите добавить заголовок, щелкните файл правой кнопкой мыши и выберите Свойства.
- перейдите на вкладку заголовки HTTP.
- в группе пользовательские заголовки HTTP нажмите кнопку Добавить.
- введите 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);