PassServer.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. namespace App\Servers;
  3. /**
  4. * 密码服务
  5. */
  6. class PassServer
  7. {
  8. /**
  9. * 错误信息
  10. * @var string
  11. */
  12. private $errorMsg = '';
  13. private $password = '';
  14. private $encrypt = '';
  15. private function __construct($password = '', $encrypt = '')
  16. {
  17. $this->setPassword($password);
  18. $this->setEncrypt($encrypt);
  19. }
  20. /**
  21. * 创建对象
  22. * @param string $password
  23. * @param string $encrypt
  24. * @return PassServer
  25. */
  26. static function creatServer($password = '', $encrypt = '')
  27. {
  28. return new PassServer($password, $encrypt);
  29. }
  30. /**
  31. * @return string
  32. */
  33. public function getPassword(): string
  34. {
  35. return $this->password;
  36. }
  37. /**
  38. * @param string $password
  39. */
  40. public function setPassword($password = ''): void
  41. {
  42. if (!empty($password)) $this->password = $password;
  43. }
  44. /**
  45. * @return string
  46. */
  47. public function getEncrypt(): string
  48. {
  49. return $this->encrypt;
  50. }
  51. /**
  52. * @param string $encrypt
  53. */
  54. public function setEncrypt($encrypt = ''): void
  55. {
  56. if (!empty($encrypt)) $this->encrypt = $encrypt;
  57. }
  58. /**
  59. * @return string
  60. */
  61. public function getErrorMsg(): string
  62. {
  63. return $this->errorMsg;
  64. }
  65. /**
  66. * 加密字符串
  67. * @param $length
  68. * @return null|string
  69. */
  70. public function getRandChar($length = 6)
  71. {
  72. $str = null;
  73. $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
  74. $max = strlen($strPol) - 1;
  75. for ($i = 0; $i < $length; $i++) {
  76. $str .= $strPol[rand(0, $max)];//rand($min,$max)生成介于min和max两个数之间的一个随机整数
  77. }
  78. return $str;
  79. }
  80. /**
  81. * 创建会员密码
  82. * @return array|false
  83. */
  84. function creatPassword()
  85. {
  86. if (empty($this->password)) {
  87. $this->errorMsg = "密码不能为空";
  88. return false;
  89. }
  90. if (empty($this->encrypt)) $this->encrypt = $this->getRandChar();
  91. $password = $this->memberPassword();
  92. return ['password' => $password, 'encrypt' => $this->encrypt];
  93. }
  94. /**
  95. * 验证密码
  96. * @param $member_pass
  97. * @return bool
  98. */
  99. public function verifyPass($member_pass)
  100. {
  101. $str = $this->memberPassword();
  102. return $member_pass == $str;
  103. }
  104. /**
  105. * 密码加密
  106. * @return string
  107. */
  108. function memberPassword()
  109. {
  110. $str = md5($this->password) . md5($this->encrypt);
  111. return md5($str);
  112. }
  113. /**
  114. * 生成登录token
  115. * @param $id
  116. * @return string
  117. */
  118. public function getRiderToken($id)
  119. {
  120. $token = md5($id . 'riderToken' . time());
  121. return $token;
  122. }
  123. /**
  124. * 生成会员登录token
  125. * @param $m_id
  126. * @return string
  127. */
  128. public function getMemberToken($m_id)
  129. {
  130. $token = md5($m_id . 'memberToken' . time());
  131. return $token;
  132. }
  133. /**
  134. * 生成登录token
  135. * @param $id
  136. * @return string
  137. */
  138. public function getShopToken($id)
  139. {
  140. $token = md5($id . 'shopToken' . time());
  141. return $token;
  142. }
  143. /**
  144. * 生成登录token
  145. * @param $id
  146. * @return string
  147. */
  148. public function getAgentToken($id)
  149. {
  150. $token = md5($id . 'agentToken' . time());
  151. return $token;
  152. }
  153. }