【问题标题】:How to save a session variable in drupal 7?如何在 drupal 7 中保存会话变量?
【发布时间】:2012-05-07 22:57:31
【问题描述】:

我想使用可变会话 ($_session),但它在 Drupal 7 中不起作用。在 Drupal 7 中保存可变会话的可能性是什么。

【问题讨论】:

    标签: php drupal drupal-7 session-variables


    【解决方案1】:

    你可以试试这个。

    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");
    

    【讨论】:

    • 我们是否还需要一个 session_start 或者一个已经存在于 drupal 中?
    • 您可以使用drupal_session_start()。如果会话尚未启动,它将启动会话。
    • 您不需要致电drupal_session_start()。只要将数据添加到$_SESSION,Drupal 就会在请求结束时保存该会话。如果你必须直接打电话给drupal_session_start(),那就有问题了。
    • 注意(as described on drupal.org),如果有人想知道:static $storage用于保存当前请求的数据,$_SESSION用于保存数据未来的请求
    • 对于使用 $_SESSION 的人。如果@MuhammadReda 的回答没有帮助。请检查您的数据库是否有用户 uid=0 [link]drupal.org/node/315830 并记住配置 > 性能 > 清除缓存
    【解决方案2】:

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

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

    【讨论】:

    • 我想访问 php 页面中的会话变量。这个页面在我的 drupal 网站上提供了 lightbox2 模块。我需要使用会话变量在这些页面之间进行通信。所以,代码是: $_SESSION['background_menu'] = 'yellow';在我的 php 页面中: echo $_SESSION['background_menu']?> 我也有 session_start 但它不起作用。帮助:)
    • Drupal 引导程序将执行 session_start。那么你的 php 代码是如何运行的。它是一个 drupal 模块还是你有独立的 php 脚本?
    • $_SESSION 变量在 Drupal 7 中有效。因此,您自己的代码中的某些内容不起作用。您是否在其他环境中测试过您的代码?
    【解决方案3】:

    记得在保存到会话之前序列化您的数据,例如数组、对象...。 $arr = 数组(); $_SESSION['mysession'] = 序列化($arr);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多