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