簡體   English   中英

從文件切換到會話var后,該功能不起作用

[英]After switching from file to session vars the functions don't work

我有兩種方法可以正常工作

public static function appendGamer($gamer) {
    file_put_contents(self::$fileName, $gamer, FILE_APPEND);
}

    private function selectLastGamer() {
        $gamers = file(self::$fileName);
        if (sizeof($gamers) > self::$totalGamers) {
            self::$totalGamers = sizeof($gamers);
            return trim($gamers[self::$totalGamers - 1]);
        }
        return "";
    }

現在,我希望所有內容都存儲在會話變量中,而不是傳統的文本文件中。 所以我用以下方式重寫了這些功能

public static function appendGamer($gamer) {
    $old = trim($_SESSION["gamers"]);
    $_SESSION["gamers"] = ($old == "") ? $gamer : $old . PHP_EOL . $gamer;
}

 private function selectLastGamer() {
        $gamers = explode(PHP_EOL, $_SESSION["gamers"]);
        if (sizeof($gamers) > self::$totalGamers) {
            self::$totalGamers = sizeof($gamers);
            return trim($gamers[self::$totalGamers - 1]);
        }
       return "";
    }

但是現在這些功能不起作用。 我的意思是現在selectLastGamer總是返回空字符串。 會話變量是在構造函數中自動創建的,因此始終會進行設置。 這些功能的新版本有什么問題?

使用session_start();在要訪問會話變量set / get的每個頁面上啟動會話session_start(); 在頁面頂部。

在主頁以及定義功能的頁面上。

您應該在每個頁面上啟動會話

if( session_status() != PHP_SESSION_DISABLED )
{
    session_start();
}

要么

if( session_status() == PHP_SESSION_NONE || session_status() == PHP_SESSION_ACTIVE)
{
    session_start();
}

因為session_status()一次返回以下任一值。

如果禁用了會話,則為PHP_SESSION_DISABLED。

如果啟用了會話,則PHP_SESSION_NONE,但不存在。

PHP_SESSION_ACTIVE(如果啟用了會話且存在一個會話)。

希望對你有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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