【发布时间】:2012-05-07 22:57:31
【问题描述】:
我想使用可变会话 ($_session),但它在 Drupal 7 中不起作用。在 Drupal 7 中保存可变会话的可能性是什么。
【问题讨论】:
标签: php drupal drupal-7 session-variables
我想使用可变会话 ($_session),但它在 Drupal 7 中不起作用。在 Drupal 7 中保存可变会话的可能性是什么。
【问题讨论】:
标签: php drupal drupal-7 session-variables
你可以试试这个。
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];
}
所以,要在 Session 中保存一个变量:
lists_session("s_key", "value");
要检索值,只需使用:
$myVar = lists_session("s_key");
【讨论】:
drupal_session_start()。如果会话尚未启动,它将启动会话。
drupal_session_start()。只要将数据添加到$_SESSION,Drupal 就会在请求结束时保存该会话。如果你必须直接打电话给drupal_session_start(),那就有问题了。
static $storage用于保存当前请求的数据,$_SESSION用于保存数据未来的请求。
我在自己的模块中使用 $_SESSION 变量没有问题。请记住为您的数据创建一个唯一的子键。
$_SESSION['mydata'] = array(of your data);
【讨论】:
记得在保存到会话之前序列化您的数据,例如数组、对象...。 $arr = 数组(); $_SESSION['mysession'] = 序列化($arr);
【讨论】: