php實現登入簡訊驗證
阿新 • • 發佈:2022-05-03
今天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;//號碼輸入有誤 } }