PbootCMS是全新內(nèi)核且永久開源免費(fèi)的PHP企業(yè)網(wǎng)站開發(fā)建設(shè)管理系統(tǒng),是一套高效、簡(jiǎn)潔、 強(qiáng)悍的可免費(fèi)商用的PHP CMS源碼,能夠滿足各類企業(yè)網(wǎng)站開發(fā)建設(shè)的需要。系統(tǒng)采用簡(jiǎn)單到想哭的模板標(biāo)簽,只要懂HTML就可快速開發(fā)企業(yè)網(wǎng)站。小編對(duì)他還是比較了解的,今天小編就以留言模塊新增短信接口為例,給大家講解一下如何進(jìn)行二次開發(fā),我們今天講解的是v3.2.4版本,使用的短信接口是我們短信寶短信群發(fā)平臺(tái)的短信接口,我們短信寶短信群發(fā)平臺(tái)的接口非常穩(wěn)定,發(fā)送速度快,注冊(cè)就送測(cè)試短信,推薦大家使用
1:打開項(xiàng)目:apps\admin\view\default\system\config.html 增加短信配置頁(yè)面
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
|
<ul class= "layui-tab-title" > <li class= "layui-this" lay-id= "t1" >基本配置</li> <li lay-id= "t2" >郵件通知</li> <li lay-id= "t3" >百度接口</li> <li lay-id= "t4" >WebAPI</li> <li lay-id= "t5" >圖片水印</li> <li lay-id= "t6" >安全配置</li> <li lay-id= "t7" >URL規(guī)則</li> <li lay-id= "t8" >標(biāo)題樣式</li> <li lay-id= "t9" >會(huì)員配置</li> <li lay-id= "t10" >短信配置</li> </ul> <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" >短信寶賬號(hào)</label> <div class= "layui-input-inline" > <input type= "text" name= "sms_account" value= "{$configs.sms_account.value}" placeholder= "請(qǐng)輸入短信寶賬號(hào)" 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= "請(qǐng)輸入短信寶密碼" 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= "請(qǐng)輸入短信寶簽名" class= "layui-input" > </div> </div> <div class= "layui-form-item" > <label class= "layui-form-label" >留言發(fā)送短信</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" >表單發(fā)送短信</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" >評(píng)論發(fā)送短信</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" >信息接收手機(jī)號(hào)</label> <div class= "layui-input-inline" > <input type= "text" name= "sms_send_to" value= "{$configs.sms_send_to.value}" placeholder= "請(qǐng)輸入信息接收手機(jī)號(hào)" class= "layui-input" > </div> </div> |
2:打開項(xiàng)目:apps\admin\controller\system\ConfigController.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
|
if ($_POST) { unset($_POST[ 'upload' ]); // 去除上傳組件 if (isset($_POST[ 'sn' ])) { $_POST[ 'licensecode' ] = base64_encode(post( 'sn' ) . '/' . post( 'sn_user' )) . substr(post( 'sn' ), 1, 1); } foreach ($_POST as $key => $value) { if (! preg_match( '/^[\w\-]+$/' , $key)) { continue ; } $config = array( 'debug' , // 'sn', // 'sn_user', 'pagenum' , 'tpl_html_cache' , 'tpl_html_cache_time' , 'session_in_sitepath' ); if (in_array($key, $config)) { if ($key == 'tpl_html_cache_time' && ! $value) { $value = 900; } else { $value = post($key); } $ this ->modConfig($key, $value); } else { $ this ->modDbConfig($key); } } $ this ->log( '修改參數(shù)配置成功!' ); path_delete(RUN_PATH . '/config' ); // 清理緩存的配置文件 switch (post( 'submit' )) { case 'email' : success( '修改成功!' , url( '/admin/Config/index' . get_tab( 't2' ), false )); break ; case 'baidu' : success( '修改成功!' , url( '/admin/Config/index' . get_tab( 't3' ), false )); break ; case 'api' : success( '修改成功!' , url( '/admin/Config/index' . get_tab( 't4' ), false )); break ; case 'watermark' : success( '修改成功!' , url( '/admin/Config/index' . get_tab( 't5' ), false )); break ; case 'security' : success( '修改成功!' , url( '/admin/Config/index' . get_tab( 't6' ), false )); break ; case 'urlrule' : success( '修改成功!' , url( '/admin/Config/index' . get_tab( 't7' ), false )); break ; case 'pagetitle' : success( '修改成功!' , url( '/admin/Config/index' . get_tab( 't8' ), false )); break ; case 'member' : success( '修改成功!' , url( '/admin/Config/index' . get_tab( 't9' ), false )); break ; case 'upgrade' : success( '修改成功!' , url( '/admin/Upgrade/index' . get_tab( 't2' ), false )); break ; case 'sms' : success( '修改成功!' , url( '/admin/Config/index' . get_tab( 't10' ), false )); break ; default : success( '修改成功!' , url( '/admin/Config/index' , false )); } } |
3:打開項(xiàng)目:default\html\message.html 增加手機(jī)號(hào)頁(yè)面
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
|
<div class= "form-group" > <label for = "mobile" >手 機(jī)</label> <div> <input type= "text" name= "mobile" required id= "mobile" placeholder= "請(qǐng)輸入聯(lián)系人手機(jī)" > <button id= "send-btn" onclick= "sendSms()" >發(fā)送驗(yàn)證碼</button> </div> </div> <div class= "form-group" > <label for = "checkcode" >手機(jī)驗(yàn)證碼</label> <div class= "row" > <div class= "col-6" > <input type= "text" name= "mobilecode" required id= "mobilecode" class= "form-control" placeholder= "請(qǐng)輸入手機(jī)驗(yàn)證碼" > </div> </div> </div> <script> function sendSms() { // 倒計(jì)時(shí)60秒 var countdown = 60; var btn = document.getElementById( "send-btn" ); let checkcode = $( "#checkcode" ).val(); let mobile = $( "#mobile" ).val(); $.ajax({ type: 'get' , url: '?member/msgSms' , dataType: 'json' , data: { mobile: mobile, checkcode: checkcode }, success: function (response, status) { console.log(response) if (response.code){ btn.disabled = true ; btn.innerHTML = countdown + "秒后重發(fā)" ; btn.style.color = 'black' ; var timer = setInterval( function () { countdown -= 1; console.log(countdown) if (countdown <= 0) { clearInterval(timer); btn.disabled = false ; btn.innerHTML = "發(fā)送驗(yàn)證碼" ; } else { btn.innerHTML = countdown + "秒后重發(fā)" ; } }, 1000); alert( "短信發(fā)送成功" ); } else { alert(response.data); $( '.codeimg' ).click(); //更新驗(yàn)證碼 } }, error: function (xhr,status,error){ alert( '返回?cái)?shù)據(jù)異常!' ); } }); return false ; } </script> |
4:打開項(xiàng)目:\home\controller\MemberController.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
|
//留言發(fā)送短信 public function msgSms(){ if ($ this ->config( 'message_status' ) === '0' ) { error( '系統(tǒng)已經(jīng)關(guān)閉留言功能,請(qǐng)到后臺(tái)開啟再試!' ); } if (time() - session( 'lastsms' ) < 60) { alert_back( '您提交太頻繁了,請(qǐng)稍后再試!' ); } // 需登錄 if ($ this ->config( 'message_rqlogin' ) && ! session( 'pboot_uid' )) { if (! ! $backurl = $_SERVER[ 'HTTP_REFERER' ]) { alert_location( "請(qǐng)先注冊(cè)登錄后再留言!" , Url::home( 'member/login' , null , "backurl=" . urlencode($backurl))); } else { alert_location( "請(qǐng)先注冊(cè)登錄后再留言!" , Url::home( 'member/login' )); } } // 驗(yàn)證碼驗(yàn)證 $checkcode = strtolower(get( 'checkcode' , 'var' )); if ($ this ->config( 'message_check_code' ) !== '0' ) { if (! $checkcode) { alert_back( '驗(yàn)證碼不能為空!' ); } if ($checkcode != session( 'checkcode' )) { alert_back( '驗(yàn)證碼錯(cuò)誤!' ); } } $mobile = get( 'mobile' ); if (!preg_match( '/^1[3-9]\d{9}$/' , $mobile)) { alert_back( '手機(jī)號(hào)碼格式錯(cuò)誤!' ); } $code = mt_rand(1000,9999); session( 'mobilecode' , $code); // $mail_subject = "【" . CMSNAME . "】您的驗(yàn)證碼為" . $code . "請(qǐng)注意查收!" ; $res = sendsms($ this ->config(),$mobile,$mail_subject); if ($res){ session( 'lastsms' , time()); //記錄最后一次發(fā)送短信 alert_location( '發(fā)送成功!' , '-1' , 1); } } |
5:打開項(xiàng)目:apps\home\controller\MessageController.php 增加短信驗(yàn)證碼校驗(yàn)
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
94
|
public function index() { if ($_POST) { if ($ this ->config( 'message_status' ) === '0' ) { error( '系統(tǒng)已經(jīng)關(guān)閉留言功能,請(qǐng)到后臺(tái)開啟再試!' ); } if (time() - session( 'lastsub' ) < 10) { alert_back( '您提交太頻繁了,請(qǐng)稍后再試!' ); } // 需登錄 if ($ this ->config( 'message_rqlogin' ) && ! session( 'pboot_uid' )) { if (! ! $backurl = $_SERVER[ 'HTTP_REFERER' ]) { alert_location( "請(qǐng)先注冊(cè)登錄后再留言!" , Url::home( 'member/login' , null , "backurl=" . urlencode($backurl))); } else { alert_location( "請(qǐng)先注冊(cè)登錄后再留言!" , Url::home( 'member/login' )); } } // 驗(yàn)證碼驗(yàn)證 // $checkcode = strtolower(post('checkcode', 'var')); // if ($this->config('message_check_code') !== '0') { // if (! $checkcode) { // alert_back('驗(yàn)證碼不能為空!'); // } // // if ($checkcode != session('checkcode')) { // alert_back('驗(yàn)證碼錯(cuò)誤!'); // } // } //短信驗(yàn)證碼校驗(yàn) $mobilecode = strtolower(post( 'mobilecode' , 'var' )); if (! $mobilecode) { alert_back( '驗(yàn)證碼不能為空!' ); } if ($mobilecode != session( 'mobilecode' )) { alert_back( '短信驗(yàn)證碼錯(cuò)誤!' ); } // 讀取字段 if (! $form = $ this ->model->getFormField(1)) { alert_back( '留言表單不存在任何字段,請(qǐng)核對(duì)后重試!' ); } // 接收數(shù)據(jù) $mail_body = '' ; foreach ($form as $value) { $field_data = post($value->name); if (is_array($field_data)) { // 如果是多選等情況時(shí)轉(zhuǎn)換 $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; // 設(shè)置額外數(shù)據(jù) 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()); // 記錄最后提交時(shí)間 $ this ->log( '留言提交成功!' ); if ($ this ->config( 'message_send_mail' ) && $ this ->config( 'message_send_to' )) { $mail_subject = "【" . CMSNAME . "】您有新的" . $value->form_name . "信息,請(qǐng)注意查收!" ; $mail_body .= '<br>來自網(wǎng)站 ' . 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( '提交失敗,請(qǐng)使用POST方式提交!' ); } } } |
6:打開項(xiàng)目:\core\function\helper.php 增加短信寶發(fā)送方法
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
|
// 發(fā)送短信 function sendsms(array $config, $to, $content) { $statusStr = array( "0" => "短信發(fā)送成功" , "-1" => "參數(shù)不全" , "-2" => "服務(wù)器空間不支持,請(qǐng)確認(rèn)支持curl或者fsocket,聯(lián)系您的空間商解決或者更換空間!" , "30" => "密碼錯(cuò)誤" , "40" => "賬號(hào)不存在" , "41" => "余額不足" , "42" => "帳戶已過期" , "43" => "IP地址限制" , "50" => "內(nèi)容含有敏感詞" ); if (! $to || ! $content) { return false ; } if ($config[ 'sms_status' ] == 0){ alert_back( '短信暫未開啟' ); } if (! isset($config[ 'sms_status' ]) || ! isset($config[ 'sms_pwd' ]) || ! isset($config[ 'sms_signid' ])) { alert_back( '短信發(fā)送參數(shù)配置有誤' ); } $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 { alert_back( '短信發(fā)送失敗,' . $statusStr[$res]); } } |
經(jīng)過上面的替換,短信寶的短信平臺(tái)已經(jīng)替換成功了,可以正常使用了。進(jìn)行測(cè)試發(fā)送:
報(bào)備一下短信寶的VIP模板,這樣就可以走短信寶的優(yōu)質(zhì)通道了,即便遇到敏感文字我們都不會(huì)人工審核,短信內(nèi)容3~5秒就可送達(dá)。
另外:我們已經(jīng)開發(fā)好完整的PbootCMS_V3.2.4系統(tǒng)留言模塊短信寶插件,點(diǎn)擊此鏈接?下載及查看安裝流程
最新更新
電商類
CMS類
微信類