Drupal 6 drupal 6以编程方式登录用户

Drupal 6 drupal 6以编程方式登录用户,drupal-6,Drupal 6,我正在尝试作为表单提交的一部分登录用户,但为什么以下操作不起作用: $user = db_fetch_object(db_query("SELECT * FROM users WHERE mail = '%s' AND pass = '%s'", $mail, md5($pass))); if ($user) { // Authenticate user and log in $params = array( 'name' => $user->name,

我正在尝试作为表单提交的一部分登录用户,但为什么以下操作不起作用:

$user = db_fetch_object(db_query("SELECT * FROM users WHERE mail = '%s' AND pass = '%s'", $mail, md5($pass)));

if ($user) {
    // Authenticate user and log in
    $params = array(
      'name' => $user->name,
      'pass' => trim($user->pass)
    );

    // Authenticate user    
    $account = user_authenticate($params);
}
如果我转储$user,我可以看到正确的值,但是如果我转储帐户,它是空的。

您正在将哈希密码传递给“user\u authenticate()”,而函数需要清除密码(通过加载帐户时,它会间接地对其进行哈希)

因此,将$params数组声明更改为

$params = array(
  'name' => $user->name,
  'pass' => $pass
);
应该让你的榜样起作用


顺便说一句,您可以自己使用
user\u load()
来避免直接查询数据库:

$user = user_load(array('mail' => $mail, 'pass' => trim($pass), 'status' => 1));
'status'=>1
将结果限制为活动用户-当然,如果您真的想允许登录到禁用的帐户,您可以不使用该选项;)