我使用会话变量来控制登录和页面访问。我使用变量来控制用户所属的不同用户组,因此我有相当多的会话变量。
我还使用一个会话变量来记住用户在刷新时最后一次访问的页面。
当用户注销时,我使用session_destroy();删除所有变量。我想要做的是维护最后访问的页面变量,即使用户已经注销。
我想我可以通过对每个其他变量使用unset函数来做到这一点,但有很多变量,我想知道是否有更简单的方法?
谢谢,Eds
发布于 2011-09-13 18:43:09
你可以试试下面的代码,
$Arr_not_destoy_session = array('last_visited_id');
foreach($_SESSION as $sees_key => $sess_val ){
if(!in_array($sees_key, $Arr_not_destoy_session)){
unset($_SESSION[$sees_key]);
}
}这将取消设置除'last_visited_id‘之外的所有会话变量。only.you还可以在此数组中添加更多的值,您以后不想删除这些值。
谢谢。
发布于 2011-09-13 18:41:46
您可以销毁会话,但在此之前,请将最后一个页面保存到一个变量中,然后将该变量放入一个新的会话变量中。
$lastPage =$_ session‘’last_page‘$session_destroy();然后创建一个包含$lastPage的新会话。
另一种方法是将用户访问的最后一个页面保存到数据库的用户记录中。(这将使它可以从任何地方访问,而不是特定于位置)
发布于 2011-09-13 18:44:17
回到您现有的使用unset()的后备解决方案,您说这个问题有很多,但这不应该使它变得困难;我仍然认为这是一个很好的问题解决方案。
首先,您可以使用foreach()循环将它们全部取消设置;这只需要几行代码:
foreach($_SESSION as $key=>$value) {
if($key != "the_one_you_want_to_keep") {
unset($_SESSION[$key]);
}
}另一种方法是在子数组中组织会话数据,这样您就可以通过取消设置单个顶级数组变量来清除它们,但保持其他子数组中的其他会话数据不变:
unset($_SESSION['user_data']);
//but don't unset $_SESSION['data_to_keep']希望这能有所帮助。
https://stackoverflow.com/questions/7400474
复制相似问题