PHP передает данные сеанса между разными доменными именами - PullRequest
1 голос
/ 24 сентября 2010

У меня 2 доменных имени на одном сервере, но я хочу передать некоторые данные с помощью переменной сеанса, как это сделать?

Ответы [ 2 ]

2 голосов
/ 24 сентября 2010

Предполагая, что вы подразумеваете домены something.com и someothersite.com, затем настройте два сайта для использования одного и того же каталога для своих файлов сеанса (/tmp?), А затем просто прикрепите идентификатор сеанса к ссылкам между сайт:

http://something.com?sessionID=session_id_from_someothersite.com
http://someothersite.com?sessionID=session_id_from_something.com

затем включите ваш код обработки сеанса в каждую проверку для этого параметра и загрузите его.

Однако передача идентификаторов сеанса в виде текстовых URL-адресов крайне небезопасна. Так атаки на фиксацию сеансов становятся тривиальными. Несколько более безопасный способ - использовать форму POST на каждом сервере, чтобы «войти» в другой домен и передать идентификатор сеанса в качестве параметра. Или, что еще лучше, передайте зашифрованный одноразовый токен вместо идентификатора сеанса.

Если вы обслуживаете их в качестве отдельных поддоменов одного и того же родительского домена (siteA.example.com и siteB.example.com), просто настройте оба файла, чтобы установить их сеансовые файлы cookie на example.com, и они будут совместно использоваться двумя сайты.

2 голосов
/ 24 сентября 2010

Вы можете сделать что-то вроде этого:

$name = session_name("name");
session_set_cookie_params(0, '/', 'domain.com');
session_start();

Подробнее см. session_set_cookie_params.

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