toxic

备忘录

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
下面是$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对象是指当前登录的用户,二者通常,但不总是一样。

 

posted on 2013-01-23 16:58  toxic  阅读(373)  评论(0编辑  收藏  举报