我认为这很简单,但我想在某个地方有一个问题...... 我正在为Joomla安装开发自定义代码部分,我需要在执行代码之前取消设置一些会话变量。所以,当然,我有
$session->clear('var1');
$session->clear('var2');
$session->clear('var3');
$session->clear('var4');
但页面显示为空白,没有任何反应。有什么建议吗?
答案 0 :(得分:1)
假设你有这样的$ session变量:
$session = JFactory::getSession();
如果您收到空白页,则代码中可能会出现一些错误。你有权访问某种错误日志吗?如果没有,您可以尝试强制显示代码中的错误(如果它不是生产环境(虽然这不是最好的方法),或者从joomla管理员启用调试模式。
您也可以尝试在浏览器中运行php文件,如果一切正常且文件中没有解析错误,您应该会看到“限制访问”或类似信息。
此外,如果脚本没有崩溃,你可以检查每个调用返回$ session-> clear('xxx')的值(它应该返回刚刚清除的值。
我想到的最后一件事是你在会话中存储的变量是在不同的“上下文”中。当您获取/设置数据到会话时,您可以传递“命名空间”作为附加参数,因此这些变量存储在该“命名空间”中(实际上,它存储在会话内的另一个索引中。所以如果可能,您应该检查这些变量是否使用不同的“命名空间”存储在会话中:
$session->set( 'var1', $value, 'another_namespace' );
如果是这样,你应该这样清楚:
$session->clear( 'var1', 'another_namespace' );
P.S。:我说“命名空间”,因为它是Joomla在这些会话方法中使用的参数名称,但不要与PHP命名空间混淆。
我希望它有所帮助!