tôi muốn sử dụng một phiên biến ($ _session) nhưng nó không hoạt động trong Drupal 7. Các khả năng trong Drupal 7 là gì để lưu phiên biến.Làm thế nào để lưu biến phiên trong drupal 7?
Trả lời
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");
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);
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
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
đó là một tập lệnh php – user785975
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);
Chúng tôi cũng cần một session_start hoặc đã tồn tại trong drupal? – pal4life
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. –
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