在$ _SESSION中只过期一个选定的变量(而不是整个$ _SESSION)

时间:2015-01-08 06:16:30

标签: php session-timeout

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

现在我知道如何使整个$_SESSION变量失效,但我的需要是 selective ,即仅在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() ) { ...

有更好的方法吗?我的解决方案似乎有点混乱,因为它需要创建大量不必要的会话变​​量。

2 个答案:

答案 0 :(得分:1)

使用unset。试试 -

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

答案 1 :(得分:0)

识别密钥并使用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.
}