Sms.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php namespace Place\Lib;
  2. use Dever;
  3. class Sms
  4. {
  5. # 发送短信验证码
  6. public function sendCode($mobile, $state = true)
  7. {
  8. $day = date('Ymd', time());
  9. # 检测当前手机号最新一次发送时间,不允许一分钟之内发送
  10. $param['day'] = $day;
  11. $param['mobile'] = $mobile;
  12. # 检测当前手机号今天已经发送多少验证码了
  13. $info = Dever::db('place/sms_code')->count($param);
  14. if ($info >= 1) {
  15. $check = Dever::db('place/sms_code')->find($param);
  16. if ($check) {
  17. if (time() - $check['cdate'] < 60) {
  18. Dever::alert('请不要在一分钟之内申请多次验证码,请您稍后再试');
  19. }
  20. }
  21. }
  22. $total = 10;
  23. if ($info >= $total) {
  24. Dever::alert('很抱歉,您已经申请获取验证码超过' . $total . '次,今天您已经无法获取验证码了,请您明天再来');
  25. }
  26. $code = $this->createCode();
  27. # 启动发送
  28. $param['mobile'] = $mobile;
  29. $param['TemplateCode'] = 'SMS_216755222';
  30. $param['TemplateParam'] = array('code' => $code);
  31. $param['log'] = true;
  32. if ($state) {
  33. $result = Dever::load('account', 'api')->run('aliyun', 'sms_code', $param);
  34. }
  35. # 记录当前的验证码
  36. $insert = array();
  37. $insert['mobile'] = $mobile;
  38. $insert['day'] = $day;
  39. $insert['code'] = $code;
  40. $insert['status'] = 1;
  41. $insert['result'] = Dever::json_encode($result);
  42. $id = Dever::db('place/sms_code')->insert($insert);
  43. $msg = '验证码已发送至您的手机,请注意查收,十分钟之内有效';
  44. return $code;
  45. }
  46. public function checkCode($mobile = false, $code = false, $update = 1)
  47. {
  48. if ($code && $mobile) {
  49. $info = Dever::db('place/sms_code')->find(array('mobile' => $mobile), array('order' => 'id desc'));
  50. if ($info && $info['status'] == 1 && $code == $info['code']) {
  51. if ($update == 1) {
  52. Dever::db('place/sms_code')->update($info['id'], array('status' => 2));
  53. }
  54. return true;
  55. }
  56. }
  57. return false;
  58. }
  59. private function createCode()
  60. {
  61. return \Dever\Helper\Str::rand(4, 0);
  62. }
  63. }