emlog是一款基于PHP和MySQL的功能強大的博客及CMS建站系統,追求快速、穩定、簡單、舒適的建站體驗。小編對這款軟件還是比較了解的,小編今天就以新增短信接口為例為大家講解一下如何進行二次開發,我們使用的短信接口是我們短信寶短信群發平臺的短信接口,我們短信寶短信群發平臺非常穩定,發送速度快,注冊就送測試短信,推薦大家使用。
1:打開項目:admin\views\setting.php,以及同目錄下的setting_mail.php,setting_seo.php,setting_user.php,blogger.php增加短信設置頁面
|
1
2
3
4
5
6
7
8
|
????????<ul?class="nav?nav-pills">????????????<li?class="nav-item"><a?class="nav-link"?href="./setting.php">基礎設置</a></li>????????????<li?class="nav-item"><a?class="nav-link"?href="./setting.php?action=user">用戶設置</a></li>????????????<li?class="nav-item"><a?class="nav-link"?href="./setting.php?action=mail">郵件通知</a></li>????????????<li?class="nav-item"><a?class="nav-link"?href="./setting.php?action=seo">SEO優化</a></li>????????????<li?class="nav-item"><a?class="nav-link?active"?href="./blogger.php">個人信息</a></li>????????????<li?class="nav-item"><a?class="nav-link"?href="./setting.php?action=sms">短信通知</a></li>????????</ul> |
2:打開項目:admin\views目錄新增短信寶設置頁面 setting_sms.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
|
<?php?if?(!defined('EMLOG_ROOT'))?{????exit('error!');}??><?php?if?(isset($_GET['activated'])):??>????<div?class="alert?alert-success">設置保存成功</div><?php?endif??><div?class="d-sm-flex?align-items-center?justify-content-between?mb-4">????<h1?class="h3?mb-0?text-gray-800">設置</h1></div><div?class="panel-heading">????<ul?class="nav?nav-pills">????????<li?class="nav-item"><a?class="nav-link"?href="./setting.php">基礎設置</a></li>????????<li?class="nav-item"><a?class="nav-link"?href="./setting.php?action=user">用戶設置</a></li>????????<li?class="nav-item"><a?class="nav-link?"?href="./setting.php?action=mail">郵件通知</a></li>????????<li?class="nav-item"><a?class="nav-link"?href="./setting.php?action=seo">SEO優化</a></li>????????<li?class="nav-item"><a?class="nav-link"?href="./blogger.php">個人信息</a></li>????????<li?class="nav-item"><a?class="nav-link?active"?href="./setting.php?action=sms">短信通知</a></li>????</ul></div><div?class="card?shadow?mb-4?mt-2">????<div?class="card-body">????????<form?action="setting.php?action=sms_save"?method="post"?name="input"?id="sms_config">????????????<h4>短信發送</h4>????????????<div?class="form-group?form-check">????????????????<input?class="form-check-input"?type="checkbox"?value="y"?name="is_smsup"?id="is_smsup"?<?=?$conf_is_signup??>?/>????????????????<label?class="form-check-label">開啟短信注冊</label>????????????</div>????????????<div?class="form-group">????????????????<label>短信寶賬號</label>????????????????<input??class="form-control"?value="<?=?$sms_user??>"?name="sms_user"?required>????????????</div>????????????<div?class="form-group">????????????????<label>短信寶密碼</label>????????????????<input?type="password"?name="sms_pwd"?cols=""?rows="3"?class="form-control"?value="<?=?$sms_pwd??>"?required>????????????</div>????????????<div?class="form-group">????????????????<label>短信寶簽名</label>????????????????<input?class="form-control"?value="<?=?$sms_sign??>"?name="sms_sign"?required>????????????</div>????????????<div?class="form-group">????????????????<label>注冊短信模板</label>????????????????<input?class="form-control"?value="<?=?$sms_tmp??>"?name="sms_tmp"?required>????????????</div>????????????<div?class="form-group">????????????????<input?name="token"?id="token"?value="<?=?LoginAuth::genToken()??>"?type="hidden"/>????????????????<input?type="submit"?value="保存設置"?class="btn?btn-sm?btn-success"/>????????????????<input?type="button"?value="發送測試"?class="btn?btn-sm?btn-primary"?data-toggle="modal"?data-target="#testSms"/>????????????</div>????????????<!--?設置接收短信的模態框?-->????????????<div?class="modal?fade"?id="testSms">????????????????<div?class="modal-dialog?modal-sm">????????????????????<div?class="modal-content">????????????????????????<div?class="modal-header">????????????????????????????<h4?class="modal-title">發送測試</h4>????????????????????????????<button?type="button"?class="close"?data-dismiss="modal">×</button>????????????????????????</div>????????????????????????<div?class="modal-body">????????????????????????????<div?class="form-group">????????????????????????????????<input?class="form-control"?type="email"?name="testTo"?placeholder="輸入接收手機號">????????????????????????????</div>????????????????????????</div>????????????????????????<div?class="modal-footer">????????????????????????????<div?id="testMailMsg"></div>????????????????????????????<button?type="button"?class="btn?btn-secondary?btn-sm"?data-dismiss="modal">關閉</button>????????????????????????????<button?type="button"?class="btn?btn-success?btn-sm"?id="testSendBtn">發送</button>????????????????????????</div>????????????????????</div>????????????????</div>????????????</div>????????</form>????</div></div><script>????$("#menu_category_sys").addClass('active');????$("#menu_sys").addClass('show');????$("#menu_setting").addClass('active');????setTimeout(hideActived,?2600);????$("#testSendBtn").click(function?()?{????????$("#testMailMsg").html("<small?class='text-secondary'>發送中...<small>");????????$.post("setting.php?action=sms_test",?$("#sms_config").serialize(),?function?(data)?{????????????if?(data?==?0)?{????????????????$("#testMailMsg").html("<small?class='text-success'>發送成功</small>");????????????}?else?{????????????????$("#testMailMsg").html(data);????????????}????????});????})</script> |
3:打開admin\views\signup.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
|
?<form?method="post"?class="user"?action="./account.php?action=dosignup">????????????????????????????????????<div?class="form-group">????????????????????????????????????????<input?type="email"?class="form-control?form-control-user"?id="mail"???????????????????????????????????????????????name="mail"?aria-describedby="emailHelp"?placeholder="郵箱"?required???????????????????????????????????????????????autofocus>????????????????????????????????????</div>????????????????????????????????????<?php?if?($is_smsup):??>????????????????????????????????????????<div?class="form-group?form-inline">????????????????????????????????????????????????<input??type="text"?id="userPhone"?class="form-control?form-control-user"?placeholder="請輸入手機號碼">????????????????????????????????????????????????<button??type="button"?class="btn?btn-info"??id="second">點擊獲取驗證碼</button>????????????????????????????????????????</div>????????????????????????????????????????<div?class="form-group">????????????????????????????????????????????<input?type="text"?name="securityCode"?class="form-control?form-control-user"??placeholder="請輸入驗證碼"?required?autofocus>????????????????????????????????????????</div>????????????????????????????????????<?php?endif;??>????????????????????????????????????<div?class="form-group">????????????????????????????????????????<input?type="password"?class="form-control?form-control-user"?minlength="6"???????????????????????????????????????????????id="passwd"?name="passwd"?placeholder="密碼"?required>????????????????????????????????????</div>????????????????????????????????????<div?class="form-group">????????????????????????????????????????<input?type="password"?class="form-control?form-control-user"?minlength="6"???????????????????????????????????????????????id="repasswd"?name="repasswd"?placeholder="再次輸入密碼"?required>????????????????????????????????????</div>????????????????????????????????????<?php?if?($login_code):??>????????????????????????????????????????<div?class="form-group?form-inline">????????????????????????????????????????????<input?type="text"?name="login_code"?class="form-control?form-control-user"???????????????????????????????????????????????????id="login_code"?placeholder="驗證碼"?required>????????????????????????????????????????????<img?src="../include/lib/checkcode.php"?id="checkcode"?class="mx-2">????????????????????????????????????????</div>????????????????????????????????????<?php?endif??>????????????????????????????????????<button?class="btn?btn-success?btn-user?btn-block"?type="submit">注冊</button>????????????????????????????????????<hr>????????????????????????????????????<div?class="text-center"><a?href="/admin">登錄</a></div>????????????????????????????????????<hr>????????????????????????????????????<div?class="text-center"><a?href="../"?class="small"?role="button">←返回首頁</a>????????????????????????????????????</div>????????????????????????????????</form> |
此頁面同時也增加有關60秒倒計時的js校驗
|
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
|
<script?type="text/javascript">????$("#second").click(function?(){????????sendyzm($("#second"));????});????//用ajax提交到后臺的發送短信接口????function?sendyzm(obj){????????var?phone?=?$("#userPhone").val();????????var?result?=?isPhoneNum();????????if(result)?{????????????$.ajax({????????????????url:"/admin/account.php?action=smsYzm&phone="+phone,????????????????type:"get",????????????????processData:?false,????????????????contentType:?false,????????????????success:function(data){????????????????????if?(data?==?0)?{????????????????????????setTime(obj);????????????????????}else?if?(data?==?1){????????????????????????alert('驗證碼發送頻繁')????????????????????}else{????????????????????????alert('驗證碼發送失敗')????????????????????}????????????????},????????????????error:function(){????????????????????alert("驗證碼發送失敗")????????????????}????????????})????????}????}????//60s倒計時實現邏輯????var?countdown?=?60;????function?setTime(obj)?{????????if?(countdown?==?0)?{????????????obj.prop('disabled',?false);????????????obj.text("點擊獲取驗證碼");????????????countdown?=?60;//60秒過后button上的文字初始化,計時器初始化;????????????return;????????}?else?{????????????obj.prop('disabled',?true);????????????obj.text("("+countdown+"s)后重新發送")?;????????????countdown--;????????}????????setTimeout(function()?{?setTime(obj)?},1000)?//每1000毫秒執行一次????}????//校驗手機號是否合法????function?isPhoneNum(){????????var?phonenum?=?$("#userPhone").val();????????var?reg?=?/^1[34578]\d{9}$/;????????if(!reg.test(phonenum)){????????????alert('請輸入有效的手機號碼!');????????????return?false;????????}else{????????????return?true;????????}????}</script> |
4:打開admin\account.php修改signup注冊方法
|
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
|
if?($action?==?'signup')?{????loginAuth::checkLogged();????$login_code?=?Option::get('login_code')?===?'y';????$is_smsup?=?Option::get('is_smsup')?===?'y';????$error_msg?=?'';????if?(Option::get('is_signup')?!==?'y')?{????????emMsg('系統已關閉注冊!');????}????$page_title?=?'注冊賬號';????include?View::getAdmView('user_head');????require_once?View::getAdmView('signup');????View::output();}if?($action?==?'smsYzm')?{????$data?=?[];????//做檢測????$phone?=?isset($_GET['phone'])???addslashes(trim($_GET['phone']))?:?'';????if?(!isset($_SESSION))?{????????session_start();????}????if?(isset($_SESSION['tel'])?&&?time()-$_SESSION['tel']?<?60){????????echo?1;????????exit;????}????$login_code?=?isset($_POST['login_code'])???addslashes(strtoupper(trim($_POST['login_code'])))?:?'';?//登錄注冊驗證碼????if?(!User::checkLoginCode($login_code))?{????????emDirect('./account.php?action=signup&err_ckcode=1');????}????$rand?=?mt_rand(0,9999);????$test_temp?=?Option::get('sms_tmp')?;????$content?=?str_replace('{$code}',$rand,$test_temp);????$res?=?(new?SmsBao())->send($phone,$content);//????$res?=?'發送成功';????if?($res?!=?"發送成功"){????????echo?$res;??????exit;????}else{????????if?(!isset($_SESSION))?{????????????session_start();????????}????????$_SESSION['tel']?=?time();????????$_SESSION['sms_yzm_code']?=?$rand;????????echo?0;????????exit;????}} |
5:打開admin\setting.php新增sms、sms_test、sms_save方法
|
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
|
if?($action?==?'sms')?{????$options_cache?=?$CACHE->readCache('options');????$sms_user?=?$options_cache['sms_user'];????$sms_pwd?=?$options_cache['sms_pwd'];????$sms_sign?=?$options_cache['sms_sign'];????$sms_tmp?=?$options_cache['sms_tmp'];????$conf_is_signup?=?$options_cache['is_smsup']?==?'y'???'checked="checked"'?:?'';????include?View::getAdmView('header');????require_once(View::getAdmView('setting_sms'));????include?View::getAdmView('footer');????View::output();}if?($action?==?'sms_test')?{????$data?=?[????????'testTo'??????=>?$_POST['testTo']????'',????];????$test_temp?=?'您的驗證碼為1234';????try?{//???????$res?=?(new?SmsBao())->send($data['testTo'],$test_temp);???????$res?=?'發送成功';????????if?($res?!=?"發送成功"){????????????exit("<small?class='text-danger'>$res</small>");????????????return?false;????????}????}?catch?(Exception?$exc)?{????????exit("<small?class='text-danger'>發送失敗</small>");????????return?false;????}}if?($action?==?'sms_save')?{????LoginAuth::checkToken();????$data?=?[????????'is_smsup'???=>?isset($_POST['is_smsup'])???addslashes($_POST['is_smsup'])?:?'',????????'sms_user'???=>?isset($_POST['sms_user'])???addslashes($_POST['sms_user'])?:?'',????????'sms_pwd'?????=>?isset($_POST['sms_pwd'])???addslashes($_POST['sms_pwd'])?:?'',????????'sms_tmp'?????=>?isset($_POST['sms_tmp'])???addslashes($_POST['sms_tmp'])?:?'',????????'sms_sign'?=>?isset($_POST['sms_sign'])???addslashes($_POST['sms_sign'])?:?'',????];????foreach?($data?as?$key?=>?$val)?{????????Option::updateOption($key,?$val);????}????$CACHE->updateCache(array('options'));????header('Location:?./setting.php?action=sms&activated=1');} |
6:最后打開項目include\lib目錄新增smsbao.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
|
<?phpclass?SmsBao?{????public?$sms_user;????public?$sms_pwd;????public?$sms_sign;????public?function?__construct()?{????????$this->sms_user?=?Option::get('sms_user');????????$this->sms_pwd?=?Option::get('sms_pwd');????????$this->sms_sign?=?Option::get('sms_sign');????}????function?send($to,$content)?{????????try?{????????????$statusStr?=?array(????????????????"0"?=>?"發送成功",????????????????"-1"?=>?"參數不全",????????????????"-2"?=>?"服務器空間不支持,請確認支持curl或者fsocket,聯系您的空間商解決或者更換空間!",????????????????"30"?=>?"密碼錯誤",????????????????"40"?=>?"賬號不存在",????????????????"41"?=>?"余額不足",????????????????"42"?=>?"帳戶已過期",????????????????"43"?=>?"IP地址限制",????????????????"50"?=>?"內容含有敏感詞"????????????);????????????$user?=?$this->sms_user;?//短信平臺帳號????????????$pass?=?md5($this->sms_pwd);?//短信平臺密碼????????????$content="【".$this->sms_sign."】".$content;//要發送的短信內容????????????$phone?=?$to;//要發送短信的手機號碼????????????$sendurl?=?$smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);????????????$res?=?file_get_contents($sendurl);????????????return?$statusStr[$res];????????}?catch?(Exception?$exc)?{????????????return?false;????????}????}} |
好了,經過以上的替換,短信寶的短信平臺已經替換成功了,可以正常使用了。我們進行測試發送。
報備一下短信寶的VIP模板,這樣就可以走短信寶的優質通道了,即便遇到敏感文字我們都不會人工審核,短信內容3~5秒就可送達。
另外:我們已經開發好完整的emlog pro_1.2.2系統短信寶插件,點擊此鏈接?下載及查看安裝流程。
最新更新
電商類
CMS類
微信類