1. 程式人生 > >tp5簡訊驗證

tp5簡訊驗證

思路:1:給以個按鈕,獲取驗證,給一個id、點選事件

           2:獲取手機號,用ajax傳到後臺

           3:後臺接收手機號,寫一個隨機函式作為驗證碼

           4:簡訊傳送成功後可以用cookie或者memcache(memcache更好)存放接收的驗證碼

           5:判斷驗證碼是否輸入正確 

註釋:我這個做的簡單就是實現一下功能,如果是業務邏輯的話,接收完手機號還要和資料庫匹配判斷手機號是否存在,不存在跳轉到註冊頁面,號碼存在判斷驗證碼是否輸入正確,正確跳到首頁。            驗證碼不用入庫,用memcache快取下來(為了好寫我用的cookie),然後生成的驗證碼與輸入的驗證碼對比,判斷是否一樣
 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="{:url('index/login')}" method="post">
    <table>
        <tr>
            <td>手機號</td>
            <td><input type="text" name="phone"></td>
        </tr>
        <tr>
            <td>驗證碼</td>
            <td>
                <input type="text" name="code" style="width: 70px">
                <input type="button" id="code" value="獲取驗證碼">
            </td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="登入"></td>
        </tr>
    </table>
</form>
</body>
</html>
<script src="__STATIC__/jquery.js"></script>
<script>
    $("#code").click(function(){
        var phone=$("[name=phone]").val();
        $.ajax({
            type: "POST",
            url: "{:url('index/add')}",
            data: {phone:phone},
            success: function(msg){
                if(msg == 1){
                    alert( '簡訊傳送成功' );
                }
            }
        });
    })
 
</script>
public function add(){
        if(Request::instance()->isGet()){
            return view('add');
        }else{
            //獲取手機號
            $phone = $_POST['phone'];
            //生成的驗證碼
            $a = rand(1000,9999);
            $b='code='.$a;
            $param = urlencode($b);
            $url="http://api.k780.com:88/?app=sms.send&tempid=你建立的模板ID&param=替換引數&phone=手機號碼&appkey=您申請的APPKEY&sign=您申請的SIGN&format=json";
 
            //獲取驗證碼 是否成功   (獲取頁面內容)
            $a1 = file_get_contents($url);
            //成功時返回的的 物件
            $str =$a1;
            //物件解析成PHP陣列
            $aa = json_decode($str,true);
            if($aa['success'] == 1){
                //把接到的驗證碼放到 cookie裡
                setcookie('code',$a);
                return 1;
            }else{
                return 2;
            }
        }
 
    }
 
    public function login()
    {
         //接受的驗證碼
        $code = $_POST['code'];
        //cookie存的驗證碼
        $a=$_COOKIE['code'];
        //判斷是否相等
        if($code==$a){
            $this->success('登入成功');
        }
    }