tp5簡訊驗證
阿新 • • 發佈:2019-01-09
思路: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¶m=替換引數&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('登入成功');
}
}