2010-08-28 50 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