dever 5 years ago
parent
commit
64c4a67f87
2 changed files with 41 additions and 22 deletions
  1. 15 4
      config/base.php
  2. 26 18
      src/Lib/Base.php

+ 15 - 4
config/base.php

@@ -19,12 +19,23 @@ $config['base'] = array
 		'debug' => true,
 		# 发送短信的接口
 		'url' => '',
+		# 发送方法 get、post
+		'method' => 'get',
+		# 是否json编码
+		'json' => false,
+		# header信息
+		'header' => '',
+		# body信息
+		'body' => 'param={code}&phone={mobile}&sign={sign}&skin={skin}',
+		# 短信模板 发送短信时,请加上参数skin=1
+		'skin' => array
+		(
+			1 => '{sign}您好,您的验证码为{code},十分钟之内有效。',
+		),
 		# 短信签名
 		'sign' => '【DEVER】',
-		# 短信签名类型,1为放置在内容之前,2为放置在内容之后
-		'signType' => 2,
-		# 短信内容
-		'msg' => '您好,您的验证码为{code},十分钟之内有效。',
+		# 验证码有效期 默认10分钟
+		'timeout' => 600,
 		# 一天之内的最大发送次数,默认为10次
 		'total' => 10,
 		# 不允许多久之内重复发送,默认为60秒

+ 26 - 18
src/Lib/Base.php

@@ -91,39 +91,47 @@ class Base
         $insert['add_code'] = $code->mcode;
         $id = Dever::load('passport/code-insert', $insert);
 
-        # 发送验证码到手机上
-        //$text = '您好,您的验证码为' . $code->mcode . ',十分钟之内有效。';
-        $text = str_replace('{code}', $code->mcode, Dever::config('base', 'project')->mobileCode['msg']);
-
         # 启动发送
-        $this->send($mobile, $text, $id);
+        $this->send($mobile, $insert['add_code'], $id);
 
-        $this->save->add(self::MCODE, $mobile . '_' . $code->mcode, 600);
+        $this->save->add(self::MCODE, $mobile . '_' . $code->mcode, Dever::config('base', 'project')->mobileCode['timeout']);
 
         return $code->mcode;
     }
 
-    private function send($mobile, $content, $id)
+    private function send($mobile, $code, $id)
     {
         $url = Dever::config('base', 'project')->mobileCode['url'];
 
         if (!$url) {
             return;
         }
-        if (Dever::config('base', 'project')->mobileCode['signType'] == 1) {
-            $content = Dever::config('base', 'project')->mobileCode['sign'] . $content;
-        } else {
-            $content .= Dever::config('base', 'project')->mobileCode['sign'];
-        }
 
-        $param['phone'] = $mobile;
-        $param['message'] = $content;
-        $param['seqid'] = $id + 1000;
-        $param['smspriority'] = 1;
+        $content = Dever::config('base', 'project')->mobileCode['body'];
+
+        $content = $this->replace($content, $mobile, $code);
+
+        parse_str($content, $param);
 
-        $url .= http_build_query($param);
+        $type = Dever::config('base', 'project')->mobileCode['method'];
+        $json = Dever::config('base', 'project')->mobileCode['json'];
+        $header = Dever::config('base', 'project')->mobileCode['header'];
 
-        Dever::curl($url);
+        Dever::curl($url, $param, $type, $json, $header);
+    }
+
+    private function replace($content, $mobile = '', $code = '')
+    {
+        $skin = Dever::config('base', 'project')->mobileCode['skin'];
+        $skin_key = Dever::input('skin', 1);
+        if (isset($skin[$skin_key])) {
+            $skin = $skin[$skin_key];
+        } else {
+            $skin = array_shift($skin);
+        }
+        $config = array('{code}', '{mobile}', '{sign}', '{skin}');
+        $replace = array($code, $mobile, Dever::config('base', 'project')->mobileCode['sign'], $skin);
+        return str_replace($config, $replace, $content);
     }
 
     protected function refer($state = false)