首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >销毁会话,但保留一个变量集

销毁会话,但保留一个变量集
EN

Stack Overflow用户
提问于 2011-09-13 18:37:26
回答 4查看 4.4K关注 0票数 3

我使用会话变量来控制登录和页面访问。我使用变量来控制用户所属的不同用户组,因此我有相当多的会话变量。

我还使用一个会话变量来记住用户在刷新时最后一次访问的页面。

当用户注销时,我使用session_destroy();删除所有变量。我想要做的是维护最后访问的页面变量,即使用户已经注销。

我想我可以通过对每个其他变量使用unset函数来做到这一点,但有很多变量,我想知道是否有更简单的方法?

谢谢,Eds

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-13 18:43:09

你可以试试下面的代码,

代码语言:javascript
运行
复制
$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还可以在此数组中添加更多的值,您以后不想删除这些值。

谢谢。

票数 1
EN

Stack Overflow用户

发布于 2011-09-13 18:41:46

您可以销毁会话,但在此之前,请将最后一个页面保存到一个变量中,然后将该变量放入一个新的会话变量中。

$lastPage =$_ session‘’last_page‘$session_destroy();然后创建一个包含$lastPage的新会话。

另一种方法是将用户访问的最后一个页面保存到数据库的用户记录中。(这将使它可以从任何地方访问,而不是特定于位置)

票数 0
EN

Stack Overflow用户

发布于 2011-09-13 18:44:17

回到您现有的使用unset()的后备解决方案,您说这个问题有很多,但这不应该使它变得困难;我仍然认为这是一个很好的问题解决方案。

首先,您可以使用foreach()循环将它们全部取消设置;这只需要几行代码:

代码语言:javascript
运行
复制
foreach($_SESSION as $key=>$value) {
    if($key != "the_one_you_want_to_keep") {
         unset($_SESSION[$key]);
    }
}

另一种方法是在子数组中组织会话数据,这样您就可以通过取消设置单个顶级数组变量来清除它们,但保持其他子数组中的其他会话数据不变:

代码语言:javascript
运行
复制
unset($_SESSION['user_data']);
//but don't unset $_SESSION['data_to_keep']

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7400474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档