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; // 替换空格 $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类
微信类