2012-12-18 79 views
2

我需要創建一個成功登錄並拒絕登錄的日誌。我必須保存那個嘗試訪問的用戶。創建成功登錄的日誌

我不知道如果hook_user_login是完成此任務的正確方法。

欣賞任何指導調查。謝謝:)

+1

感謝您的語法檢查 – mjimcua

+1

我不知道是誰投票結束,但這是一個可以回答的問題。其實我回答了。 – kiamlaluno

+1

@kiamlaluno也是編程相關。有時我想知道人們是否只是通過投票來獲得他們的徽章... –

回答

4

hook_user_login()當用戶成功登錄時纔會激活。

鉤子你應該實現是hook_watchdog()

function hook_watchdog(array $log_entry) { 
    switch ($log_entry['message']) { 
    case 'Login attempt failed for %user.': 
     // Somebody tried logging in as $log_entry['variables']['%user'], 
     // and failed. 
     break; 

    case 'Session opened for %name.': 
     // The login for $log_entry['variables']['%name'] was successful. 
     break; 
    } 
} 

注意:

  • 兩個$log_entry['variables']['%user'](何時登錄失敗)和$log_entry['variables']['%name'](用於當登錄成功)的用戶名,而不是用戶對象。

  • 當登錄成功時,$log_entry['user']是登錄用戶的用戶對象,'$ log_entry ['uid']是用戶標識。

  • 其他變量,可能是有幫助的是:

    • $log_entry['request_uri']
    • $log_entry['referer']
    • $log_entry['ip']
    • $log_entry['timestamp']
  • 的Drupal已經會記錄在管理這些事件/報告/ DBLOG;你只需要按類型(用戶)過濾它們。

    screenshot

    有可能是實現hook_watchdog()保持日誌中的任何失敗/登錄成功的一個原因,但:數據庫日誌被限制爲N個項目(其中N可以是100,1000,10000 100000 ,1000000,基於在admin/config/development/logging上設置的內容),它用於傳遞給watchdog()的所有消息;一旦達到限制,舊信息就會丟失。

+0

非常感謝。感謝你的好回答,我瞭解了很多事情。我從drupal開始,找到了解這麼多知識的人,並且非常友好地回答詳細的問題,這是一種樂趣。再次感謝你 :) – mjimcua