1. 程式人生 > 其它 >php實現登入簡訊驗證

php實現登入簡訊驗證

今天benny要跟大家說這個其實很簡單,就是借用某一個平臺的簡訊api介面實現簡訊驗證,說簡單呢,那是因為他的官網:http://www.ucpaas.com上有開發文件,它可以教會一個小白很快的運用它的介面,並開發自己的應用。這個官網還算人性化的,因為你一註冊,就給了你10塊錢的測試費用來嘗試使用它的api,你要知道一條簡訊0.055元,10塊錢給你拿來學習測試已經夠多啦!

首先,你進入官網,註冊,然後你就點選開發文件:

這裡有詳細的介紹你怎麼用它的東西,我就不在這裡bb啦,看完後我們就直接下載一個php的demo檔案來試試!!

下載後,你就可以看到一個封裝的類Ucpaas.class.php和一個index.php的檔案:

上面的註釋有詳細的解釋,要用到的引數啥的,你註冊了賬號後也就自然有了,多看幾遍,有點基礎的人幾分鐘內就可以看得懂的啦!

接著,你就開始閱讀官網下面目錄的內容:

這裡有詳細的介紹,我就只是做一個引導吧,具體的大家去閱讀哦。

最後,我把這個簡訊驗證功能在我的專案上實現了,你可以看下我的程式碼截圖:

<?php
//載入ucpass類
require('library/Db.class.php');
require_once('library/Ucpaas.class.php');
//初始化必填
$options['accountsid']='******';(這個不能給大家看哦)
$options['token']='******';(這個不能給大家看哦)
//初始化 $options必填
$ucpass = new Ucpaas($options);
//開發者賬號資訊查詢預設為json或xml
header("Content-Type:text/html;charset=utf-8");
//簡訊驗證碼(模板簡訊),預設以65個漢字(同65個英文)為一條(可容納字數受您應用名稱佔用字元影響),超過長度簡訊平臺將會自動分割為多條傳送。分割後的多條簡訊將按照具體佔用條數計費。
// 驗證碼簡訊:同一個手機號1分鐘內不能超過2條,24小時內不能超過8條
$appId = "****";(這個不能給大家看哦)
$to=$_POST['to'];
$templateId = "244286";
$string='';
for ($i=0; $i <4 ; $i++) { 
 $string.=rand(0,9);
}
$param=$string;
$db = new DB();
$sql ="select * from mr_user where username = :username";
$user = $db->row($sql,array('username' =>$to));
//使用者名稱存在
$id=$user['id'];
if ($user){
    $password=md5($param);
    $update_sql = "update mr_user set password ='$password' where id='$id'";
    $result_id = $db->query($update_sql);
    if ($result_id){
        $data=$ucpass->templateSMS($appId,$to,$templateId,$param);
        $re='';
        $arr = json_decode($data,true);
        foreach ($arr as $key => $value) {
            if ($key=='resp') {
               foreach ($value as $key2 => $value2) {
                   if ($key2=='respCode') {
                       $re=$value2;
                   }
               }
            }
        }
        if ($re=='000000') {
            echo 1;//簡訊已傳送!
        }elseif ($re=='105147') {
            echo 3;//簡訊傳送太頻繁
        }else{
            echo 2;//號碼輸入有誤
        }
        exit(0);
    }
    else{
        echo 0;//簡訊傳送出錯!
    }
}else {
    $data=$ucpass->templateSMS($appId,$to,$templateId,$param);
    $re='';
    $arr = json_decode($data,true);
    foreach ($arr as $key => $value) {
        if ($key=='resp') {
           foreach ($value as $key2 => $value2) {
               if ($key2=='respCode') {
                   $re=$value2;
               }
           }
        }
    }
    if ($re=='000000') {
        $addtime = time();
        $insert_sql = "insert into mr_user(username,password,addtime) value(:username,:password,$addtime)";
        $result_id = $db->query($insert_sql,array('username' =>$to,'password'=>md5($param)));
        if ($result_id){
            echo 1;//簡訊已傳送!
        }else{
            echo 0;//簡訊傳送出錯!
        }
    }elseif($re='105147'){
        echo 3;//簡訊傳送太頻繁
    }else{
        echo 2;//號碼輸入有誤
    }
}