91成人在线播放_欧美一区二区视频在线观看_91精品国产高清久久久久久_国产精品久久亚洲不卡4k岛国


待發短信

在線客服
產品支持 短信寶客服
合作渠道 渠道合作
服務咨詢

4001-021-502

工作時間

9:00-21:00

短信寶短信驗證碼開發教程 – 4.后端篇

這篇文件教大家怎么處理后端的業務邏輯。后端的業務我把它分成2塊來處理:1. 獲取短信驗證碼的業務處理。 2. 提交表單完成模擬注冊。

一. 獲取短信驗證碼 :打開sms/register.php這個文件,在表單中找到“獲取驗證碼”的button標簽。獲取驗證碼是通過這個按鈕觸發js事件,ajax調用后臺接口來完成發送的。

我們在sms/tool目錄中,創建一個sendCode.php文件,這個php文件主要用于處理后端的發送短信驗證碼業務。我先來闡述一下開發的思路:

1. 引入數據驗證類,sms/tool/CheckTool.php 2. 接收前端ajax發送過來的表單數據:用戶的手機號碼和圖形驗證碼。 3. 驗證表單提交的數據合法性。 4. 如果數據全部合法,就調用短信寶的短信接口,發送短信驗證碼。 5. 最后記錄發送時間和發送的手機號碼。這一點很重要,可以用來限制一個手機號碼,在一段時間里面只能對短信寶的短信接口請求一次,從而限制了重復提交。我這里為了演示方便,把時間記錄在session里面,小伙伴們也可以記錄在數據庫里面。 代碼如下:

?
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
<?php
// 引入驗證類
require 'CheckTool.php';
// 短息請求錯誤碼
$statusStr array(
    "0" => "短信發送成功",
    "-1" => "參數不全",
    "-2" => "服務器空間不支持,請確認支持curl或者fsocket,聯系您的空間商解決或者更換空間!",
    "30" => "密碼錯誤",
    "40" => "賬號不存在",
    "41" => "余額不足",
    "42" => "帳戶已過期",
    "43" => "IP地址限制",
    "50" => "內容含有敏感詞"
);
 
$res array();
$postCode = trim($_POST['code']);
$postPhone = trim($_POST['phone']);
// 驗證圖形驗證碼的合法性
$isOk = CheckTool::checkCode($postCode);
 
if (true !== $isOk) {
    echo responseErr($isOk'code');
    exit();
}
// 驗證手機號碼的合法性
$isOk = CheckTool::checkPhone($postPhone);
 
if (true !== $isOk) {
    echo responseErr($isOk'phone');
    exit();
}
// 調用短信發送接口
$isOk = sendSms($postPhone);
 
// 短信發送失敗
if (0 != $isOk) {
    echo responseErr($statusStr[$isOk], 'send');
    exit();
}
 
// 短信發送成功
$res['flg'] = 1;
// 記錄發送時間
$_SESSION['send_time'] = time();
// 記錄用戶的手機號碼
$_SESSION['send_phone'] = $postPhone;
echo json_encode($res);
 
/**
 * 調用短信寶的短信接口,發送短信請求。
 * @param $phoneNum
 * @return string
 */
function sendSms($phoneNum) {
    $data include('../config/config.php');
 
    if (empty($data)) {
        return "40";
    }
 
    $url 'http://www.gjrencai.com/sms?';
    $userName $data['smsbao_name']; //數據庫獲取用戶名
    $password = md5($data['smsbao_password']); //數據庫獲取密碼
    $phone $phoneNum;
    $code = rand(100000, 999999);
    $content '【短信寶】你的短信驗證碼為'.$code.',請及時查收,如非本人操作,請忽略。';
    $url .= 'u=' $userName '&p=' $password '&m=' $phone '&c=' . urlencode($content);
    $_SESSION['sms_code'] = $code;
 
    return file_get_contents($url);
}
 
/**
 * 向前端發送錯誤信息
 * @param $msg
 * @param $type
 * @return string
 */
function responseErr($msg$type)
{
    $res array();
    $res['flg'] = -1;
    $res['err'] = $msg;
    $res['type'] = $type;
 
    return json_encode($res);
}

二. 提交表單完成模擬注冊: 當收到短信寶接口發出的短信驗證碼時,把驗證碼填入到表單中,點擊提交按鈕就完成了整個模擬驗證過程。 表單提交到當前頁面上,也就是sms/register.php中。我們先分析一下,具體需要做哪些事情: (1). 當頁面加載時,獲取用戶上次發送短信驗證碼的時間,以及當前時間。如果:當前時間 – 上次發送時間 < 間隔時間,那么前端的發送按鈕進入倒計時狀態。 (2). 驗證表單提交的數據。成功后跳轉。 代碼如下:

?
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
<?php
// 開啟session
session_start();
// 引入工具類
require('tool/CheckTool.php');
require('tool/Helpers.php');
 
$diff '';
 
// 得到上次短信請求時間,和當前時間做對比。
if (isset($_SESSION['send_time']) && is_int($_SESSION['send_time'])) {
    $currentTime = time();
    $diff $currentTime $_SESSION['send_time'];
    $diff $diff < 60 ? 60 - $diff '';
}
 
// 獲取表單數據,進行驗證,成功后跳轉到登入頁面。
if (!empty($_POST['is_send'])) {
    // 去除提交數據的兩端空格。
    $data = Helpers::removeSpaces($_POST);
    $res = CheckTool::exec($data);
 
    if (!is_array($res) && true === $res) {
        // 清除記錄的驗證碼和手機號碼
        $_SESSION['sms_code'] = null;
        $_SESSION['send_phone'] = null;
        unset($_SESSION['sms_code']);
        unset($_SESSION['send_phone']);
        header("Location:login.php");
        exit();
    }
}
 
?>

提交完成后,跳轉到成功提示頁面sms/login.php中。代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登入頁面</title>
</head>
<body>
    <p style="text-align: center; margin-top:30px; font-size:25px;">恭喜你!登入成功!
        <a style="color:blue;" href="register.php">返回</a>注冊界面。
    </p>
</body>
</html>

好了,后端的業務邏輯都在這里了。關于前端的接口調用,短信發送后的倒計時等功能,我們留到這個系列的最后一篇,“前端篇”來介紹。

開源插件

最新更新

電商類

CMS類

微信類

文章標簽