2012-05-07 63 views

回答

11

你可以試試這個。

function lists_session($key, $value = NULL) { 
    static $storage; 
    if ($value) { 
    $storage[$key] = $value ; 
    $_SESSION['lists'][$key] = $value ; // I use 'lists' in case some other module uses 'type' in $_SESSION 
    } 
    else if (empty($storage[$key]) && isset($_SESSION['lists'][$key])) { 
    $storage[$key] = $_SESSION['lists'][$key]; 
    } 
    return $storage[$key]; 
} 

所以,保存變量會話:

lists_session("s_key", "value"); 

並檢索值,只需使用:

$myVar = lists_session("s_key"); 
+0

我們是否還需要session_start或drupal中已存在的session_start? – pal4life

+3

你可以使用[''drupal_session_start()'](https://api.drupal.org/api/drupal/includes!session.inc/function/drupal_session_start/7)。如果它尚未開始,它將開始會話。 –

+2

你不需要調用'''drupal_session_start()'''。只要數據被添加到'''__SESSION'''中,Drupal就會在請求結束時保存該會話。如果你不得不直接調用'''drupal_session_start()''',那麼就會出錯。 – greggles

5

我使用$ _SESSION變量沒有問題我自己的模塊。請記住爲數據創建唯一的子密鑰。

$_SESSION['mydata'] = array(of your data); 
+0

我想訪問會話變量在PHP頁面。這個頁面可以在我的drupal網站上使用lightbox2模塊。我需要使用會話變量在這些頁面之間進行通信。所以,代碼是:$ _SESSION ['background_menu'] ='黃色'; 並在我的PHP頁面:echo $ _SESSION ['background_menu']?>我也有session_start,但它不起作用。幫助:) – user785975

+0

Drupal引導程序將執行session_start。那麼你的php代碼是如何運行的。它是一個Drupal模塊還是你有獨立的PHP腳本? – Kristoffer

+0

這是一個PHP腳本 – user785975

1

記得在保存到會話之前序列化您的數據,如數組,對象...。 $ arr = array(); $ _SESSION ['mysession'] = serialise($ arr);