You are here

对象$user

g089h515r806 的头像
Submitted by g089h515r806 on 星期五, 2009-08-07 15:26

老葛的Drupal培训班 Think in Drupal

用户为了登录,必须启用cookies。一个关闭了cookie的用户仍然可以以匿名的身份与Drupal进行交互。
     在引导指令流程的会话阶段,Drupal创建了一个全局$user对象,用来作为当前用户的标识。如果用户没有登录(这样就没有一个会话cookie),那么它将被当作匿名用户对待。创建匿名用户的代码如下所示(位于bootstrap.inc):
 
function drupal_anonymous_user($session = '') {
    $user = new stdClass();
    $user->uid = 0;
    $user->hostname = ip_address();
    $user->roles = array();
    $user->roles[DRUPAL_ANONYMOUS_RID] = 'anonymous user';
    $user->session = $session;
    $user->cache = 0;
    return $user;
}
 
    另一方面,如果用户当前登录了,那么可以通过使用用户的ID来关联表users和sessions,以创建对象$user。两个表中的所有字段都被放到了对象$user中。
 
注意:用户的ID是在用户注册时或者管理员创建用户时所分配的一个整数。这个ID是users表中的主键。
 
    通过向index.php中添加代码global $user;print_r($user);可以很容易的查看$user对象。下面是一个登录用户对象$user的通常结构:
 
stdClass Object (
    [uid]       => 2
    [name]    => Joe Example
    [pass]      => 7701e9e11ac326e98a3191cd386a114b
    [mail]      => joe@example.com
    [mode]      => 0
    [sort]      => 0
    [threshold] => 0
    [theme]     => bluemarine
    [signature] => Drupal rocks!
    [created]  => 1201383973
    [access]    => 1201384439
    [login]     => 1201383989
    [status]    => 1
    [timezone] => -21600
    [language] =>
    [picture]  => sites/default/files/pictures/picture-1.jpg
    [init]      => joe@example.com
    [data]      =>
    [roles]     => Array ( [2] => authenticated user )
    [sid]       => fq5vvn5ajvj4sihli314ltsqe4
    [hostname] => 127.0.0.1
    [timestamp] => 1201383994
    [cache]     => 0
    [session]  => user_overview_filter|a:0:{}
)
 
在上面显示的$user对象中,斜体字段意味着数据来自于sessions表。表6-1解释了$user对象的组成部分:
 
6-1 $user的组成部分
组成                     描述
来自于表users
uid               用户的ID.它是表users的主键,并在Drupal中是唯一的。
name              用户的用户名,当用户登录时输入
pass              用户的MD5哈希密码,当用户登录时进行对比。由于没有保存用户的原始真实密码,所以密码只能被重置,不能被恢复。
mail              用户当前的email地址
 
mode,sort和       特定于用户的评论浏览喜好
threshold
 
theme             如果启用了多个主题,这个代表用户选择的主题。如果用户主题未被安装,Drupal将其转到站点的默认主题。
signature         用户进入他/她的账号页面时所使用的签名。当用户添加一个评论时使用,并且只有当评论模块(comment module)启用时才可见。
created           用户账号创建时的Unix时间戳
access            用户最近一次访问的Unix时间戳
login             用户最近一次成功登录的Unix时间戳
status            1表示良好,0表示被拒绝访问的用户
timezone          用户时区与GMT之间的差异,以秒为单位
language          用户的默认语言。只有在站点上启用了多语言,并且用户通过编辑账号喜好选择了一个语言时,才不为空。
picture           与用户账号相联系的图像文件的路径
init              用户注册时提供的初始email地址
data              由模块存储的任何数据都可放置在这里(参看下一节,“向$user对象存储数据”)
来自于表user_roles
roles             分配给当前用户的角色
来自于表session
sid               通过PHP分配给当前用户会话的会话ID
hostname          用户浏览当前页面时所使用的IP地址
timestamp         一个Unix时间戳,表示用户的浏览器最后一次接收一个完整页面的时间
cache             一个用于per-user caching(参看 includes/cache.inc)的时间戳
session           在用户会话期间,模块可以向这里存储任意的数据。
 

Drupal版本: