1

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

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

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

4

1 回答 1

7

一旦您检查了用户名/密码并发现他们验证并获得了$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.
}
于 2010-08-28T18:24:39.503 回答