Проблема перенаправления JavaScript с сессиями PHP - PullRequest
1 голос
/ 04 августа 2011

Я установил переменную сеанса на поддомене входа в систему и отклик json с другого поддомена, если вход был успешным, ответный json проверяется скриптом, и скрипт выполняет location.href = "new url". На перенаправленном сайте «новый URL» я хочу проверить переменные сеанса, если пользователь вошел в систему или нет, но не заданы переменные сеанса. location.href = "" разрушает мою сессию? Как решить эту проблему? session.cookie_domain установлено на '.mydomain.com'.

login.mydomain.com:

$.post('http://api.mydomain.com/index.php', {action: 'login', username: username, password: password}, function(response) {
            var success = $.parseJSON(response);
            if(success.success == 'true') {
                location.replace = 'http://my.mydomain.com';
            }
        });

api.mydomain.com:

session_start();
$_SESSION['active'] = true;
header('Access-Control-Allow-Origin: http://login.mydomain.com');
echo '{"success": "true"}';

my.mydomain.com:

session_start();
if(!isset($_SESSION['active']) && !$_SESSION['active']) {
    header("Location: http://login.mydomain.com");
    echo $_SESSION['access_token'].' test';
}
else {   
    echo 'Success!'; 
}

Спасибо за помощь.

Ответы [ 3 ]

2 голосов
/ 18 декабря 2013

У меня была та же проблема, и я обнаружил, что когда я использую относительный URL (location.ref = "index.php"), все переменные сеансов существуют.Но когда я использую абсолютный URL (location.ref = "http://mydomain.com/index.php"), это убивает все мои переменные сеанса.

1 голос
/ 04 августа 2011

Вы, кажется, не звоните session_start() во втором блоке кода.

0 голосов
/ 04 августа 2011

Из того, что вы говорите, у вас может быть несколько проблем, способствующих этой проблеме.

1) Файлы cookie PHP устанавливаются сервером при загрузке страницы, загрузка страницы не означает, что файлы cookie не установлены, если вы используете чистый JSON без загрузки страницы, то вы не сможете установить сеанс и вернуться это к браузеру.

2) Также следует помнить, что сеансы PHP по сути являются cookie-файлами, и применяются правила для файлов cookie, поэтому, если вы устанавливаете сеанс PHP на api.mydomain.com и ожидаете, что он будет работать на my.mydomain.com, он, вероятно, не будет Работа.

Вы можете найти жизнеспособное решение для обработки данных для входа и сеансов в нескольких поддоменах здесь

Я надеюсь, что это полезно для вас.

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