下面是$user对象的成分: ------------------------------------------------------------------------------------------------------------ 成分 说明 ------------------------------------------------------------------------------------------------------------ user表提供的 ------------------------ uid 用户的ID,user表的主键,在一个Drupal安装中是唯一的 name 用户的用户名,用户登录时输入的 pass 用户密码 安全为sha512哈希表 mail 用户当前email地址 theme 此字段已弃用,为兼容而保留 signature 用户签名,用在用户评论时,只有当评论模块激活后才可以浏览 signature format 用户签名格式,如filtered text full text created 用户账号建立的时间-unix时间戳 access 用户最后访问时间-unix时间戳 login 用户最后成功登陆的时间-unix时间戳 status 用户被锁定为0,良好为1 timezone 用户时区与GMT相距的秒数 language 用户默认语言,为空,除非多语言呗激活 picture 用户账号图片的路径 init 用户注册时提供的初始email地址 data 能被模块存储到这的任何数据(见下节) -------------------------------------------------------------------------------------------------------------- 成分 说明 -------------------------------------------------------------------------------------------------------------- user_roles表提供的 ------------------------ roles 当前分配给此用户的角色 sessions表提供的 ------------------------ sid 由PHP分配给这个用户会话的会话ID Ssid 由PHP分配给这个用户会话的安全会话ID hostname 用户浏览当前页面时从哪个ip地址来的 timestamp 一个unix时间戳,表现用户浏览器最后就收到一个完整页面的时间 cache 每个用户缓存的时间戳 session 在用户的会话期间可以由模块存到这里打任意的、暂短的数据 -------------------------------------------------------------------------------------------------------------- 检测用户是否登录 在一个请求之间,检测用户是否登录的标准方式是测试$user->uid是不是0。为此目的,Drupal有个便利的函数叫user_is_logged_in(),这是一个相当的user_is_anonymous()函数: if (user_is_logged_in()) { $output = t('User is logged in.'); else { $output = t('User is an anonymous user.'); } 用户钩子介绍 用户钩子的实现给你的模块一个机会来对执行在用户账号上的不同操作做出反应及修改$user对象,这是一些hook_user的变形,每个变形执行不同的动作: -------------------------------------------------------------------------------------- Hook function 目的 -------------------------------------------------------------------------------------- hook_username_alter(&$name, $account) 改变用户显示的用户名 hook_user_cancel($edit, $account, $method) 用户账号取消时的动作 hook_user_cancel_methods_alter(&methods) 修改账号取消时的方法 hook_user_categories() 检索用户设置或profile信息变化列表 hook_user_delete($account) 响应用户删除 hook_user_insert(&$edit, $account, $category) 用户账号建立时 hook_user_load($users) 当从数据库中载入user对象时的动作 hook_user_login(&$edit, $account) 用户登录 hook_user_logout($account) 用户登出 hook_user_operations() 增加一块用户操作 hook_user_role_delete($role) 通知其它模块用户角色已删除 hook_user_role_insert($role) 通知其它模块用户角色已增加 hook_user_role_update($role) 通知其它模块用户角色已更新 hook_user_update(&$edit, $account, $category) 一个用户账号更新时 hook_user_view($account, $viewmode) 用户账号信息显示时 hook_user_view_alter(&$build) 用户创建时,模块可以修改结果信息 -------------------------------------------------------------------------------------- 警告:不要混淆许多用户钩子中的参数$account和全局$user对象,$account参数是当前操作的用户对象,而全局$user对象是指当前登录的用户,二者通常,但不总是一样。