回答:
次のコードを使用して、テストサイトでテストを行いました。
function code_testing_user_login(&$edit, $account) {
watchdog('code_testing', 'User name: %name, user access: %access, user login: %login', array('%name' => $account->name, '%access' => $account->access, '%login' => $account->login), WATCHDOG_DEBUG);
}
次に、テストユーザーを作成し、そのアカウントでログインしました。私が書いたコードは、次のメッセージを出力します。
ユーザー名:test、ユーザーアクセス:0、ユーザーログイン:1340038458
$account->loginhook_user_login()が呼び出されたときに、ユーザーはすでにログインしているため使用できません。ユーザーがすでにログインしているかどうかを確認する唯一の方法は、を確認すること$account->accessです。
function mymodule_user_login(&$edit, $account) {
if ($account->access == 0) {
// The user has never logged in before.
}
}
$account->accessタイムスタンプであるため、負になることはありません。PHP_INT_MAXただし、その値がより大きい場合、その値はPHPからマイナスと見なされます。(PHPの整数は符号付きでありPHP_INT_MAX、それらが持つことができる最大の正の値です。)