Php 引导-如何保存会话中的崩溃状态

Php 引导-如何保存会话中的崩溃状态,php,twitter-bootstrap-3,session-variables,collapse,Php,Twitter Bootstrap 3,Session Variables,Collapse,我使用Bootstrap,我想在会话变量PHP(而不是cookie)中保存当前的折叠状态(打开或关闭) 你能告诉我: -在会话变量PHP中保存当前状态的示例代码。 -以及一个示例代码,用于在页面加载时打开或不折叠(取决于会话变量中存储的状态) 非常感谢首先,您真的需要将其存储到会话中吗?一些PHP脚本是否可以使用该值 两种情况: 您必须将折叠项的状态存储在JavaScript变量中的某个位置: var collapsed = false; // the default value $('.co

我使用Bootstrap,我想在会话变量PHP(而不是cookie)中保存当前的折叠状态(打开或关闭)

你能告诉我: -在会话变量PHP中保存当前状态的示例代码。 -以及一个示例代码,用于在页面加载时打开或不折叠(取决于会话变量中存储的状态)


非常感谢

首先,您真的需要将其存储到会话中吗?一些PHP脚本是否可以使用该值

两种情况:

您必须将折叠项的状态存储在JavaScript变量中的某个位置:

var collapsed = false; // the default value

$('.collapse').on('hide.bs.collapse', function () {
    collapsed = true; // on hide, collapsed is true
})

$('.collapse').on('show.bs.collapse', function () {
    collapsed = false; // on show, collapsed is false
})
是,我需要将其存储到会话:

在每次请求时,必须添加折叠变量并传递它,例如trhough GET method:

$('a').on('mousedown', function() {
    var c = collapsed ? 1 : 0;
    var href = $(this).attr('href');
    if(href.indexOf('?') !== -1) {
        $(this).attr('href', href + '&collapsed=' + c);
    else {
        $(this).attr('href', href + '?collapsed=' + c);
    }
});
并以某种方式将其保存到会话

$_SESSION['collapsed'] = $_GET['collapsed'];
不,我不需要存储到会话中:

大多数现代浏览器现在都有localStorage变量,这类似于JavaScript中的session

保存到变量中(例如在事件处理程序中):

加载一些启动脚本:

if(typeof(Storage)!=="undefined")
{
    collapsed = window.localStorage.getItem('collapsed'); // again choose one
    collapsed = code.sessionStorage.getItem('collapsed');

    if(collapsed) {
        $('.collapse').collapse('show');
    } else {
        $('.collapse').collapse('hide');
    }
}
else
{
    // Sorry! No Storage support..
}
可能还有其他解决方案,但这些是我唯一能想到的


所有代码都需要jQuery,我会在PHP方面做类似的事情。它允许存储和检索多个ID的状态。不包括会话处理;这些函数假定正在进行活动会话。此外,函数是静态的,因为不需要实例化类。而且它使使用更简单

类崩溃
{
公共静态函数集\状态($id=null,$state=null)
{
如果($id==null | |$state===null | |!是数值($state)){
返回false;
}否则{
$state=($state==0?0:1);
$\会话['collapse\u state'][$id]=$state;
}
}
公共静态函数状态($id=null)
{
如果($id==null){
返回false;
}否则{
返回$_会话['collapse_state'][$id];
}
}
}
//---设置所选ID的状态。
折叠::设置_状态('info',0);
//---返回ID的状态。
Collapse::state('info');
将这个类与TomášTomík Blatný提出的JavaScript结合使用,您将能够保存您的状态。我可能会使用POST而不是GET-through,以使URL:s看起来更好一点。这可以通过填充隐藏的表单字段或向只处理折叠状态的PHP脚本发送AJAX请求来实现

if(typeof(Storage)!=="undefined")
{
    collapsed = window.localStorage.getItem('collapsed'); // again choose one
    collapsed = code.sessionStorage.getItem('collapsed');

    if(collapsed) {
        $('.collapse').collapse('show');
    } else {
        $('.collapse').collapse('hide');
    }
}
else
{
    // Sorry! No Storage support..
}