2013-02-20 70 views
3

我有一对夫妇一个Drupal模块中的代码行是这样:PHP会话变量不会取消设置

if ($arg == 'true' && isset($_SESSION['xyz']['noredirect'])) { 
    unset($_SESSION['xyz']['noredirect']); 
} 

当执行2号线,我得到错误:

Error messageNotice: Undefined variable: _SESSION in blah() (line 122 of /home/xxxxxxx/public_html/sites/all/modules/blah/blah.module). 

我根本无法理解为什么如果会议设置,我不能解除它。

任何想法?

感谢

+2

做ü运行在session_start() – 2013-02-20 11:44:37

+0

@Haim Drupal的应处理的session_start。 – trickyzter 2013-02-20 11:46:24

+0

感谢Haim,只是你知道,我没有写模块,我只是试图修复这一行,因为模块的其余部分工作正常。我无法在模块中看到session_start(),它是否应该添加到某个地方?谢谢 – user2090967 2013-02-20 11:47:28

回答

5

这样看来,你还没有运行session_start()。这将创建超全球性的$_SESSION

+0

它说:“会话已经开始 - 忽略session_start()....所以它一定在那里。trickyzter建议Drupal处理这个? – user2090967 2013-02-20 12:00:37

+0

你试过'var_dump($ _ SESSION)'?如果$ _SESSION是NULL,那么它还没有启动,因此不能有元素未设置 – juco 2013-02-20 12:16:35

+0

编写该模块的人说,他正在他拥有的网站上工作他认为这可能是我的网站的一个“环境”问题,只是不知道它会是什么。 – user2090967 2013-02-20 12:51:51

0

该模块现在的工作原理与我想要的完全一样。我通过使用session_destroy()解决了它;而不是未设置。这可能不是解决问题的最优雅方式,但它很有效,我找不到任何其他方式来解决问题。

if ($arg == 'true' && isset($_SESSION['xyz']['noredirect'])) { 
session_destroy(); 

}