[英]PHP session is coming back null
我正在嘗試提出會話超時(第一次)。 每當我調用if語句時,它都會為$ _SESSION變量獲取null。 我的會話從頂部的header.php文件開始。 當用戶登錄時,使用以下代碼創建會話:
public static function create_session($values) {
foreach ( $values as $key => $value ) {
if ($key != "password") {
$_SESSION[$key] = $value;
}
}
$_SESSION["timestamp"] = time();
}
然后,它重定向到僅包含以下內容的索引頁:
<?php
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>
這可以正常工作,它可以在頁面上很好地打印所有會話變量。
這就是上面的代碼在index.php文件中輸出的內容。
Array
(
[id] => 33
[first_name] => removed to not show name
[last_name] => removed to not show name
[email] => test@test.com
[timestamp] => 1437486426
)
在我的footer.php文件中,我有一些jquery每5秒運行一個定時函數,調用timeout.php文件。
(function poll() {
setTimeout(function() {
$.ajax({ url: "timeout.php", success: function(data) {
console.log(data);
}, dataType: "json", complete: poll });
}, 5000);
})();
超時php文件中僅包含以下代碼:
if (isset($_SESSION)) {
if ($_SESSION['timestamp'] + 10 * 60 < time()) {
// session timed out
echo json_encode(array('session' => $_SESSION, 'session_timestamp' => $_SESSION['timestamp'], 'timestamp_calculation' => $_SESSION['timestamp'] + 10 * 60, 'timeoutstatus' => 'timed out'));
} else {
// session ok
echo json_encode(array('session' => $_SESSION, 'session_timestamp' => $_SESSION['timestamp'], 'timestamp_calculation' => $_SESSION['timestamp'] + 10 * 60, 'timeoutstatus' => 'not timed out'));
}
} else {
echo json_encode(array('session' => 'Session does not exits'));
}
由於某種原因,我正在獲取該會話不存在。 如果我刪除了if語句的那一部分,只是測試了超時,所有調用$ _SESSION的json數組變量都將返回null。 我不知道為什么會這樣。 我感謝您的幫助。
響應於此重復。 最初的想法是未調用session_start()。 我已經在第一段中提到過它,它在所有其他PHP代碼之前出現。 我還確認可以在索引頁面中調用$ _SESSION變量。 當我嘗試通過我的footer.php調用的ajax函數讀取它時,只會遇到問題。
您尚未在timeout.php
文件中啟動會話,並且/或者沒有將header.php
包含在此文件中,因此會話將永遠不會在timeout.php
啟動。 y會話在timeout.php
文件中未定義。
您可以在timeout.php
添加條件,例如:
if(!isset($_SESSION)) session_start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.