YzmCMS是一款輕量級(jí)開(kāi)源內(nèi)容管理系統(tǒng),它采用OOP(面向?qū)ο螅┓绞阶灾鏖_(kāi)發(fā)的框架。基于PHP+Mysql架構(gòu),并采用MVC框架式開(kāi)發(fā)的一款高效開(kāi)源的內(nèi)容管理系統(tǒng)。便于進(jìn)行二次開(kāi)發(fā),小編對(duì)這款軟件還是比較了解的,小編今天就以新增短信接口為例為大家講解一下如何進(jìn)行二次開(kāi)發(fā),我們使用的短信接口是我們短信寶短信群發(fā)平臺(tái)的短信接口,我們短信寶短信群發(fā)平臺(tái)非常穩(wěn)定,發(fā)送速度快,注冊(cè)就送測(cè)試短信,推薦大家使用。
1:打開(kāi)項(xiàng)目:\application\admin\view\system_set.html 增加短信頁(yè)面代碼
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:打開(kāi)項(xiàng)目:\application\member\view\member_set.html 在18行增加以下代碼
1
2
3
4
5
6
7
8
|
<div class= "row cl" > <label class= "form-label col-xs-4 col-sm-2" >新會(huì)員注冊(cè)短信驗(yàn)證:</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" > 開(kāi)啟</label> <label class= "label_radio" ><input name= "member_mobile" type= "radio" <?php echo $data[ "member_mobile" ]? '' : 'checked' ?> value= "0" > 關(guān)閉</label> <span style= "color:#888" > [需填寫(xiě)短信配置,且開(kāi)啟后會(huì)員注冊(cè)審核功能無(wú)效]</span> </div> </div> |
3:打開(kāi)項(xiàng)目:\application\member\view\member_add.html 增加手機(jī)號(hào)選擇項(xiàng)
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
|
<form method= "post" onsubmit= "return dosub(this)" > <ul> <li><label><span class= "c-red" >*</span>用戶名:</label><input type= "text" class= "input" name= "username" value= "" onblur= "get_nickname()" ></li> <li><label><span class= "c-red" >*</span>密碼:</label><input type= "text" class= "input" name= "password" value= "" ></li> <li><label>昵稱:</label><input type= "text" class= "input" name= "nickname" value= "" ></li> <li><label><span class= "c-red" >*</span>郵箱:</label><input type= "email" class= "input" name= "email" value= "" >><span class= "c-red" >*</span>手機(jī)號(hào)碼:</label><input type= "mobile" class= "input" name= "mobile" value= "" ></li> <li><label><span class= "c-red" >*</span>會(huì)員組:</label> <span class= "span_input" ><select name= "groupid" style= "margin-left:0px;" > <?php foreach($member_group as $val){ echo '<option value="' .$val[ 'groupid' ]. '">' .$val[ 'name' ]. '</option>' ; } ?> </select> <span class= "c-red" >*會(huì)員組別影響到經(jīng)驗(yàn)</span></span> </li> <li><label><span class= "c-red" >*</span>積分:</label><input type= "text" class= "input" name= "point" value= "0" ></li> <li><label>vip會(huì)員:</label> <span class= "span_input" title= "vip會(huì)員可以免積分查看付費(fèi)內(nèi)容" >是否為vip會(huì)員 <input name= "vip" value= "1" type= "checkbox" > 過(guò)期時(shí)間 <input type= "text" class= "input-text laydate-icon" style= "width:175px;height:30px;" name= "overduedate" value= "" onclick= "laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'})" ></span> </li> <li><input type= "hidden" name= "dosubmit" value= "1" > <input class= "dosubmit w_120 btn-primary radius" type= "submit" value= "提交" > <input class= "btn w_120 btn-default radius" type= "button" value= "取消" onclick= "yzmcms_close()" > </li> </ul> </form> |
4:打開(kāi)項(xiàng)目:\application\member\controller\index.class.php 修改注冊(cè)方法
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
|
public function register(){ $config = get_config(); //檢查是否允許新會(huì)員注冊(cè) if ($config[ 'member_register' ] == 0) showmsg( '管理員關(guān)閉了新會(huì)員注冊(cè)!' , 'stop' ); if (isset($_SESSION[ '_userid' ]) && $_SESSION[ '_userid' ]){ showmsg(L( 'login_success' ), U( 'member/index/init' ), 1); } if (isset($_POST[ 'dosubmit' ])){ if (empty($_SESSION[ 'code' ]) || strtolower($_POST[ 'code' ]) != $_SESSION[ 'code' ]){ $_SESSION[ 'code' ] = '' ; showmsg(L( 'code_error' ), '' , 1); } if (empty($_SESSION[ 'mobile_code' ]) || strtolower($_POST[ 'mobile_code' ]) != $_SESSION[ 'mobile_code' ]) { $_SESSION[ 'mobile_code' ] = '' ; showmsg(L( '手機(jī)驗(yàn)證碼不正確' ), '' ,1); } $_SESSION[ 'code' ] = '' ; $member = D( 'member' ); $data = array(); $data[ 'username' ] = isset($_POST[ 'username' ]) && is_username($_POST[ 'username' ]) ? trim($_POST[ 'username' ]) : showmsg(L( 'user_name_format_error' )); $data[ 'password' ] = isset($_POST[ 'password' ]) && is_password($_POST[ 'password' ]) ? trim($_POST[ 'password' ]) : showmsg(L( 'password_format_error' )); $data[ 'email' ] = isset($_POST[ 'email' ]) && is_email($_POST[ 'email' ]) ? trim($_POST[ 'email' ]) : showmsg(L( 'mail_format_error' )); $data[ 'mobile' ] = isset($_POST[ 'mobile' ]) && is_mobile($_POST[ 'mobile' ]) ? trim($_POST[ 'mobile' ]) : showmsg(L( '手機(jī)號(hào)不正確' )); $result = $member->where(array( 'username' =>$_POST[ 'username' ]))->find(); if ($result) showmsg(L( 'user_already_exists' )); $result = $member->field( 'userid' )->where(array( 'email' =>$_POST[ 'email' ]))->find(); if ($result) showmsg( "郵箱已存在!" ); $results = $member->where(array( 'mobile' =>$_POST[ 'mobile' ]))->find(); if ($results) showmsg( "手機(jī)已存在" ); $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' ]; //經(jīng)驗(yàn)和積分 $data[ 'status' ] = ($config[ 'member_check' ] || $config[ 'member_email' ]) ? 0 : 1; $data[ 'userid' ] = $member->insert($data, true ); if (!$data[ 'userid' ]) showmsg( "注冊(cè)失敗!" ); D( 'member_detail' )->insert($data, true , false ); //插入附表 if ($config[ 'member_email' ]){ //需要郵件驗(yàn)證 $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)); $message = '<p>您正在注冊(cè)' .get_config( 'site_name' ). '網(wǎng)站會(huì)員:</p><p>請(qǐng)點(diǎn)擊如下鏈接進(jìn)行郵箱驗(yàn)證:<a href="' . $url . '" target="_blank">' . $url . '</a></p><p>驗(yàn)證有效期為30分鐘!</p>' ; $res = sendmail($data[ 'email' ], '會(huì)員注冊(cè)郵箱驗(yàn)證' , $message); if (!$res) showmsg( '郵件發(fā)送失敗,請(qǐng)聯(lián)系網(wǎng)站管理員!' , 'stop' ); showmsg( '我們已將郵件發(fā)送到您的郵箱,請(qǐng)盡快完成驗(yàn)證!' ); }elseif($config[ 'member_check' ]){ //需要管理員審核 showmsg( '注冊(cè)成功,由于管理員開(kāi)啟審核機(jī)制,請(qǐng)耐心等待!' ); } $_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' ]); showmsg( '注冊(cè)成功!' , U( 'member/index/init' ), 1); } 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( '郵箱驗(yàn)證成功!' , U( 'member/index/login' ), 2); } else { showmsg( '郵箱驗(yàn)證失敗,驗(yàn)證時(shí)間已失效!' , U( 'member/index/register' )); } } include template( 'member' , 'register' ); } } |
5:打開(kāi)項(xiàng)目:\application\member\controller\reset.class.php 增加手機(jī)號(hào)重置類
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
|
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[ 'username' ]); if (empty($data[ 'mobile' ])) showmsg( '您沒(méi)有綁定手機(jī),請(qǐng)選擇其他方式找回密碼!' , 'stop' ); $ret = sendsms($data[ 'mobile' ]); if ($ret != 0) { showmsg( '短信發(fā)送失敗,請(qǐng)聯(lián)系網(wǎng)站管理員!' ); } $_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( "驗(yàn)證次數(shù)超過(guò)5次,請(qǐng)重新獲取短信驗(yàn)證碼!" ); } 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( '短信校驗(yàn)碼錯(cuò)誤!' , '' ,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' ); } |
6:打開(kāi)項(xiàng)目:\common\function\system.func.php 增加發(fā)送類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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 2; } $code = rand(1000,9999); $content = '【' .$sign. '】您的驗(yàn)證碼為:' .$code. '請(qǐng)妥善保存!' ; $result = file_get_contents($url); if ($result == 0) { $_SESSION[ 'mobile_code' ] = $code; return '0' ; } else { return $result; } } |
7:打開(kāi)項(xiàng)目:\application\member\view\default\reset_type.html 增加手機(jī)找回密碼的方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<div class= "main" > <h1>請(qǐng)選擇密碼找回方式</h1> <div class= "main_left" > <div class= "reset_type" > <span>1.</span>通過(guò)手機(jī)找回密碼 <a href= "{U('reset_mobile')}" >立即找回</a> </div> <div class= "reset_type" > <span>1.</span>通過(guò)電子郵箱找回密碼 <a href= "{U('reset_email')}" >立即找回</a> </div> <div class= "reset_type" > <span>2.</span>通過(guò)安全問(wèn)題找回密碼 <a href= "{U('reset_problem')}" >立即找回</a> </div> </div> |
8:打開(kāi)項(xiàng)目:\application\member\view\default\register.html 增加校驗(yàn)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
69
70
71
72
73
74
75
76
77
78
79
80
|
<script type= "text/javascript" > var time = 0; var res = null ; function sendTime(){ clearTimeout(res); // 先清空一下倒計(jì)時(shí)資源。 time--; // 倒計(jì)時(shí)時(shí)間遞減。 // 如果倒計(jì)時(shí)到達(dá)0時(shí),則恢復(fù)按鈕原來(lái)的內(nèi)容 if (time <= 0) { time = "獲取驗(yàn)證碼" ; $( '.huoqu' ).text(time); clearTimeout(res); time = 0; return ; } // 倒計(jì)時(shí)的內(nèi)容寫(xiě)到按鈕里面 $( '.huoqu' ).text( "剩余" + time + "秒" ); res = setTimeout( "sendTime()" , 1000); } $( function (){ var flg = true ; $( '.huoqu' ).on( 'click' , function (){ console.log(123); 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( '請(qǐng)?zhí)顚?xiě)驗(yàn)證碼' ); return ret;} if (!reg.test(mobile)) {layer.msg( '手機(jī)號(hào)碼不正確' ); return ret;} if (0 == time) { var data = { "code" : code, "mobile" : mobile}; console.log(data); var err = "" ; if (flg == true ) { flg = false ; // ajax提交請(qǐng)求 $.ajax({ type: "post" , url: "{U('public_checksms')}" , dataType: "html" , async: false , data: data, beforeSend: function (){ $( "#dosubmit" ).attr({ disabled: "disabled" }); }, success: function (msg){ if (msg == '0' ){ time = 60; sendTime(); layer.msg( '短信發(fā)送成功!' ); ret = true ; } else if (msg == '1' ){ layer.msg( '驗(yàn)證碼不正確' ); } else if (msg == '2' ){ layer.msg( '短信配置不正確' ); } else { layer.msg(msg); } } }); } $( '.codeimg' ).click(); return ret; } }) }) </script> |
好了,經(jīng)過(guò)以上的替換,短信寶的短信平臺(tái)已經(jīng)替換成功了,可以正常使用了。我們進(jìn)行測(cè)試發(fā)送。
報(bào)備一下短信寶的VIP模板,這樣就可以走短信寶的優(yōu)質(zhì)通道了,即便遇到敏感文字我們都不會(huì)人工審核,短信內(nèi)容3~5秒就可送達(dá)。
另外:我們已經(jīng)開(kāi)發(fā)好完整的YzmCMS_V5.8系統(tǒng)短信寶插件,點(diǎn)擊此鏈接 下載及查看安裝流程。
最新更新
電商類
CMS類
微信類