Я полный noob на php сессиях. Раньше я работал над ними, но никогда на живом сервере, только в локальной тестовой среде.PHP Session Variable Неправильная установка
Моя проблема заключается в том, что переменная $ _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 в консоль, она просто возвращает пустой массив.
Почему 'while' капитализируется? Где вы делаете запрос к базе данных? – cspray
где генерируется $ session_result? Если ошибки не генерируются, может быть, что «$ session_row = mysql_fetch_assoc ($ session_result)» никогда не возвращает true, поэтому цикл игнорируется. Кроме того, как сказал Чарльз, это должно быть «пока», а не WHILE. –