我有两种方法可以正常工作
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
总是返回空字符串。会话变量在构造函数中自动创建,因此始终设置它。新版本的这些功能出了什么问题?
你应该在每个页面上开始会话
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如果启用了会话,并且存在一个会话。
希望它能为你效劳。
使用页面顶部的session_start();
在您要访问会话变量set / get的每个页面上启动会话。
在主页面上以及定义功能的页面上。