我有两种方法可以正常工作
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
总是返回空字符串。会话变量在构造函数中自动创建,因此始终设置它。新版本的这些功能出了什么问题?
答案 0 :(得分:1)
使用页面顶部的session_start();
在您要访问会话变量set / get的每个页面上启动会话。
在主页面上以及定义功能的页面上。
答案 1 :(得分:1)
您应该在每个页面上开始会话,例如
if( session_status() != PHP_SESSION_DISABLED )
{
session_start();
}
OR
if( session_status() == PHP_SESSION_NONE || session_status() == PHP_SESSION_ACTIVE)
{
session_start();
}
因为session_status()一次返回以下任何一个值。
如果会话被禁用,则为PHP_SESSION_DISABLED。
PHP_SESSION_NONE如果会话已启用但不存在。
PHP_SESSION_ACTIVE如果启用了会话,则存在一个。
希望它能为你效劳。