【发布时间】:2021-10-02 14:12:32
【问题描述】:
我不明白为什么从包含上一次时间的$_session['now']的变量中减去当前时间的结果为零。
我希望输出当前时间与创建变量$student->now 的时间之间的差异。请解释一下。
class Student
{
public function __set($key, $value)
{
$_SESSION[$key] = $value ;
}
public function __get($key)
{
return $_SESSION[$key];
}
}
session_start();
$student = new Student() ;
//__set function will be called ;
$student->now = time();
//__get function will be called ;
echo time() - $_SESSION["now"]; // output is zero ?!
【问题讨论】:
-
您尝试过什么来解决问题?你被困在哪里了?如果两个调用直接成功,为什么应该有什么区别?
-
PHP 移动得如此之快,它可能包含相同的时间。在您的回声线之前尝试
echo time()." - {$_SESSION["now"]} = ";。 -
主要问题是,当我尝试每 60 秒重新生成一次会话 ID 但我发现时间仍然为零时,如下例所示:``` if (!isset($_SESSION['CREATED '])) { $_SESSION['CREATED'] = time(); } else if (time() - $_SESSION['CREATED'] > 60) { // 会话在 60 秒前开始 session_regenerate_id(true); // 更改当前会话的会话 ID 并使旧会话 ID 无效 $_SESSION['CREATED'] = time(); // 更新创建时间 } ```
标签: php time session-cookies