仅使 $_SESSION 内的一个选定变量过期(而不是整个 $_SESSION)


Expire only one selected variable inside $_SESSION (instead of the whole $_SESSION)

我正在编写一个程序,我需要使$_SESSION数组中的选定变量过期。

现在我知道如何使整个$_SESSION变量过期,但我的需求是选择性的,即仅在 1 天后$_SESSION['trial_period_1']$_SESSION['trial_period_credits']变量过期。

我希望用户保持登录状态,只希望试用期变量结束(会话超时为 1 个月)。

我本来想这样做的,但决定问一下,因为我确信有人知道一个更优雅的解决方案。

$_SESSION['trial_period_credits'] = 4; $_SESSION['trial_period_credits_expire'] = time() + 86400;

然后每次检查每个变量

if ( $_SESSION['trial_period_credits_expire'] < time() ) { ...

有没有更好的方法可以做到这一点?我的解决方案似乎有点混乱,因为它需要创建大量不必要的会话变量。

使用 unset .尝试使用 -

if ( $_SESSION['trial_period_credits_expire'] < time() ) {
    unset($_SESSION['trial_period_1']);
    unset($_SESSION['trial_period_credits']);
}

标识键并使用unset

if ( $_SESSION['trial_period_credits_expire'] < time() ) {
    unset($_SESSION['trial_period_1']);// will unset the $_SESSION for key trial_period_1 only.rest of the $_SESSION will remain.
}