UserUtils.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. /**
  3. * UserUtils.php UTF-8
  4. * 用户面板
  5. *
  6. * @date : 2018/4/24 21:58
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huolib\utils;
  13. use huolib\status\MemberStatus;
  14. use huolib\tool\KeywordCheck;
  15. use huolib\tool\StrUtils;
  16. class UserUtils {
  17. const USERNAME_MIN_LEN = 4;
  18. const USERNAME_MAX_LEN = 32;
  19. const NICKNAME_MIN_LEN = 4;
  20. const NICKNAME_MAX_LEN = 32;
  21. const PASSWORD_MIN_LEN = 6;
  22. const PASSWORD_MAX_LEN = 32;
  23. /**
  24. * 校验用户名是否是手机号
  25. *
  26. * @param $username
  27. *
  28. * @return int
  29. */
  30. public static function checkNameMobile($username) {
  31. if (StrUtils::checkPhone($username)) {
  32. return MemberStatus::USERNAME_LIKE_MOBILE;
  33. }
  34. return MemberStatus::NO_ERROR;
  35. }
  36. /**
  37. * @param $username
  38. * @param $password
  39. *
  40. * @return int
  41. */
  42. public static function checkRegister($username, $password) {
  43. if (empty($username)) {
  44. return MemberStatus::USERNAME_EMPTY;
  45. }
  46. if (mb_strlen($username, 'utf-8') < self::USERNAME_MIN_LEN) {
  47. return MemberStatus::USERNAME_TOO_SHORT;
  48. }
  49. if (mb_strlen($username, 'utf-8') > self::USERNAME_MAX_LEN) {
  50. return MemberStatus::USERNAME_TOO_LONG;
  51. }
  52. if (preg_match("/\s/", $username)) {
  53. return MemberStatus::USERNAME_BAD_CHAR;
  54. }
  55. if (preg_match("/^ZN/i", $username)) {
  56. return MemberStatus::USERNAME_BAD_CHAR;
  57. }
  58. $_um_chk = UserUtils::checkNameMobile($username);
  59. if (MemberStatus::NO_ERROR == $_um_chk) {
  60. if (!preg_match('/^(?![^a-zA-Z]+$).{4,}$/', $username)) {
  61. return MemberStatus::USERNAME_BAD_CHAR;
  62. }
  63. }
  64. if (false == StrUtils::checkEnStrAndNum($username)) {
  65. return MemberStatus::USERNAME_BAD_CHAR;
  66. }
  67. if (empty($password)) {
  68. return MemberStatus::PASSWORD_EMPTY;
  69. }
  70. if (preg_match("/\s/", $password)) {
  71. return MemberStatus::PASSWORD_BAD_CHAR;
  72. }
  73. if (strlen($password) > self::PASSWORD_MAX_LEN) {
  74. return MemberStatus::PASSWORD_TOO_LONG;
  75. }
  76. if (strlen($password) < self::PASSWORD_MIN_LEN) {
  77. return MemberStatus::PASSWORD_TOO_SHORT;
  78. }
  79. if (false == StrUtils::checkPrintStr($password)) {
  80. return MemberStatus::PASSWORD_BAD_CHAR;
  81. }
  82. if (KeywordCheck::hasKeyWord($username)) {
  83. return MemberStatus::USERNAME_SENSITIVE;
  84. }
  85. return MemberStatus::NO_ERROR;
  86. }
  87. /**
  88. * @param $password
  89. *
  90. * @return int
  91. */
  92. public static function checkPassword($password) {
  93. if (empty($password)) {
  94. return MemberStatus::PASSWORD_EMPTY;
  95. }
  96. if (preg_match("/\s/", $password)) {
  97. return MemberStatus::PASSWORD_BAD_CHAR;
  98. }
  99. if (strlen($password) > self::PASSWORD_MAX_LEN) {
  100. return MemberStatus::PASSWORD_TOO_LONG;
  101. }
  102. if (strlen($password) < self::PASSWORD_MIN_LEN) {
  103. return MemberStatus::PASSWORD_TOO_SHORT;
  104. }
  105. return MemberStatus::NO_ERROR;
  106. }
  107. /**
  108. * 校验登陆参数
  109. *
  110. * @param $username
  111. * @param $password
  112. *
  113. * @return int
  114. */
  115. public static function checkLogin($username, $password) {
  116. if (empty($username)) {
  117. return MemberStatus::USERNAME_EMPTY;
  118. }
  119. if (empty($password)) {
  120. return MemberStatus::PASSWORD_EMPTY;
  121. }
  122. return MemberStatus::NO_ERROR;
  123. }
  124. public static function checkNickname($nickname) {
  125. if (empty($nickname)) {
  126. return MemberStatus::NICKNAME_EMPTY;
  127. }
  128. if (mb_strlen($nickname, 'utf-8') < self::NICKNAME_MIN_LEN) {
  129. return MemberStatus::NICKNAME_TOO_SHORT;
  130. }
  131. if (mb_strlen($nickname, 'utf-8') > self::NICKNAME_MAX_LEN) {
  132. return MemberStatus::NICKNAME_TOO_LONG;
  133. }
  134. if (KeywordCheck::hasKeyWord($nickname)) {
  135. return MemberStatus::NICKNAME_SENSITIVE;
  136. }
  137. return MemberStatus::NO_ERROR;
  138. }
  139. }