如何在drupal 7中保存会话变量?

use*_*975 6 php drupal session-variables drupal-7

我想使用变量会话($ _session),但它在Drupal 7中不起作用.为了保存变量会话,Drupal 7有什么可能性.

Muh*_*eda 12

你可以试试这个.

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];
}
Run Code Online (Sandbox Code Playgroud)

所以,要在Session中保存变量:

lists_session("s_key", "value");
Run Code Online (Sandbox Code Playgroud)

要检索该值,只需使用:

$myVar = lists_session("s_key");
Run Code Online (Sandbox Code Playgroud)

  • 你可以使用[`drupal_session_start()`](https://api.drupal.org/api/drupal/includes!session.inc/function/drupal_session_start/7).如果尚未启动,它将启动会话. (3认同)
  • 你不应该叫```drupal_session_start()```.一旦数据被添加到``$ _SESSION```,Drupal就会在请求结束时保存该会话.如果你必须直接调用```drupal_session_start()```那就错了. (2认同)
  • 注意([如drupal.org上所述](https://www.drupal.org/node/360542#comment-1446254)),如果有人想知道:`static $ storage`用于保存*的数据当前请求*和`$ _SESSION`用于保存*future requests*的数据. (2认同)

Kri*_*fer 7

我没有在我自己的模块中使用$ _SESSION变量的问题.请记住为您的数据创建一个唯一的子键.

$_SESSION['mydata'] = array(of your data);
Run Code Online (Sandbox Code Playgroud)