SysLoginFail.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /**
  3. * +----------------------------------------------------------------------
  4. * | 管理员登录日志模型
  5. * +----------------------------------------------------------------------
  6. */
  7. namespace app\model;
  8. // 引入框架内置类
  9. use app\model\Base;
  10. class SysLoginFail extends Base
  11. {
  12. protected $pk = 'ip';
  13. /**
  14. * 检测登录 ip
  15. * @param string $ip 登录ip
  16. * @param int $time 错误时间
  17. * @return bool
  18. */
  19. public static function checkIp(string $ip, int $time): bool
  20. {
  21. $maxNums = 10;
  22. $loginFail = self::find($ip);
  23. return empty($loginFail) || $time - $loginFail->time > 3600 || $loginFail->num > $maxNums ? true : false;
  24. }
  25. /**
  26. * 记录登录错误次数和最后错误时间
  27. * @param string $ip 登录ip
  28. * @param int $time 错误时间
  29. */
  30. public static function saveFail(string $ip, int $time)
  31. {
  32. $loginFail = self::find($ip);
  33. if ($loginFail) {
  34. $loginFail->num += 1;
  35. $loginFail->lasttime = $time;
  36. } else {
  37. $loginFail = new static();
  38. $loginFail->ip = $ip;
  39. $loginFail->num = 1;
  40. $loginFail->lasttime = $time;
  41. }
  42. $loginFail->save();
  43. }
  44. }