【问题标题】:Removing / Timing / Destroying out multiple php sessions variables at once一次删除/定时/销毁多个php会话变量
【发布时间】:2018-06-28 19:57:46
【问题描述】:

我试图让几个会话变量在 30 分钟后超时/销毁,但使用尽可能少但有效的代码。

目前我有两种解决方案:

if(isset($_SESSION['fullname']) && (time() - $_SESSION['fullname'] > 1800)) {
    session_unset();
    session_destroy();
}
$_SESSION['fullname'] = time();

  session_start();
  $user_inactive = 1800;
  $user_session = time() - $_SESSION['current_user'];
  if($user_session > $user_inactive) { 
     session_destroy(); 
     header("location: logout.php"); 
  }
  $_SESSION['current_user']=time();

这两种方法都适用于单个变量,但是我试图让它同时破坏多个变量,例如:

  1. 全名
  2. 电话号码
  3. 电子邮件地址

等等……

谁能给我建议最好的方法来解决这个问题,以便销毁多个变量,而不必为每个变量一遍又一遍地复制我的代码。

【问题讨论】:

  • session_destroy() 将结束您的会话,删除所有会话。
  • 最好让整个会话超时而不是清除单个变量。部分清除会话将是一场噩梦。
  • 我确实想过只使用 session_destroy() ,但这样做的含义是我需要执行的其他一些会话将变得无效。我只是在我说话的时候处理代码,有人怀疑可能使用 cookie 来承载我需要的其他值,我还没有完全解决这个问题,所以非常感谢任何想法或想法。谢谢大家。
  • $delete = array('Fullname','Phonenumber','Emailaddress'); foreach($delete as $option) { unset($_SESSION[$option]); }。其中数组项是 SESSION 键。

标签: php session if-statement session-variables session-timeout


【解决方案1】:

NewLeaner 正如您从我为您回答的最后一个问题中了解到的那样,我自己仍在学习基础知识,所以我还没有经验,但是我在自己的应用程序和as Darren mentioned in a previous comment 的编码过程中克服了这样的问题,有数组中的变量值列表将允许您根据与会话变量值匹配的数组值相应地取消设置相关会话。

以下是会话变量值的示例:

  1. 全名会话:$_SESSION['fullname']
  2. 电话号码会话:$_SESSION['Phonenumber']
  3. 电子邮件地址会话:$_SESSION['Emailaddress']

$unset = array('Fullname','Phonenumber','Emailaddress'); 
foreach( $unset as $sessions ) {
    unset($_SESSION[$sessions]); 
}

这将取消设置并删除上述会话,例如全名、电话号码、电子邮件地址以及您希望添加到数组中的任何其他会话。

您可以使用单引号和逗号分隔向数组添加更多值,这是添加更多值的示例。

$unset = array('Fullname','Phonenumber','Emailaddress', 'Variable_4', 'Variable_5', 'Variable_6', 'Variable_7', 'And so on...');

希望这再次对您有所帮助!

【讨论】:

  • 是的,我确实注意到了 Darren 的原始评论,我很欣赏它的缩写和解释,并感谢您的宝贵时间。
  • 你得到我的 +1 表扬并更深入地解释答案。干得好:)
猜你喜欢
  • 2020-04-27
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 2015-05-12
相关资源
最近更新 更多