簡體   English   中英

PHP會話返回null

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM