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


待發短信

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

4001-021-502

工作時間

9:00-21:00

短信寶短信驗證碼開發教程 – 2.準備篇


現在跟著我一起來做短信驗證碼開發前的準備工作,工作需要完成以下幾點:定義目錄結構。使用html+css對案例的頁面進行布局。創建配置文件。編寫開發中的幫助文件和數據驗證文件。好了,開工!!

目錄結構定義工作: 

先創建目錄,需要一個項目目錄,配置文件目錄,js文件目錄,字體文件目錄,工具文件目錄。定義完成的目錄結構如下: 

sms — 項目目錄 

sms/config — 配置文件目錄 

sms/js — javascript文件目錄 

sms/font — 字體文件目錄 

sms/tool — 工具文件目錄

使用html+css對案例的頁面進行布局: 

在項目目錄sms下創建register.php文件,用于模擬用戶注冊的界面。其代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {margin:0; padding:0;}
        h1 {margin:30px 0 25px 0;}
        .form-input {margin-bottom:10px;}
        .form-input input {width:200px; height:25px;}
        .form-input button {width:60px; height:25px;}
        #main {width:500px; margin:0 auto;}
        #vcode {width:80px;}

        #phone_code {width:80px;}
        .code_label {position:relative;}
        .code_label img {position:absolute; top:-5px; left:185px; cursor: pointer;}
        .code_label button {width:90px; cursor: pointer;}
    </style>
    <script src="js/jquery.js"></script>
</head>
<body>
<div id="main">
    <h1>用戶注冊</h1>
    <form method="post" action="register.php">
        <div class="form-input">
            <label>
                手機號碼&emsp;
                <input type="text" name="phone" value=""/>
                <p id="phone_err" class="errmsg" style="margin:5px 0 0 88px; color:red;"></p>
            </label>
        </div>
        <div class="form-input">
            <label>
                密&emsp;&emsp;碼&emsp;
                <input type="password" name="password" value=""/>
                <p id="phone_err" class="errmsg" style="margin:5px 0 0 88px; color:red;"></p>
            </label>
        </div>
        <div class="form-input">
            <label>
                確認密碼&emsp;
                <input type="password" name="repassword" value=""/>
            </label>
        </div>

        <div class="form-input">
            <label class="code_label">
                驗&ensp;證&ensp;碼&emsp;
                <input id="vcode" type="text" name="vcode" value=""/>
                <img id="code_img" src=""/>
                <p id="code_err" class="errmsg" style="margin:5px 0 0 88px; color:red;"></p>
            </label>
        </div>
        <div class="form-input">
            <label class="code_label">
                手機驗證碼
                <input id="phone_code" type="text" name="code" value=""/>
                <button type="button" id="get_code">獲取驗證碼</button>
                <p id="phone_err" class="errmsg" style="margin:5px 0 0 88px; color:red;"></p>
            </label>
        </div>
        <input type="hidden" name="is_send" value="1"/>
        <div class="form-input">
            <label>
                <button type="submit">提 交</button>
            </label>
        </div>
    </form>
</div>

</body>
</html>

js文件和字體文件: 

在sms/js目錄中添加jquery庫文件,在sms/font目錄中添加consola.ttf字體文件。這2個文件在我代碼案例中已經提供,可以拿來直接使用。也可以到網上去下載。

配置文件的使用: 

在sms/config目錄下創建config.php這個配置文件,并且在文件中配置自己的短信接口賬號和密碼,在案例中使用的是短信寶的接口,所以直接配置短信寶的賬號密碼就好了。
如果沒有短信寶的賬號和面,可以去他們的官網注冊一個,注冊還免費送短信哦。配置的代碼如下:

<?php
return array(
    'smsbao_name' => '您的短信寶賬號',
    'smsbao_password' => '您的短信寶密碼', 
);

 

工具文件創建: 

這里我們需要創建1個工具文件,用于驗證填寫的模擬注冊信息是否正確的。 

在sms/tool目錄下創建CheckTool.php 用于負責數據驗證,代碼如下:

<?php
class CheckTool
{
    /**
     * @var array 錯誤提示代碼
     */
    private static $errArr = array(
        0 => '用戶名不得為空',
        1 => '密碼不能為空',
        2 => '2次輸入的密碼不一致',
        3 => '手機驗證碼不正確',
        4 => '驗證碼不得為空',
        5 => '驗證碼填寫不正確',
        6 => '手機號碼格式不正確',
        7 => '手機號碼必須填寫',
        8 => '請先獲取短信驗證碼',
        9 => '短信驗證碼不正確',
        10 => '密碼不得少于6位數',
        11 => '驗證的手機號碼和當前的手機號碼不一致'
    );

    /**
     * 數據執行驗證的總接口
     * @param $data
     * @return bool
     */
    public static function exec($data)
    {
        $errType['phone'] = self::checkPhone($data['phone']);
        $errType['password'] = self::checkPassword($data['password'], $data['repassword']);
        $errType['code'] = self::checkSmsCode($data['code']);

        return self::checkErr($errType);
    }

    /**
     * 返回錯誤碼,如果驗證沒有錯誤,則返回true
     * @param $errorData
     * @return bool
     */
    public static function checkErr($errorData)
    {
        $cnt = count($errorData);
        $postOk = 0;

        foreach ($errorData as $key => $item) {
            if (true === $item) {
                $errorData[$key] = '';
                ++$postOk;
            }
        }

        return $cnt == $postOk ? true : $errorData;
    }

    /**
     * 驗證短信發送的驗證碼是否正確
     * @param $code
     * @return bool|mixed
     */
    public static function checkSmsCode($code)
    {
        if (!isset($_SESSION['sms_code']) || empty($_SESSION['sms_code'])) {
            return self::$errArr[8];
        }

        if (0 !== strcmp($_SESSION['sms_code'], $code)) {
            return self::$errArr[9];
        }

        return true;
    }

    /**
     * 驗證密碼的正確性,以及2次輸入是否一致。
     * @param $password
     * @param $repassword
     * @return bool|mixed
     */
    public static function checkPassword($password, $repassword)
    {
        if (empty($password)) {
            return self::$errArr[1];
        }

        if (!is_string($password) || strlen($password) < 6) {
            return self::$errArr[10];
        }

        if (0 !== strcmp($password, $repassword)) {
            return self::$errArr[2];
        }

        return true;
    }

    /**
     * 驗證用戶名
     * @param $name
     * @return bool|mixed
     */
    public static function checkName($name)
    {
        if (empty($name)) {
            return self::$errArr[0];
        }

        return true;
    }


    /**
     * 驗證碼的驗證
     * @param $code
     * @return bool|mixed
     */
    public static function checkCode($code)
    {
        if (empty($code)) {
            return self::$errArr[4];
        }

        session_start();
        $code = strtolower($code);
        $sessionCode = strtolower($_SESSION['code']);

        if (0 !== strcmp($code, $sessionCode)) {
            return self::$errArr[5];
        }

        return true;
    }

    /**
     * 手機號碼驗證規則
     * @param $phone
     * @return bool|mixed
     */
    public static function checkPhone($phone)
    {
        if (empty($phone)) {
            return self::$errArr[7];
        }

        $isOk = preg_match('/^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|189[0-9]{8}$/', $phone);

        if (!$isOk) {
            return self::$errArr[6];
        }

        if (isset($_SESSION['send_phone'])) {
            if (0 !== strcmp($_SESSION['send_phone'], $phone)) {
                return self::$errArr[11];
            }
        }

        return true;
    }
}

準備工作完成,后面的文章帶大家進入正式開發階段。
 

開源插件

最新更新

電商類

CMS類

微信類

文章標簽
91成人在线播放_欧美一区二区视频在线观看_91精品国产高清久久久久久_国产精品久久亚洲不卡4k岛国
成人网在线播放| 国产一区美女在线| 免费在线观看不卡| 91精品福利视频| 一区二区三区四区亚洲| 99久久国产免费看| 亚洲女性喷水在线观看一区| 99精品热视频| 一区二区视频免费在线观看| 在线观看免费亚洲| 男女性色大片免费观看一区二区| 日韩女优av电影| 国产老女人精品毛片久久| 国产精品久久久久久久岛一牛影视| 成人福利在线看| 亚洲一区二区偷拍精品| 欧美精品久久一区二区三区| 久久超级碰视频| 欧美电视剧在线观看完整版| 国产高清精品久久久久| 亚洲激情欧美激情| 9191久久久久久久久久久| 日产欧产美韩系列久久99| 337p亚洲精品色噜噜| 国产麻豆视频一区| 国产精品久久久久aaaa樱花| 欧美乱妇20p| 福利一区二区在线| 中文字幕五月欧美| 日韩一区二区不卡| 91国偷自产一区二区开放时间| 午夜视黄欧洲亚洲| 中文字幕一区二区三区视频| 欧美日韩国产精品成人| 成人爱爱电影网址| 久久99久久99| 亚洲福中文字幕伊人影院| 欧美国产精品专区| 日韩一级黄色大片| 欧美午夜精品久久久久久超碰| 国产精品影视在线观看| 午夜视频久久久久久| 国产精品女主播在线观看| 日韩欧美高清dvd碟片| 欧美日韩一区成人| 91日韩一区二区三区| 国产成人综合视频| 国内久久精品视频| 麻豆视频观看网址久久| 亚洲国产乱码最新视频| 中文字幕一区二区三区乱码在线| 久久看人人爽人人| 欧美va日韩va| 欧美精品国产精品| 欧美专区亚洲专区| 欧美中文字幕不卡| 欧美伊人久久大香线蕉综合69 | 亚洲一区二区三区四区在线免费观看| 久久久久亚洲蜜桃| 欧美成人女星排名| 精品欧美一区二区三区精品久久 | 日一区二区三区| 亚洲成av人影院| 亚洲成人自拍偷拍| 日韩国产高清在线| 青青草国产成人av片免费| 青青草97国产精品免费观看 | 91精品国产91综合久久蜜臀| 欧美日韩免费观看一区三区| 欧美视频一区二区三区在线观看 | 国产欧美一区二区精品婷婷| 国产日韩欧美不卡在线| 国产精品国产三级国产三级人妇| 日本一区二区三区四区在线视频| 国产精品青草久久| 亚洲欧洲性图库| 亚洲精品日产精品乱码不卡| 亚洲视频你懂的| 亚洲电影一级片| 美女视频免费一区| 国产69精品久久久久毛片 | 一本久久综合亚洲鲁鲁五月天 | 欧美二区在线观看| 亚洲精品一区二区三区在线观看| 国产视频一区在线播放| 中文字幕一区二区视频| 亚洲国产sm捆绑调教视频| 男男gaygay亚洲| 成人午夜免费av| 欧美三级欧美一级| 久久嫩草精品久久久久| 亚洲欧美激情插 | 欧美一区二区不卡视频| 国产女人18水真多18精品一级做| 亚洲欧美国产77777| 欧美aaa在线| 成人精品鲁一区一区二区| 欧美影视一区在线| 国产喂奶挤奶一区二区三区| 怡红院av一区二区三区| 激情偷乱视频一区二区三区| 一本久久综合亚洲鲁鲁五月天| 日韩欧美一区在线观看| 亚洲欧美中日韩| 免费欧美日韩国产三级电影| 国产成人免费视频网站高清观看视频 | 欧美成人三级在线| 亚洲人快播电影网| 国产一区二区电影| 欧美乱妇15p| 国产精品二区一区二区aⅴ污介绍| 亚洲国产精品一区二区www在线 | av一二三不卡影片| 日韩精品中文字幕一区| 亚洲人成亚洲人成在线观看图片| 蜜桃在线一区二区三区| 色菇凉天天综合网| 久久精品视频一区| 奇米精品一区二区三区在线观看 | 一区二区在线观看av| 懂色av中文字幕一区二区三区 | 国产欧美一区二区精品久导航 | 日韩一区有码在线| 国产美女精品人人做人人爽| 91精品在线一区二区| 亚洲欧美日韩中文播放| 粉嫩13p一区二区三区| 日韩午夜中文字幕| 污片在线观看一区二区| 91成人网在线| 亚洲天天做日日做天天谢日日欢| 国产综合色产在线精品| 日韩女优av电影在线观看| 亚洲曰韩产成在线| 色婷婷综合五月| 国产精品国产三级国产aⅴ入口 | 日韩福利视频网| 欧美人妖巨大在线| 亚洲6080在线| 欧美无人高清视频在线观看| 亚洲色图欧洲色图婷婷| 波多野结衣91| 亚洲视频一区二区在线| 91免费看`日韩一区二区| 亚洲天天做日日做天天谢日日欢| 国产成人夜色高潮福利影视| 久久综合狠狠综合久久激情| 精品亚洲aⅴ乱码一区二区三区| 91麻豆精品国产91久久久久| 天堂资源在线中文精品| 777色狠狠一区二区三区| 日韩精品三区四区| 日韩精品一区二区三区在线观看| 麻豆一区二区99久久久久| 精品国产污网站| 大桥未久av一区二区三区中文| 国产精品久久久久久久久搜平片 | 欧美tk丨vk视频| 久久99这里只有精品| 2020国产成人综合网| 国产a视频精品免费观看| 日韩理论片一区二区| 欧美在线|欧美| 视频在线观看一区二区三区| 欧美一级片在线| 国产在线视频一区二区三区| 国产亚洲人成网站| 丁香啪啪综合成人亚洲小说| 日韩一区有码在线| 欧美日韩午夜精品| 狠狠色丁香久久婷婷综合_中| 国产区在线观看成人精品| 色婷婷精品大在线视频| 免费人成在线不卡| 国产精品乱人伦一区二区| 在线国产亚洲欧美| 国产一区二区三区久久久| 18欧美乱大交hd1984| 777奇米成人网| 成人免费视频app| 亚洲电影一区二区三区| 久久精品水蜜桃av综合天堂| 色婷婷狠狠综合| 日韩国产欧美一区二区三区| 国产精品日日摸夜夜摸av| 欧美日韩国产高清一区二区| 国产精品1区2区3区| 一区二区三区欧美久久| 日韩欧美精品三级| 91在线视频18| 国产在线视频一区二区三区| 一区二区三区精品久久久| 久久久久国产精品麻豆ai换脸| 色94色欧美sute亚洲线路一久| 精品中文av资源站在线观看| 亚洲一区二区在线播放相泽| 国产欧美1区2区3区| 91精品一区二区三区在线观看| 99v久久综合狠狠综合久久| 久久精品久久精品|