Неправильная установка переменной сеанса PHP - PullRequest
0 голосов
/ 07 января 2012

Я полный нуб на сессиях php.Я заставил их работать раньше, но никогда на живом сервере, только в моей локальной тестовой среде.

Моя проблема в том, что переменная $ _SESSION всегда является пустым массивом (не неопределенным).

Это форма входа в систему, которая выполняет AJAX-вызов php-файла.

Вот вызов AJAX:

$.ajax({
        url: 'xhr/login.php',
        data: $(this).serialize(),
        type: 'post',
        dataType: 'json',
        success: function(result){
            if (result.success){
                console.log(result);
            };
        },
        error: function(e){console.log("Could not retrieve login information")}
    });

Вот соответствующие части сценария входа в систему:

# Start the user session
if(!isset($_SESSION)) {
    session_start();
    session_regenerate_id();
};

# Set our session values
                WHILE($session_row = mysql_fetch_assoc($session_result)){
                    $_SESSION['id'] = $session_row['id'];
                    $_SESSION['last_login'] = $session_row['last_login'];
                    $_SESSION['username'] = $session_row['username'];
                    $_SESSION['signup_date'] = $session_row['signup_date']; 
                };

У меня есть возвращаемый Json, возвращающий переменную сеанса в виде:

echo json_encode(array("success"=>"user logged in", "session"=>$_SESSION));

, но когда я записываю переменную result.session в консоль, он просто возвращает пустой массив.

1 Ответ

1 голос
/ 07 января 2012

Моя проблема в том, что переменная $ _SESSION всегда является пустым массивом (не определен).

Это абсолютно нормально для каждого сеанса, который был успешно запущен.

session_regenerate_id();

Уч. Уч. Уч. Почему вы регенерируете идентификатор на ровном месте при каждом запросе?

Удалить эту строку. Это может также вызвать вашу проблему.

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