手动登录用户

Mar*_*son 1 drupal login login-script drupal-6

我正在一个drupal网站上工作,我允许用户在发布内容的同时登录.我已经成功地将电子邮件和密码字段添加到原始表单中,但我仍然不知道应该如何实际登录用户.(我的计划是在创建内容之前在验证步骤中执行此操作,以使登录用户所有者访问内容).

我可以在user.module API中找到三个以某种方式看起来正确的函数:

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

goo*_*orp 6

一旦您检查了用户名/密码并发现他们验证并获得$uid了用户,您将执行以下操作:

$account = user_load($uid))
global $user;
$user = $account;
user_authenticate_finalize($form_state['values']);
Run Code Online (Sandbox Code Playgroud)

因此,您覆盖全局$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.
}
Run Code Online (Sandbox Code Playgroud)