PHP: session_cookie над поддоменами? - PullRequest
1 голос
/ 22 июля 2010

Я довольно новичок в PHP и сессиях. Я никогда раньше не работал с ними, и у меня довольно много проблем с ними работать с AJAX через поддомен.

Я на http://www.example.com/whatever, и я устанавливаю cookie с помощью:

session_set_cookie_params(0, '/', '.example.com');
session_start();
if(!isset($_SESSION['password']) ) {
    $_SESSION['password'] = $_POST['password']; 
}
var_dump(ini_get_all('session')); //seems like it doesn't save the cookie???

Затем я использую jQuery (load()) для перезагрузки определенной части страницы. Я загружаю somefile.php из http://subdomain.example.com/subdomain/somefile.php. Я хочу получить информацию о сессии внутри этого somefile.php Я использую

var_dump(ini_get_all('session')); //can't find the cookie!??

if(isset($_SESSION['password']) ) {
    $user_pass = $_SESSION['password'];
    echo "Password: " . $user_pass . "<br>";
} else {
    print "can't find cookie!";
}

Но я не могу получить информацию! Есть идеи, что я мог сделать не так? Я что-то пропустил?

Ответы [ 2 ]

2 голосов
/ 22 июля 2010

Если поддомен запущен на другом сервере, то ... сеанса просто нет!Это связано с тем, что по умолчанию данные сеанса сохраняются где-то в /tmp.

Если вы хотите совместно использовать данные сеанса на нескольких серверах, вам нужно написать собственный обработчик сеанса и сохранить их, например, вбаза данных. session_set_save_handler ()

0 голосов
/ 22 июля 2010

Даже в структуре соответствующих RFC получение cookie-файлов для работы с поддоменами далеко не тривиально. Добавьте к этому усложнение различий в различных реализациях от разных поставщиков браузеров - это просто не стоит хлопот.

Вместо этого используйте SSO. Это обсуждалось много раз на переполнении стека

C.

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