SmsLogic.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. declare(strict_types=1);
  3. namespace app\logics;
  4. use app\model\Sms;
  5. /**
  6. * 用户登陆权限验证
  7. */
  8. class SmsLogic
  9. {
  10. /**
  11. * 验证码生成
  12. */
  13. private function getCode($length){
  14. $s = '9876543210';
  15. $code = '';
  16. for($i=0;$i<$length;$i++){
  17. $r = rand(0,9);
  18. $code .=$s[$r];
  19. }
  20. return $code;
  21. }
  22. /**
  23. * 发送验证码
  24. */
  25. public function sendSms($phone, $purpose, $content)
  26. {
  27. $code = $this->getCode(6);
  28. $data = [
  29. 'phone'=>$phone,
  30. 'code'=>$code,
  31. 'effective_time'=>time()+60*15,
  32. 'purpose'=>$purpose,
  33. ];
  34. $content = str_replace(['%code%', '%CODE%'], $code, $content);
  35. $rs = sendSms($phone, $content);
  36. if ($rs === false) return false;
  37. // 验证码保存
  38. Sms::create($data);
  39. return true;
  40. }
  41. /**
  42. * 验证码验证
  43. */
  44. public function checkCode($phone, $purpose, $code)
  45. {
  46. $data = Sms::where(['phone'=>$phone, 'purpose'=>$purpose])->order('id desc')->find();
  47. if($data['code'] != $code || $data['state'] == 1) return false;
  48. $data->state = 1;
  49. $data->save();
  50. return true;
  51. }
  52. }