代码之家  ›  专栏  ›  技术社区  ›  Kevin

hook\u用户操作加载不启动?

  •  3
  • Kevin  · 技术社区  · 14 年前

    function mymodule_init() {
        global $user;
    
        if ($user->uid == 0 && !isset($_SESSION['anonymous_session_id'])) {
            $_SESSION['anonymous_session_id'] = session_id();
        }
    }
    
    function mymodule_user($op, &$edit, &$account, $category = NULL) {
        switch ($op) {
            case 'load':
                $user->anonymous_session_id = $_SESSION['anonymous_session_id'];
                break;
            default:
                break;
        }
    }
    

    但是,它不在用户对象中。有一个'session'字段,它有一个序列化的$\u会话信息数组,这意味着我可能不需要hook\u user,但是为什么这段代码不起作用呢?

    1 回复  |  直到 14 年前
        1
  •  5
  •   user113292 user113292    14 年前

    您将遇到两个问题:

    1. 中的用户对象 hook_user() $user (它不是参数之一):它实际上在 $account .
    2. $用户 对象即使在修改后也没有完全加载 在期间 钩子用户() related issue ).

    要获取完全加载的用户对象,请执行以下操作:

    global $user;
    $account = user_load(array($user->uid));
    

    user_save() ,信息添加到 $用户 hook_user($op = 'load') 不从一页传输到另一页: 每次加载用户时调用,每个页面至少调用一次。如果要在不使用数据库的情况下维护会话信息,请使用 $_SESSION .