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
9
10
|
< ul class = "nav nav-pills" > < li class = "nav-item" >< a class = "nav-link active" 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 = "./setting.php?action=api" >API</ a ></ li > < li class = "nav-item" >< a class = "nav-link" href = "./setting.php?action=ai" >?AI</ a ></ li > < li class = "nav-item" >< a class = "nav-link" 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 >短信寶APIKEY</ 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
|
<? 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; ?> |
同時也增加有關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
|
//用ajax提交到后臺的發送短信接口 function sendyzm(obj){ var phone = $( "#userPhone" ).val(); var result = isPhoneNum(); var login_code = $( "#login_code" ).val(); if (result) { $.ajax({ url: "/admin/account.php?action=smsYzm&phone=" +phone+ '&login_code=' +login_code, type: "get" , processData: false , contentType: false , success: function (data){ if (data == 0) { setTime(obj); } else if (data == 1){ alert( '驗證碼發送頻繁' ) } else if (data == 2){ 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 = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/; if (!reg.test(phonenum)){ alert( '請輸入有效的手機號碼!' ); return false ; } else { return true ; } } }); |
4:接著打開admin\account.php修改signup注冊方法,并新增smsYzm短信驗證碼生成方法
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
|
// 注冊頁面 if ( $action == 'signup' ) { loginAuth::checkLogged(); $login_code = Option::get( 'login_code' ) === 'y' ; $email_code = Option::get( 'email_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( $_GET [ 'login_code' ]) ? addslashes ( strtoupper (trim( $_GET [ 'login_code' ]))) : '' ; //登錄注冊驗證碼 if (!User::checkLoginCode( $login_code )) { echo 2; exit ; } $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
|
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 ); 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系統短信寶插件,點擊此鏈接 下載及查看安裝流程。
最新更新
電商類
CMS類
微信類