2010-08-28 51 views
1

我正在开发一个允许用户在发布内容的同时登录的drupal站点。我已经成功地将电子邮件&密码字段添加到原始表单中,但我坚持如何实际登录用户。 (我的计划是在创建内容之前在验证步骤中执行此操作,以使登录用户拥有者能够访问内容)。手动登录用户

我可以找到user.module API三大功能,不知怎的,期待权:

现在,我的问题是哪一个呢?我是否在正确的轨道上?

回答

6

检查完用户名/密码,并发现他们验证,并得到了用户的$uid,你会做这样的事情:

$account = user_load($uid)) 
global $user; 
$user = $account; 
user_authenticate_finalize($form_state['values']); 

所以你覆盖全球$user对象和呼叫user_authenticate_finalize

更新:
做验证,并一步登录应该是这样的:

$account = user_load(array(
    'name' => $form_values['name'], 
    'pass' => trim($form_values['pass']), 
    'status' => 1) 
); 
if ($account && !drupal_is_denied('mail', $account->mail) { 
    global $user; 
    $user = $account; 
    user_authenticate_finalize($form_state['values']); 
} 
else { 
    // Raise validation error. 
} 
+0

那么我如何验证并获得UID? – 2010-08-28 19:19:35

+0

这样做。真棒帮助人,谢谢。 – 2010-08-30 22:09:27