В любом случае я могу поделиться информацией в пределах 2 доменов различий? - PullRequest
1 голос
/ 10 августа 2009

Кто-нибудь знает, есть ли какой-нибудь способ, которым я могу поделиться информацией (это может быть cookie, сессия, переменная ...) в двух разных доменах, но на одном сервере?

Пример:

У меня есть 2 домена на одном сервере, один называется exmaple.com.au, а другой - friendly.com.au. Есть ли способ, которым я могу поделиться переменной для обоих доменов? (скажем, $ valiable = 'exampleLogin')

Ответы [ 7 ]

2 голосов
/ 10 августа 2009

Не с файлами cookie или сессиями (насколько я понимаю).

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

В качестве альтернативы вы можете посмотреть cURL .

0 голосов
/ 10 августа 2009

Как уже говорили другие, вы не можете использовать cookie (что также означает отсутствие сеанса) для обмена информацией между разными доменами из-за Одинаковой политики происхождения , реализованной в веб-браузерах.

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

Проблема, с которой вы столкнетесь, заключается в том, чтобы «прикрепить» эту информацию к пользователю на обоих сайтах; вам может понадобиться способ создать cookie на обоих сайтах, когда пользователь входит в систему; Прозрачный GIF 1x1 или iframe 1x1 - это способ сделать это: просто передайте токен, содержащий информацию, необходимую второму сайту для создания своего cookie.


Если вы хотите, чтобы пользователь идентифицировался на двух (или более) веб-сайтах без необходимости повторной регистрации, вас может заинтересовать то, что называется Единая регистрация .

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

Вас также может заинтересовать что-то вроде OpenID , которое используется здесь на SO; -)

0 голосов
/ 10 августа 2009

Обычно это решается с помощью прозрачного GIF.

Например, на site1.com добавьте изображение:

<img src="http://site2.com/mybug.php?segment1=data1&segment2=data2" height="0" width="0">

Затем Site2 устанавливает файл cookie (в mybug.php), который он будет читать при последующих обращениях к Site2 на основе пар имя / значение в строке запроса, и возвращает прозрачный gif в теле ответа http.

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

Предостережение заключается в том, что вы не можете просто доверять этим данным на своем сервере, если они вообще чувствительны; другими словами, вы не хотите использовать это для передачи имен пользователей, паролей и т.п. Если вы хотите отправить конфиденциальные данные, вам нужно будет использовать общий секрет и использовать достаточно безопасный механизм шифрования и шифровать как минимум значения.

0 голосов
/ 10 августа 2009
0 голосов
/ 10 августа 2009

Вы можете либо $_POST, либо $_GET из одного домена в другой, либо читать и записывать из файловой системы или общей базы данных.

0 голосов
/ 10 августа 2009

Это довольно широкий вопрос.

Cookie / Session - в действительности это одно и то же, вы не можете делиться ими между доменами (это ограничение браузера)

Переменные - я даже не знаю, что вы имели бы в виду под «общими переменными». Вы не можете сделать это между php-скриптами вообще («Архитектура без общего доступа»)

Распространенным способом было бы сохранить данные в базе данных (возможно, в файле, находящемся на том же сервере) с одного сайта, а затем вы можете прочитать их с любого сайта.

0 голосов
/ 10 августа 2009

Браузеры придерживаются политики «того же происхождения» для файлов cookie, поэтому установка файла cookie с одного сайта не может повлиять на другой. Физический сервер в данном случае не имеет значения.

Вы можете использовать один сайт для входа в систему и обмениваться данными через POST или GET, но вам все равно придется поддерживать два отдельных файла cookie. Если оба сайта имеют доступ к одной и той же базе данных, вероятно, лучше использовать отдельные формы входа для обоих, но разместите уведомление под названием «Вы можете использовать свой логин с sitex.com, если вы уже зарегистрированы!»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...