ThinkCMF基于ThinkPHP开发,同时支持PHP-FPM和Swoole双模式;支持大数据量和多种缓存方式;数据库读写分离和集群部署。是一款非常不错的系统,小编今天就以替换短信接口为例带大家进行二次开发,我们使用的短信接口是我们短信宝短信群发平台的短信接口,我们短信宝短信群发平台非常稳定,发送速度快,注册就送测试短信,推荐大家使用
插件的目录结构如下:
├─smsbao_sms插件目录
│ ├─config.php 短信配置文件
│ ├─SmsbaoSmsPlugin.php 短信发送核心文件
下面具体给大家说一下每个文件的作用及代码,config.php是插件的短信配置文件 代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<?php return [ 'sms_user' => [ // 在后台插件配置表单中的键名 ,会是config[text] 'title' => '短信宝账号' , // 表单的label标题 'type' => 'text' , // 表单的类型:text,password,textarea,checkbox,radio,select等 'value' => '' , // 表单的默认值 'tip' => '主帐号,对应官网短信宝账号' //表单的帮助提示 ], 'sms_pwd' => [ // 在后台插件配置表单中的键名 ,会是config[text] 'title' => '短信宝密码' , // 表单的label标题 'type' => 'password' , // 表单的类型:text,password,textarea,checkbox,radio,select等 'value' => '' , // 表单的默认值 'tip' => '对应官网短信宝登录密码' //表单的帮助提示 ], 'sms_sign' => [ // 在后台插件配置表单中的键名 ,会是config[text] 'title' => '短信宝签名' , // 表单的label标题 'type' => 'text' , // 表单的类型:text,password,textarea,checkbox,radio,select等 'value' => '' , // 表单的默认值 'tip' => '对应短信宝官网申请的签名' //表单的帮助提示 ], 'template_id' => [ // 在后台插件配置表单中的键名 ,会是config[text] 'title' => '模板' , // 表单的label标题 'type' => 'text' , // 表单的类型:text,password,textarea,checkbox,radio,select等 'value' => '您的验证码是$code。如非本人操作,请忽略本短信' , // 表单的默认值 'tip' => '模板,填写短信宝后台申请的模板' //表单的帮助提示 ], ]; |
SmsbaoSmsPlugin.php 短信发送核心文件 实现了原有sendMobileVerificationCode钩子函数 代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
<?php namespace plugins\smsbao_sms; use cmf\lib\Plugin; class SmsbaoSmsPlugin extends Plugin { public $info = [ 'name' => 'SmsbaoSms' , 'title' => '短信宝-短信插件' , 'description' => '短信宝-短信插件' , 'status' => 1, 'author' => 'smsbao' , 'version' => '1.0' ]; public $hasAdmin = 0; //插件是否有后台管理界面 // 插件安装 public function install() { return true ; //安装成功返回true,失败false } // 插件卸载 public function uninstall() { return true ; //卸载成功返回true,失败false } //实现钩子方法 public function sendMobileVerificationCode($param) { $mobile = $param[ 'mobile' ]; //手机号 $code = $param[ 'code' ]; //验证码 $config = $ this ->getConfig(); $statusStr = array( "0" => "短信发送成功" , "-1" => "参数不全" , "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!" , "30" => "密码错误" , "40" => "账号不存在" , "41" => "余额不足" , "42" => "帐户已过期" , "43" => "IP地址限制" , "50" => "内容含有敏感词" ); $user = $config[ 'sms_user' ]; //短信平台帐号 $pass = md5($config[ 'sms_pwd' ]); //短信平台密码 $content= '【' .$config[ 'sms_sign' ]. '】' .str_replace( '$code' ,$code,$config[ 'template_id' ]); //要发送的短信内容 $phone = $mobile; //要发送短信的手机号码 $sendurl = $smsapi. "sms?u=" .$user. "&p=" .$pass. "&m=" .$phone. "&c=" .urlencode($content); $result = file_get_contents($sendurl) ; if ($result == '0' ){ //发送成功 $result = [ 'error' =>0, 'message' =>$statusStr[$result] ]; } else { $result = [ 'error' =>-1, 'message' =>$statusStr[$result] ]; } return $result; } } |
经过上面的替换,短信宝的短信平台已经替换成功了,可以正常使用了。进行测试发送:
报备一下短信宝的VIP模板,这样就可以走短信宝的优质通道了,即便遇到敏感文字我们都不会人工审核,短信内容3~5秒就可送达。
另外:我们已经开发好完整的ThinkCMFV6.0.7短信宝插件,点击此链接 下载及查看安装流
最新更新
电商类
CMS类
微信类