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類
微信類