|
@@ -14,27 +14,91 @@ class sms_helper
|
|
|
const repeat_mintime = 60;
|
|
|
const code_expire = 5 * 60;
|
|
|
|
|
|
- static public function send($mobile,$type)
|
|
|
+ const register = 1;
|
|
|
+ const resetpass = 2;
|
|
|
+ const getbonus = 3;
|
|
|
+ const getwxbind = 4;
|
|
|
+ const getfcode = 5;
|
|
|
+ const type_max = 6;
|
|
|
+
|
|
|
+ public function send_code($mobile,$type,$fcheck = true)
|
|
|
{
|
|
|
- static $types = array('register', 'resetpass', 'getbonus','getwxbind','getfcode');
|
|
|
- if (!in_array($type, $types)) {
|
|
|
- return array('code' => errcode::ErrParamter, 'msg' => "错误的类型参数: type={$type}");
|
|
|
+ if($type < 0 || $type >= self::type_max) {
|
|
|
+ return ['code' => errcode::ErrParamter, 'msg' => "错误的类型参数: type={$type}"];
|
|
|
}
|
|
|
|
|
|
- if ($type == 'register') {
|
|
|
- $itype = Sms::register_code;
|
|
|
+ if($fcheck)
|
|
|
+ {
|
|
|
+ $cur_time = time();
|
|
|
+ if(isset($_SESSION['sms_code'][$type]))
|
|
|
+ {
|
|
|
+ $last_time = $_SESSION['sms_code'][$type]['last_time'];
|
|
|
+ if($cur_time - $last_time < self::repeat_mintime) {
|
|
|
+ return ['code' => errcode::ErrSmsLessRepeateMinTime, 'msg' => errcode::msg(errcode::ErrSmsLessRepeateMinTime)];
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- elseif ($type == 'resetpass') { //重置密码需要在登录的状态下才可以执行。
|
|
|
- $itype = Sms::resetpass_code;
|
|
|
+
|
|
|
+
|
|
|
+ $code = makeSmscode();
|
|
|
+ Log::record("sms code = {$code}",Log::DEBUG);
|
|
|
+// QueueClient::push('sendSMS', ['mobile'=>$mobile,'type'=>$type,'datas' => ['code'=>$code,'time'=>'5']]);
|
|
|
+
|
|
|
+ $logic = Logic('queue');
|
|
|
+ $logic->send_sms( ['mobile'=>$mobile,'type'=>$type,'datas' => ['code'=>$code,'time'=>'5']]);
|
|
|
+ $status = 0;
|
|
|
+ if ($status == 0)
|
|
|
+ {
|
|
|
+ if($fcheck)
|
|
|
+ {
|
|
|
+ if(isset($_SESSION['sms_code'][$type])) {
|
|
|
+ $count = $_SESSION['sms_code'][$type]['count'];
|
|
|
+ } else {
|
|
|
+ $count = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ $_SESSION['sms_code'][$type] = ['count' => $count + 1, 'code' => $code, 'last_time' => time(),'mobile' => $mobile];
|
|
|
+ }
|
|
|
+
|
|
|
+ return ['code' => 200];
|
|
|
+ } else {
|
|
|
+ $msg = self::get_errmsg($status,$type);
|
|
|
+ return ['code' => errcode::ErrSms, 'msg' => $msg];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public function cast_type($stype)
|
|
|
+ {
|
|
|
+ static $types = ['register', 'resetpass', 'getbonus','getwxbind','getfcode'];
|
|
|
+ if (!in_array($stype, $types)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($stype == 'register') {
|
|
|
+ $itype = sms_helper::register;
|
|
|
+ }
|
|
|
+ elseif ($stype == 'resetpass') { //重置密码需要在登录的状态下才可以执行。
|
|
|
+ $itype = sms_helper::resetpass;
|
|
|
+ }
|
|
|
+ elseif ($stype == 'getbonus') {
|
|
|
+ $itype = sms_helper::getbonus;
|
|
|
+ }
|
|
|
+ elseif($stype == 'getwxbind') {
|
|
|
+ $itype = sms_helper::getwxbind;
|
|
|
}
|
|
|
- elseif ($type == 'getbonus') {
|
|
|
- $itype = Sms::getbonus_code;
|
|
|
+ elseif($stype == 'getfcode') {
|
|
|
+ $itype = sms_helper::getfcode;
|
|
|
}
|
|
|
- elseif($type == 'getwxbind') {
|
|
|
- $itype = Sms::getbind_code;
|
|
|
+ else {
|
|
|
+ return false;
|
|
|
}
|
|
|
- elseif($type == 'getfcode') {
|
|
|
- $itype = Sms::getfcode_code;
|
|
|
+ return $itype;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function send($mobile,$stype)
|
|
|
+ {
|
|
|
+ $itype = $this->cast_type($stype);
|
|
|
+ if($itype == false) {
|
|
|
+ return ['code' => errcode::ErrParamter, 'msg' => "错误的类型参数: type={$stype}"];
|
|
|
}
|
|
|
|
|
|
$cur_time = time();
|
|
@@ -42,7 +106,7 @@ class sms_helper
|
|
|
{
|
|
|
$last_time = $_SESSION['sms_code'][$itype]['last_time'];
|
|
|
if($cur_time - $last_time < self::repeat_mintime) {
|
|
|
- return array('code' => errcode::ErrSmsLessRepeateMinTime, 'msg' => errcode::msg(errcode::ErrSmsLessRepeateMinTime));
|
|
|
+ return ['code' => errcode::ErrSmsLessRepeateMinTime, 'msg' => errcode::msg(errcode::ErrSmsLessRepeateMinTime)];
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -50,7 +114,7 @@ class sms_helper
|
|
|
$code = makeSmscode();
|
|
|
Log::record("sms code = {$code}",Log::DEBUG);
|
|
|
//Logic('queue')->sendSMS(array('mobile'=>$mobile,'type'=>$itype,'datas' => array('code'=>$code,'time'=>'5')));
|
|
|
- QueueClient::push('sendSMS',array('mobile'=>$mobile,'type'=>$itype,'datas' => array('code'=>$code,'time'=>'5')));
|
|
|
+ QueueClient::push('sendSMS', ['mobile'=>$mobile,'type'=>$itype,'datas' => ['code'=>$code,'time'=>'5']]);
|
|
|
$status = 0;
|
|
|
if ($status == 0)
|
|
|
{
|
|
@@ -64,17 +128,16 @@ class sms_helper
|
|
|
$_SESSION['sms_code'][$itype]['last_time'] = time();
|
|
|
$_SESSION['sms_code'][$itype]['mobile'] = $mobile;
|
|
|
|
|
|
- return array('code' => 200);
|
|
|
+ return ['code' => 200];
|
|
|
} else {
|
|
|
$msg = self::get_errmsg($status,$itype);
|
|
|
- return array('code' => errcode::ErrSms, 'msg' => $msg);
|
|
|
+ return ['code' => errcode::ErrSms, 'msg' => $msg];
|
|
|
}
|
|
|
- return array('code' => 200);
|
|
|
}
|
|
|
|
|
|
static public function send_nostore_message($mobile,$type,$datas)
|
|
|
{
|
|
|
- QueueClient::push('sendSMS', array('mobile' => $mobile,'type' => $type, 'datas' => $datas));
|
|
|
+ QueueClient::push('sendSMS', ['mobile' => $mobile,'type' => $type, 'datas' => $datas]);
|
|
|
}
|
|
|
|
|
|
static public function check_code($itype,$code,$mobile)
|
|
@@ -82,7 +145,7 @@ class sms_helper
|
|
|
if(isset($_SESSION['sms_code'][$itype]))
|
|
|
{
|
|
|
if($_SESSION['sms_code'][$itype]['mobile'] != $mobile) {
|
|
|
- return array('code' => errcode::ErrSmscode, 'msg' => '验证手机号和发送验证码手机号不一致.');
|
|
|
+ return ['code' => errcode::ErrSmscode, 'msg' => '验证手机号和发送验证码手机号不一致.'];
|
|
|
}
|
|
|
|
|
|
$tmout = time() - $_SESSION['sms_code'][$itype]['last_time'];
|
|
@@ -91,13 +154,15 @@ class sms_helper
|
|
|
if($code == $_SESSION['sms_code'][$itype]['code']) {
|
|
|
return true;
|
|
|
} else {
|
|
|
- return array('code' => errcode::ErrSmscode, 'msg' => '验证码错误.');
|
|
|
+ return ['code' => errcode::ErrSmscode, 'msg' => '验证码错误.'];
|
|
|
}
|
|
|
- } else {
|
|
|
- return array('code' => errcode::ErrSmscodeExpire, 'msg' => errcode::msg(errcode::ErrSmscodeExpire));
|
|
|
}
|
|
|
- } else {
|
|
|
- return array('code' => errcode::ErrSmscode, 'msg' => '验证码错误.');
|
|
|
+ else {
|
|
|
+ return ['code' => errcode::ErrSmscodeExpire, 'msg' => errcode::msg(errcode::ErrSmscodeExpire)];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return ['code' => errcode::ErrSmscode, 'msg' => '验证码错误.'];
|
|
|
}
|
|
|
}
|
|
|
|