PHP Многоязычный сайт

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

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

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

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

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

Посмотрите на мой вопрос « Отслеживание пользователей домена» .

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

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

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

Ниже приведена простая компактная политика, которая соответствует этим критериям:

P3P: CP = "CAO PSA OUR"

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

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

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

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

Не уверен, что это хорошее предложение на данном этапе вашего развития, но вам обязательно нужно взглянуть на Single Sign-on, если вы хотите сделать это «правильным» способом.

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

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

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

Возможно, я немного глуп, но не могли ли вы установить cookie для каждого имени домена при входе в систему? Таким образом, вместо того, чтобы иметь один файл 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);