2012-05-07 21 views

Trả lời

11

Bạn có thể thử điều này.

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]; 
} 

Vì vậy, để tiết kiệm một biến trong kỳ họp thứ:

lists_session("s_key", "value"); 

Và để lấy giá trị, chỉ cần sử dụng:

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

Chúng tôi cũng cần một session_start hoặc đã tồn tại trong drupal? – pal4life

+3

Bạn có thể sử dụng ['drupal_session_start()'] (https://api.drupal.org/api/drupal/includes!session.inc/function/drupal_session_start/7). Nó sẽ bắt đầu phiên nếu nó chưa được bắt đầu. –

+2

Bạn không cần phải gọi '' 'drupal_session_start()' ''. Ngay sau khi dữ liệu được thêm vào '' '$ _SESSION''' thì Drupal sẽ lưu phiên đó vào cuối yêu cầu. Nếu bạn phải gọi '' 'drupal_session_start()' '' trực tiếp thì có gì đó sai. – greggles

5

Tôi không có vấn đề của việc sử dụng biến $ _SESSION trong mô-đun của riêng tôi. Chỉ cần lưu ý để tạo khóa phụ duy nhất cho dữ liệu của bạn.

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

Tôi muốn có quyền truy cập vào các biến phiên trong trang php. Trang này có sẵn trên trang web drupal của tôi với mô-đun lightbox2. Và tôi cần phải sử dụng các biến phiên để giao tiếp giữa các trang này. Vì vậy, mã là: $ _SESSION ['background_menu'] = 'yellow'; Và trong trang php của tôi: echo $ _SESSION ['background_menu']?> Tôi cũng có session_start nhưng nó không hoạt động. Help :) – user785975

+0

Trình khởi động Drupal sẽ thực hiện session_start. Vậy mã php của bạn chạy như thế nào. Nó là một mô-đun drupal hoặc bạn có độc lập php-script? – Kristoffer

+0

đó là một tập lệnh php – user785975

1

Hãy nhớ nối tiếp dữ liệu của bạn như mảng, obj ... trước khi lưu vào phiên. $ arr = array(); $ _SESSION ['mysession'] = serialise ($ arr);