Как передать переменную SESSION на страницу в родительском каталоге? - PullRequest
1 голос
/ 09 февраля 2011

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

Иногда мне нужно сделать ссылку на файлы, которые не принадлежат субдомену.

Например, на моем «subdomain1.mysite.org» у меня есть ссылка на «www.mysite.org/login.php». Файл «login.php» хранится в каталоге, который содержит все подкаталоги, соответствующие поддоменам.

Если я сделаю ссылку на «www.mysite.org/login.php» следующим образом: href='../login.php', она не будет работать. Поскольку браузер пытается получить доступ к «subdomain1.mysite.org/../login.php». Чтобы решить эту проблему, я делаю ссылку следующим образом: href='http://www.mysite.org/login.php', но я думаю, что таким образом я не могу передать переменные сеанса на новую страницу (может ли это иметь место?).

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

ДОБАВЛЕНО

Как рекомендовано, я устала использовать session_set_cookie_params для решения проблемы. Но я до сих пор не могу добиться желаемого результата. Более подробно я делаю следующее:

У меня есть файл index.php, который генерирует контент для subdomain1.mysite.org Я использую следующий код:

session_set_cookie_params(24*60*60,'/','.mysite.org');
session_start();
$_SESSION['page'] = $PHP_SELF;

Чем позже, в том же файле я делаю ссылку на одну из моих страниц (думаю, проблема может быть здесь). Я создаю ссылку следующим образом:

href='http://www.mysite.org/login.php'

В файле login.php у меня есть следующий код:

session_set_cookie_params(24*60*60,'/','.mysite.org');
session_start();
print "a".$_SESSION['page']."b";

В результате между «а» и «б» ничего нет. Поэтому я все еще не могу передать переменные сеанса с одной страницы на другую. Кто-нибудь знает, что я делаю не так?

ДОБАВЛЕНО 2 Я должен сказать, что моя проблема решена, если я добавлю следующую строку: session_name("some_name");

до

session_set_cookie_params.

Ответы [ 2 ]

5 голосов
/ 09 февраля 2011

В PHP INI вы можете установить для домена сеанса значение «.mysite.org», тогда вы сможете разделить сеанс между несколькими доменами. Соответствующая переменная:

session.cookie_domain

Вы также можете установить его внутри скрипта с помощью функции session_set_cookie_params().

Редактировать - я должен отметить, что это работает только в том случае, если ваши субдомены находятся на одном и том же сервере (что выглядит так)

0 голосов
/ 09 февраля 2011

Вы правы, что сеансы не могут быть разделены таким образом. Тем не менее, вы можете использовать безопасные куки для обмена пользовательскими данными между поддоменами:

http://us3.php.net/manual/en/function.setcookie.php

Убедитесь, что параметр домена при установке файла cookie выглядит примерно так:

".mysite.org"

После этого вы сможете получить доступ к cookie-файлу с любого субдомена mysite.org

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