作成日:2018-08-21, 更新日:2018-08-21
基本
FuelPHPのユーザーテーブルを「users」として、最終ログイン日のカラム名が「last_login」のとき
・ログインしたときに「users.last_login」が更新される
発生した問題と状況
▼設定
・ログイン有効期限を30日。ブラウザを閉じてもログアウトはされない
▼「最終ログイン日からn日経過したユーザー」という条件
・「users.last_login」と「現在:time()」と「n日」から条件式作成
▼結果
・数日前にアクセスした人が条件にひっかかる。
→n日以上前にログイン。その後、有効期限が切れる前に何度かアクセス。
▼調査して気付いたこと
・「\Auth::check()」時に「users.last_login」は更新されない
・「\Session::rotate()」しても「users.last_login」は更新されない
対応
if ( \Auth::check() ) { // 「users.last_login」を書き換える // ログインしている人用の処理 } else { // ログインしていない人用の処理 }
▼下記はダメ
\Auth::update_user( array('last_login'=>time()) );
※「last_login」ではなく「profile_fields」に追加される。
手動で「users.last_login」を書き換えるクエリを発行する必要あり。