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
|
<?php class?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類
微信類