2013-02-20 72 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(); 

}