待发短信

在线客服
产品支持 短信宝客服
合作渠道 渠道合作
服务咨询

4001-021-502

工作时间

9:00-21:00

PbootCMS_V3.1.2新增短信宝短信接口

PbootCMS是全新内核且永久开源免费的PHP企业网站开发建设管理系统,是一套高效、简洁、 强悍的可免费商用的PHP CMS源码,能够满足各类企业网站开发建设的需要。系统采用简单到想哭的模板标签,只要懂HTML就可快速开发企业网站。小编对他还是比较了解的,今天小编就以新增短信接口为例,给大家讲解一下如何进行二次开发,我们今天讲解的是v3.1.2版本,使用的短信接口是我们短信宝短信群发平台的短信接口,我们短信宝短信群发平台的接口非常稳定,发送速度快,注册就送测试短信,推荐大家使用
1:打开项目:\apps\admin\view\default\system\config.html 新增短信宝页面

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
63
64
65
66
67
68
69
70
71
72
<div class="layui-tab-item">
                <form action="{url./admin/Config/index}" method="post" class="layui-form">
                    <input type="hidden" name="formcheck" value="{$formcheck}" >
                    <div class="layui-form-item">
                        <label class="layui-form-label">是否开启</label>
                        <div class="layui-input-block">
                            <input type="radio" name="sms_status" value="1" {if([$configs.sms_status.value]==1)} checked="checked" {/if} title="是">
                            <input type="radio" name="sms_status" value="0" {if([$configs.sms_status.value]==0)} checked="checked" {/if} title="否">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">短信宝账号</label>
                        <div class="layui-input-inline">
                            <input type="text" name="sms_account"  value="{$configs.sms_account.value}" placeholder="请输入短信宝账号" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">短信宝密码</label>
                        <div class="layui-input-inline">
                            <input type="password" name="sms_pwd" value="{$configs.sms_pwd.value}" placeholder="请输入短信宝密码" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">短信宝签名</label>
                        <div class="layui-input-inline">
                            <input type="text" name="sms_signid"  value="{$configs.sms_signid.value}" placeholder="请输入短信宝签名" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">留言发送短信</label>
                        <div class="layui-input-block">
                            <input type="radio" name="message_send_sms" value="1" {if([$configs.message_send_sms.value]==1)} checked="checked" {/if} title="启用">
                            <input type="radio" name="message_send_sms" value="0" {if([$configs.message_send_sms.value]==0)} checked="checked" {/if} title="禁用">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">表单发送短信</label>
                        <div class="layui-input-block">
                            <input type="radio" name="form_send_sms" value="1" {if([$configs.form_send_sms.value]==1)} checked="checked" {/if} title="启用">
                            <input type="radio" name="form_send_sms" value="0" {if([$configs.form_send_sms.value]==0)} checked="checked" {/if} title="禁用">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">评论发送短信</label>
                        <div class="layui-input-block">
                            <input type="radio" name="comment_send_sms" value="1" {if([$configs.comment_send_sms.value]==1)} checked="checked" {/if} title="启用">
                            <input type="radio" name="comment_send_sms" value="0" {if([$configs.comment_send_sms.value]==0)} checked="checked" {/if} title="禁用">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">信息接收手机号</label>
                        <div class="layui-input-inline">
                            <input type="text" name="sms_send_to"  value="{$configs.sms_send_to.value}" placeholder="请输入信息接收手机号"  class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-input-block">
                            <button class="layui-btn" lay-submit name="submit" value="sms">立即提交</button>
                            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                        </div>
                    </div>
                </form>
            </div>

2:打开项目:apps\home\controller\CommentController.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
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
public function add()
    {
        if ($_POST) {
            
            if ($this->config('comment_status') === '0') {
                error('系统已经关闭评论功能,请到后台开启再试!');
            }
            
            if (time() - session('lastsub') < 10) {
                alert_back('您提交太频繁了,请稍后再试!');
            }
            
            if (! session('pboot_uid') && ! $this->config('comment_anonymous')) {
                if (! ! $backurl = $_SERVER['HTTP_REFERER']) {
                    alert_location("请先注册登录后再评论!", Url::home('member/login'null"backurl=" . urlencode($backurl)));
                else {
                    alert_location("请先注册登录后再评论!", Url::home('member/login'));
                }
            }
            
            // 验证码验证
            $checkcode = strtolower(post('checkcode''var'));
            if ($this->config('comment_check_code') !== '0') {
                if (! $checkcode) {
                    alert_back('验证码不能为空!');
                }
                
                if ($checkcode != session('checkcode')) {
                    alert_back('验证码错误!');
                }
            }
            
            // 接收数据
            
            $status = $this->config('comment_verify') === '0' ? 1 : 0;
            if (! $contentid = request('contentid''int')) {
                alert_back('文章ID未能正常获取,请使用POST或URL参数传递!');
            }
            
            $comment = post('comment');
            
            $data = array(
                'pid' => request('pid''int') ?: 0,
                'contentid' => $contentid,
                'comment' => $comment,
                'uid' => session('pboot_uid'),
                'puid' => request('puid''int'),
                'likes' => 0,
                'oppose' => 0,
                'status' => $status,
                'user_ip' => ip2long(get_user_ip()),
                'user_os' => get_user_os(),
                'user_bs' => get_user_bs(),
                'create_time' => get_datetime(),
                'update_user' => '',
                'update_time' => ''
            );
            
            if ($this->model->addComment($data)) {
                session('lastsub', time()); // 记录最后提交时间
                $this->log('文章' . $contentid . '评论提交成功!');
                if ($this->config('sms_status')) {
                    if ($this->config('comment_send_sms') && $this->config('sms_send_to')) {
                        $sms_subject = "您有新的文章评论信息,请注意查收!";
                        sendsms($this->config(), $this->config('sms_send_to'), $sms_subject);
                    }
                }else{
                    if ($this->config('comment_send_mail') && $this->config('message_send_to')) {
                        $mail_subject = "【" . CMSNAME . "】您有新的文章评论信息,请注意查收!";
                        $mail_body = '评论内容:' . $comment . '<br>';
                        $mail_body .= '<br>来自网站 ' . get_http_url() . ' (' . date('Y-m-d H:i:s') . ')';
                        sendmail($this->config(), $this->config('message_send_to'), $mail_subject, $mail_body);
                    }
                }
                if ($status) {
                    alert_location('评论提交成功!''-1', 1);
                else {
                    alert_location('评论提交成功,请等待管理员审核!''-1', 1);
                }
            else {
                $this->log('文章评论提交失败!');
                alert_back('提交失败!');
            }
        else {
            alert_back('提交失败,请使用POST方式提交!');
        }
    }

3:打开项目:\apps\home\controller\FormController.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
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
 public function index()
    {
        // 在非兼容模式接受地址第二参数值
        if (defined('RVAR')) {
            $_GET['fcode'] = RVAR;
        }
        
        if ($_POST) {
            
            if ($this->config('form_status') === '0') {
                error('系统已经关闭表单功能,请到后台开启再试!');
            }
            
            if (time() - session('lastsub') < 10) {
                alert_back('您提交太频繁了,请稍后再试!');
            }
            
            if (! $fcode = get('fcode''var')) {
                alert_back('传递的表单编码有误!');
            }
            
            if ($fcode == 1) {
                alert_back('表单提交地址有误,留言提交请使用留言专用地址!');
            }
            
            // 验证码验证
            $checkcode = strtolower(post('checkcode''var'));
            if ($this->config('form_check_code') !== '0') {
                if (! $checkcode) {
                    alert_back('验证码不能为空!');
                }
                if ($checkcode != session('checkcode')) {
                    alert_back('验证码错误!');
                }
            }
            
            // 读取字段
            if (! $form = $this->model->getFormField($fcode)) {
                alert_back('接收表单不存在任何字段,请核对后重试!');
            }
            
            // 接收数据
            $mail_body = '';
            foreach ($form as $value) {
                $field_data = post($value->name);
                if (is_array($field_data)) { // 如果是多选等情况时转换
                    $field_data = implode(',', $field_data);
                }
                $field_data = preg_replace_r('/pboot:if/i''', $field_data);
                if ($value->required && ! $field_data) {
                    alert_back($value->description . '不能为空!');
                else {
                    $data[$value->name] = $field_data;
                    $mail_body .= $value->description . ':' . $field_data . '<br>';
                }
            }
            
            // 设置创建时间
            if ($data) {
                $data['create_time'] = get_datetime();
            }
            
            // 写入数据
            if ($this->model->addForm($value->table_name, $data)) {
                session('lastsub', time()); // 记录最后提交时间
                $this->log('提交表单数据成功!');
                if ($this->config('sms_status')) {
                    if ($this->config('form_send_sms') && $this->config('sms_send_to')) {
                        $sms_subject = "您有新的" . $value->form_name . "信息,请注意查收!";
                        sendsms($this->config(), $this->config('sms_send_to'), $sms_subject);
                    }
                }else{
                    if ($this->config('form_send_mail') && $this->config('message_send_to')) {
                        $mail_subject = "【" . CMSNAME . "】您有新的" . $value->form_name . "信息,请注意查收!";
                        $mail_body .= '<br>来自网站' . get_http_url() . '(' . date('Y-m-d H:i:s') . ')';
                        sendmail($this->config(), $this->config('message_send_to'), $mail_subject, $mail_body);
                    }
                }
                alert_location('提交成功!''-1', 1);
            else {
                $this->log('提交表单数据失败!');
                alert_back('提交失败!');
            }
        else {
            alert_back('提交失败,请使用POST方式提交!');
        }
    }

4:打开项目:apps\home\controller\MessageController.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
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
public function index()
    {
        if ($_POST) {
            
            if ($this->config('message_status') === '0') {
                error('系统已经关闭留言功能,请到后台开启再试!');
            }
            
            if (time() - session('lastsub') < 10) {
                alert_back('您提交太频繁了,请稍后再试!');
            }
            
            // 需登录
            if ($this->config('message_rqlogin') && ! session('pboot_uid')) {
                if (! ! $backurl = $_SERVER['HTTP_REFERER']) {
                    alert_location("请先注册登录后再留言!", Url::home('member/login'null"backurl=" . urlencode($backurl)));
                else {
                    alert_location("请先注册登录后再留言!", Url::home('member/login'));
                }
            }
            
            // 验证码验证
            $checkcode = strtolower(post('checkcode''var'));
            if ($this->config('message_check_code') !== '0') {
                if (! $checkcode) {
                    alert_back('验证码不能为空!');
                }
                
                if ($checkcode != session('checkcode')) {
                    alert_back('验证码错误!');
                }
            }
            
            // 读取字段
            if (! $form = $this->model->getFormField(1)) {
                alert_back('留言表单不存在任何字段,请核对后重试!');
            }
            
            // 接收数据
            $mail_body = '';
            foreach ($form as $value) {
                $field_data = post($value->name);
                if (is_array($field_data)) { // 如果是多选等情况时转换
                    $field_data = implode(',', $field_data);
                }
                $field_data = preg_replace_r('/pboot:if/i''', $field_data);
                if ($value->required && ! $field_data) {
                    alert_back($value->description . '不能为空!');
                else {
                    $data[$value->name] = $field_data;
                    $mail_body .= $value->description . ':' . $field_data . '<br>';
                }
            }
            
            $status = $this->config('message_verify') === '0' ? 1 : 0;
            
            // 设置额外数据
            if ($data) {
                $data['acode'] = get_lg();
                $data['user_ip'] = ip2long(get_user_ip());
                $data['user_os'] = get_user_os();
                $data['user_bs'] = get_user_bs();
                $data['recontent'] = '';
                $data['status'] = $status;
                $data['create_user'] = 'guest';
                $data['update_user'] = 'guest';
                $data['uid'] = session('pboot_uid');
            }
            
            if ($this->model->addMessage($data)) {
                session('lastsub', time()); // 记录最后提交时间
                $this->log('留言提交成功!');
                if ($this->config('sms_status')) {
                    if ($this->config('message_send_sms') && $this->config('sms_send_to')) {
                        $sms_subject = "您有新的" . $value->form_name . "信息,请注意查收!";
                        sendsms($this->config(), $this->config('sms_send_to'), $sms_subject);
                    }
                else {
                    if ($this->config('message_send_mail') && $this->config('message_send_to')) {
                        $mail_subject = "【" . CMSNAME . "】您有新的" . $value->form_name . "信息,请注意查收!";
                        $mail_body .= '<br>来自网站 ' . get_http_url() . ' (' . date('Y-m-d H:i:s') . ')';
                        sendmail($this->config(), $this->config('message_send_to'), $mail_subject, $mail_body);
                    }
                }
                alert_location('提交成功!''-1', 1);
            else {
                $this->log('留言提交失败!');
                alert_back('提交失败!');
            }
        else {
            alert_back('提交失败,请使用POST方式提交!');
        }
    }

5:打开项目:\core\function\helper.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
28
29
30
31
32
33
34
35
36
37
38
39
// 发送短信
function sendsms(array $config, $to, $content)
{
    $statusStr = array(
        "0" => "短信发送成功",
        "-1" => "参数不全",
        "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
        "30" => "密码错误",
        "40" => "账号不存在",
        "41" => "余额不足",
        "42" => "帐户已过期",
        "43" => "IP地址限制",
        "50" => "内容含有敏感词"
    );
    if (! $to || ! $content) {
        return false;
    }
    if ($config['sms_account'] == 0){
        alert_back('短信暂未开启');
    }
    if (! isset($config['sms_account']) || ! isset($config['sms_pwd']) || ! isset($config['sms_signid'])) {
        alert_back('短信发送参数配置有误');
    }
    $user = $config['sms_account'];
    $pass = md5($config['sms_pwd']);
    $content = "【" . $config['sms_signid'] . "】".$content;
    $phone = $to; // 替换空格
    $smsapi = "http://api.smsbao.com/";
    $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);
    $res =file_get_contents($sendurl) ;
     if ($res == 0) {
         return true;
        else {
         error('短信发送失败,' . $statusStr[$res]);
     }
}

6:打开项目:apps\api\controller\CmsController.php 修改Api表单短信发送

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
63
public function addform()
    {
        if ($_POST) {
            
            if (! $fcode = request('fcode''var')) {
                json(0, '传递的表单编码fcode有误!');
            }
            
            if ($this->config('form_status') === '0') {
                json(0, '系统已经关闭表单功能,请到后台开启再试!');
            }
            
            // 读取字段
            if (! $form = $this->model->getFormField($fcode)) {
                json(0, '接收表单不存在任何字段,请核对后重试!');
            }
            
            // 接收数据
            $mail_body = '';
            foreach ($form as $value) {
                $field_data = post($value->name);
                if (is_array($field_data)) { // 如果是多选等情况时转换
                    $field_data = implode(',', $field_data);
                }
                $field_data = str_replace('pboot:if''', $field_data);
                if ($value->required && ! $field_data) {
                    json(0, $value->description . '不能为空!');
                else {
                    $data[$value->name] = $field_data;
                    $mail_body .= $value->description . ':' . $field_data . '<br>';
                }
            }
            
            // 设置创建时间
            if ($data) {
                $data['create_time'] = get_datetime();
            }
            
            // 写入数据
            if ($this->model->addForm($value->table_name, $data)) {
                $this->log('API提交表单数据成功!');
                if ($this->config('sms_status')) {
                    if ($this->config('form_send_sms') && $this->config('sms_send_to')) {
                        $sms_subject = "您有新的" . $value->form_name . "信息,请注意查收!";
                        sendsms($this->config(), $this->config('sms_send_to'), $sms_subject);
                    }
                }else{
                    if ($this->config('form_send_mail') && $this->config('message_send_to')) {
                        $mail_subject = "【" . CMSNAME . "】您有新的" . $value->form_name . "信息,请注意查收!";
                        $mail_body .= '<br>来自网站' . get_http_url() . '(' . date('Y-m-d H:i:s') . ')';
                        sendmail($this->config(), $this->config('message_send_to'), $mail_subject, $mail_body);
                    }
                }
                json(1, '表单提交成功!');
            else {
                $this->log('API提交表单数据失败!');
                json(0, '表单提交失败!');
            }
        else {
            json(0, '表单提交失败,请使用POST方式提交!');
        }
    }

经过上面的替换,短信宝的短信平台已经替换成功了,可以正常使用了。进行测试发送:

报备一下短信宝的VIP模板,这样就可以走短信宝的优质通道了,即便遇到敏感文字我们都不会人工审核,短信内容3~5秒就可送达。

另外:我们已经开发好完整的PbootCMS_V3.1.2系统短信宝插件,点击此链接 下载及查看安装流程。

开源插件

最新更新

电商类

CMS类

微信类

文章标签