YzmCMS是一款輕量級開源內容管理系統,它采用OOP(面向對象)方式自主開發的框架。基于PHP+Mysql架構,并采用MVC框架式開發的一款高效開源的內容管理系統,可運行在Linux、Windows、MacOSX、Solaris等各種平臺上。便于進行二次開發,小編對這款軟件還是比較了解的,小編今天就以v7.3版新增短信接口為例為大家講解一下如何進行二次開發,我們使用的短信接口是我們短信寶短信群發平臺的短信接口,我們短信寶短信群發平臺非常穩定,發送速度快,注冊就送測試短信,推薦大家使用。
1.打開項目:\application\admin\view\system_set.html 在394~413行左右增加短信頁面代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
< div class = "tabCon" > < div class = "row cl" > < label class = "form-label col-xs-4 col-sm-2" >短信寶用戶名:</ label > < div class = "formControls col-xs-8 col-sm-9" > < input type = "text" name = "smsbao_user" value = "<?php echo $data[" smsbao_user"];?>" class="input-text" style="width:50%"> </ div > </ div > < div class = "row cl" > < label class = "form-label col-xs-4 col-sm-2" >短信寶密碼:</ label > < div class = "formControls col-xs-8 col-sm-9" > < input type = "text" name = "smsbao_pass" value = "<?php echo $data[" smsbao_pass"];?>" class="input-text" style="width:50%"> </ div > </ div > < div class = "row cl" > < label class = "form-label col-xs-4 col-sm-2" >短信簽名:</ label > < div class = "formControls col-xs-8 col-sm-9" > < input type = "text" name = "smsbao_sign" value = "<?php echo $data[" smsbao_sign"];?>" class="input-text" style="width:50%"> </ div > </ div > </ div > |
2.打開項目:\application\member\view\member_set.html 在42~49行增加以下代碼
1
2
3
4
5
6
7
8
|
< div class = "row cl" > < label class = "form-label col-xs-4 col-sm-2" >新會員注冊短信驗證:</ label > < div class = "formControls col-xs-8 col-sm-9" > < label class = "label_radio" >< input name = "member_mobile" type = "radio" <?php echo $data["member_mobile"]? 'checked' : '' ?> value="1"> 開啟</ label > < label class = "label_radio" >< input name = "member_mobile" type = "radio" <?php echo $data["member_mobile"]? '' : 'checked' ?> value="0"> 關閉</ label > < span style = "color:#888" > [需填寫短信配置,且開啟后會員注冊審核功能無效]</ span > </ div > </ div > |
3.打開項目:\application\member\view\default\register.html 注冊頁面添加手機號
1
2
3
4
5
|
< li >< input type = "text" class = "input code" id = "code" name = "code" placeholder = "請輸入驗證碼" >< img src = "{U('api/index/code')}" onclick = "this.src=this.src+'?'" id = "codeimg" class = "codeimg" title = "看不清,換一張" ></ li > < li >< input type = "text" class = "input" name = "mobile" id = "mobile" value = "" placeholder = "請輸入手機號碼" ></ li > {if $config['member_mobile'] == 1} < li >< input type = "text" class = "input code" name = "mobile_code" value = "" id = "mobile_code" placeholder = "請輸入短信驗證碼" > < b class = "huoqu" style = "height: 28px; width: 120px;cursor: pointer;display: inline-block;margin-top: 10px;" >獲取驗證碼</ b ></ li > {/if} |
4.打開項目:\application\member\view\default\register.html 同時最后也添加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
60
61
62
63
64
65
66
67
68
|
<script type= "text/javascript" > var time = 0; var res = null ; function sendTime(){ clearTimeout(res); // 先清空一下倒計時資源。 time--; // 倒計時時間遞減。 // 如果倒計時到達0時,則恢復按鈕原來的內容 if (time <= 0) { time = "獲取驗證碼" ; $( '.huoqu' ).text(time); clearTimeout(res); time = 0; return ; } // 倒計時的內容寫到按鈕里面 $( '.huoqu' ).text( "剩余" + time + "秒" ); res = setTimeout( "sendTime()" , 1000); } $( function (){ var flg = true ; $( '.huoqu' ).on( 'click' , function (){ var mobile = $( "#mobile" ).val(); var code = $( "#code" ).val(); var reg = /^1[3,4,5,7,8]\d{9}$/; var ret = false ; if (code == '' ) {layer.msg( '請填寫驗證碼' ); return ret;} if (!reg.test(mobile)) {layer.msg( '手機號碼不正確' ); return ret;} console.log(time) if (0 == time) { var data = { "code" : code, "mobile" : mobile}; console.log(data); var err = "" ; if (flg == true ) { flg = false ; // ajax提交請求 $.ajax({ type: "post" , url: "{U('public_checksms')}" , dataType: "html" , async: false , data: data, beforeSend: function (){ $( "#dosubmit" ).attr({ disabled: "disabled" }); }, success: function (data){ console.log(data) data = JSON.parse(data) flg = true ; if (data.status === 1){ time = 60; sendTime(); ret = true ; } layer.msg(data.message); } }); } $( '.codeimg' ).click(); return ret; } }) }) </script> |
5.打開項目:\application\member\controller\index.class.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
|
public function register(){ $config = get_config(); if ( $config [ 'member_register' ] == 0) showmsg( '管理員關閉了新會員注冊!' , 'stop' ); if (isset( $_SESSION [ '_userid' ]) && $_SESSION [ '_userid' ]){ showmsg(L( 'login_success' ), U( 'member/index/init' ), 1); } if (is_post()){ $this ->_check_code(); if ( empty ( $_SESSION [ 'mobile_code' ]) || strtolower ( $_POST [ 'mobile_code' ]) != $_SESSION [ 'mobile_code' ]) { $_SESSION [ 'mobile_code' ] = '' ; return_json( array ( 'status' =>0, 'message' => '手機驗證碼不正確' )); } $member = D( 'member' ); $data = array (); $data [ 'username' ] = isset( $_POST [ 'username' ]) && is_username( $_POST [ 'username' ]) ? trim( $_POST [ 'username' ]) : return_json( array ( 'status' =>0, 'message' =>L( 'user_name_format_error' ))); $data [ 'password' ] = isset( $_POST [ 'password' ]) && is_password( $_POST [ 'password' ]) ? trim( $_POST [ 'password' ]) : return_json( array ( 'status' =>0, 'message' =>L( 'password_format_error' ))); $data [ 'email' ] = isset( $_POST [ 'email' ]) && is_email( $_POST [ 'email' ]) ? trim( $_POST [ 'email' ]) : return_json( array ( 'status' =>0, 'message' =>L( 'mail_format_error' ))); $data [ 'mobile' ] = isset( $_POST [ 'mobile' ]) && is_mobile( $_POST [ 'mobile' ]) ? trim( $_POST [ 'mobile' ]) : return_json( array ( 'status' =>0, 'message' => '手機號不正確' )); $result = $member ->field( 'userid' )->where( array ( 'username' => $_POST [ 'username' ]))->find(); if ( $result ) return_json( array ( 'status' =>0, 'message' => '該用戶名已注冊!' )); $result = $member ->field( 'userid' )->where( array ( 'email' => $_POST [ 'email' ]))->find(); if ( $result ) return_json( array ( 'status' =>0, 'message' => '該郵箱已注冊!' )); $data [ 'nickname' ] = $data [ 'username' ]; $data [ "password" ] = password( $data [ 'password' ]); $data [ 'regdate' ] = $data [ 'lastdate' ] = SYS_TIME; $data [ 'regip' ] = $data [ 'lastip' ] = getip(); $data [ 'groupid' ] = '1' ; $data [ 'amount' ] = '0.00' ; $data [ 'point' ] = $data [ 'experience' ] = $config [ 'member_point' ]; //經驗和積分 $data [ 'status' ] = ( $config [ 'member_check' ] || $config [ 'member_email' ]) ? 0 : 1; $data [ 'userid' ] = $member ->insert( $data , true); if (! $data [ 'userid' ]) return_json( array ( 'status' =>0, 'message' => '注冊失敗!' )); D( 'member_detail' )->insert( $data , true, false); //插入附表 if ( $config [ 'member_email' ]){ //需要郵件驗證 $mail_code = string_auth( $data [ 'userid' ]. '|' .SYS_TIME, 'ENCODE' , make_auth_key( 'email' )); $url = U( 'member/index/register' , array ( 'mail_code' => $mail_code , 'verify' =>1)); $email_tpl = APP_PATH.ROUTE_M.DIRECTORY_SEPARATOR. 'view' .DIRECTORY_SEPARATOR.(defined( 'MODULE_THEME' ) ? MODULE_THEME : C( 'site_theme' )).DIRECTORY_SEPARATOR. 'email_register_message.html' ; $message = is_file ( $email_tpl ) ? file_get_contents ( $email_tpl ) : return_json( array ( 'status' =>0, 'message' => '郵件模板不存在,請聯系網站管理員!' )); $message = str_replace ( array ( '{site_name}' , '{url}' , '{username}' , '{email}' ), array (get_config( 'site_name' ), $url , $data [ 'username' ], $data [ 'email' ]), $message ); $res = sendmail( $data [ 'email' ], '會員注冊郵箱驗證' , $message ); if (! $res ) return_json( array ( 'status' =>0, 'message' => '郵件發送失敗,請聯系網站管理員!' )); return_json( array ( 'status' =>1, 'message' => '我們已將郵件發送到您的郵箱,請盡快完成驗證!' , 'url' =>U( 'member/index/login' ))); } elseif ( $config [ 'member_check' ]){ //需要管理員審核 return_json( array ( 'status' =>1, 'message' => '注冊成功,由于管理員開啟審核機制,請耐心等待!' , 'url' =>U( 'member/index/login' ))); } $_SESSION [ '_userid' ] = $data [ 'userid' ]; $_SESSION [ '_username' ] = $data [ 'username' ]; set_cookie( '_userid' , $data [ 'userid' ], 0, true); set_cookie( '_username' , $data [ 'username' ], 0, true); set_cookie( '_groupid' , $data [ 'groupid' ], 0, true); set_cookie( '_nickname' , $data [ 'username' ]); return_json( array ( 'status' =>1, 'message' => '注冊成功!' , 'url' =>U( 'member/index/init' ))); } else { if (! empty ( $_GET [ 'verify' ])) { $mail_code = isset( $_GET [ 'mail_code' ]) ? trim( $_GET [ 'mail_code' ]) : showmsg(L( 'illegal_operation' ), 'stop' ); $code_res = string_auth( $mail_code , 'DECODE' , make_auth_key( 'email' )); $code_arr = explode ( '|' , $code_res ); $userid = isset( $code_arr [0]) ? intval ( $code_arr [0]) : showmsg(L( 'illegal_operation' ), 'stop' ); $time = isset( $code_arr [1]) ? $code_arr [1] : showmsg(L( 'illegal_operation' ), 'stop' ); if ( $time +1800 > SYS_TIME){ D( 'member' )->update( array ( 'status' => 1, 'email_status' => 1), array ( 'userid' => $userid )); showmsg( '郵箱驗證成功!' , U( 'member/index/login' ), 2); } else { showmsg( '郵箱驗證失敗,驗證時間已失效!' , U( 'member/index/register' )); } } include template( 'member' , 'register' ); } } |
6.打開項目:\application\member\controller\reset.class.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
|
public function reset_mobile(){ // session_start(); $_SESSION [ 'step' ] = isset( $_SESSION [ 'step' ]) ? $_SESSION [ 'step' ] : 1; if ( $_SESSION [ 'step' ]==1 && isset( $_POST [ 'dosubmit' ])) { if ( empty ( $_SESSION [ 'code' ]) || strtolower ( $_POST [ 'code' ]) != $_SESSION [ 'code' ]){ $_SESSION [ 'code' ] = '' ; showmsg(L( 'code_error' ), '' , 1); } $data = $this ->_check( $_POST [ 'mobile' ],2); if ( empty ( $data [ 'mobile' ])) showmsg( '您沒有綁定手機,請選擇其他方式找回密碼!' , 'stop' ); $ret = resetsms( $data [ 'mobile' ]); if ( $ret != 0) { showmsg( '短信發送失敗,請聯系網站管理員!' ); } $_SESSION [ 'mobile' ] = $data [ 'mobile' ]; $_SESSION [ 'userid' ] = $data [ 'userid' ]; $_SESSION [ 'emc_times' ] = 5; $_SESSION [ 'step' ] = 2; } elseif ( $_SESSION [ 'step' ] ==2 && isset( $_POST [ 'dosubmit' ])){ if ( $_SESSION [ 'emc_times' ]== '' || $_SESSION [ 'emc_times' ]<=0){ $_SESSION [ 'step' ] = 1; showmsg( "驗證次數超過5次,請重新獲取短信驗證碼!" ); } if (! empty ( $_SESSION [ 'mobile_code' ]) && strtolower ( $_POST [ 'mobile_code' ]) == strtolower ( $_SESSION [ 'mobile_code' ])){ unset( $_SESSION [ 'emc_times' ]); $_SESSION [ 'step' ] = 3; } else { $_SESSION [ 'emc_times' ] = $_SESSION [ 'emc_times' ]-1; showmsg( '短信校驗碼錯誤!' , '' ,1); } } else if ( $_SESSION [ 'step' ]==3 && isset( $_POST [ 'dosubmit' ])){ if (!isset( $_POST [ 'password' ]) || !is_password( $_POST [ 'password' ])) showmsg(L( 'password_format_error' )); D( 'member' )->update( array ( 'password' => password( $_POST [ 'password' ])), array ( 'userid' => $_SESSION [ 'userid' ])); unset( $_SESSION [ 'step' ], $_SESSION [ 'code' ], $_SESSION [ 'mobile_code' ], $_SESSION [ 'mobile' ], $_SESSION [ 'userid' ]); showmsg( '更新密碼成功!' , U( 'member/index/login' )); } include template( 'member' , 'reset_mobile' ); } |
7.打開項目:\common\function\system.func.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
|
function sendsms( $mobile ) { $config = get_config(); $user = $config [ 'smsbao_user' ]; $pass = $config [ 'smsbao_pass' ]; $sign = $config [ 'smsbao_sign' ]; if ( empty ( $user ) && empty ( $pass ) && empty ( $sign )) { return_json( array ( 'status' =>0, 'message' => '短信配置錯誤' )); } $code = rand(1000,9999); $content = '【' . $sign . '】您的驗證碼為:' . $code . '請妥善保存!' ; $result = file_get_contents ( $url ); if ( $result == 0) { $_SESSION [ 'mobile_code' ] = $code ; setcache( $mobile , time(),60); return_json( array ( 'status' =>1, 'message' => '發送成功' )); } else { return_json( array ( 'status' =>0, 'message' => '發送失敗' )); } } function resetsms( $mobile ) { $config = get_config(); $user = $config [ 'smsbao_user' ]; $pass = $config [ 'smsbao_pass' ]; $sign = $config [ 'smsbao_sign' ]; if ( empty ( $user ) && empty ( $pass ) && empty ( $sign )) { return 1; } $code = rand(1000,9999); $content = '【' . $sign . '】您的驗證碼為:' . $code . '請妥善保存!' ; $result = file_get_contents ( $url ); if ( $result == 0) { $_SESSION [ 'mobile_code' ] = $code ; return 0; } else { return 1; } } |
8.打開項目:\application\member\view\default\reset_type.html 增加手機找回密碼的方式
1
2
3
4
|
< div class = "reset_type" > < span >1.</ span >通過手機找回密碼 < a href = "{U('reset_mobile')}" >立即找回</ a > </ div > |
好了經過以上的添加,短信寶的短信平臺已經替換成功了,可以正常使用了
報備一下短信寶的VIP模板,這樣就可以走短信寶的優質通道了,即便遇到敏感文字我們都不會人工審核,短信內容3~5秒就可送達。
另外:我們已經開發好完整的YzmCms_v7.3系統短信寶插件,點擊此鏈接 下載及查看安裝流程。
最新更新
電商類
CMS類
微信類