PHP 短信驗證碼功能
阿新 • • 發佈:2018-07-09
短信發送 lse gin return name 當前 phpstorm ++ 數據
現在網站在建設網站時為了保證用戶信息的真實性,往往會選擇發短信給用戶手機發驗證碼信息,只有通過驗證的用戶才可以註冊,這樣既保證了用戶的聯系信息資料的100%的準確性,也為用戶提供了一種最方便快捷的註冊方式 。
那麽我們今天就來說一下 短信發送原理, 如下圖
工作開發流程:
第一、實現php手機短信驗證功能的基本思路
1、要找到短信服務提供商,接入短信服務
2、在網站信息提交頁面請求發送信息
3、服務器向短信服務提供商通信,提交發送請求
4、短信服務提供商通過運營商將信息發送到用戶的手機中
第二 :手機號碼短信驗證前臺頁面效果實現
<!DOCTYPE html> <html lang="en"> <head> <title>鄭州傳智播客</title> <meta charset="UTF-8"> <meta name="Author" content="PHP就業老師"/> <style type="text/css"> *{margin:0;padding:0;} </style> <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script> <script type="text/javascript"> var InterValObj; //timer變量,控制時間 var count = 60; //間隔函數,1秒執行 var curCount;//當前剩余秒數 function codeRandom(chars) { var res=""; for(var i=0;i<chars;i++){ res += Math.floor(Math.random()*10); } return res; } //timer處理函數 function SetRemainTime() { if (curCount == 0) { window.clearInterval(InterValObj);//停止計時器 $("#sub").removeAttr("disabled");//啟用按鈕 $("#sub").val("重新發送驗證碼"); code = ""; //清除驗證碼。如果不清除,過時間後,輸入收到的驗證碼依然有效 } else { curCount--; $("#sub").val("請在" + curCount + "秒內輸入驗證碼"); } } //獲取手機號碼 $(function () { $("#sub").click(function () { var phone=$("#phone").val(); //獲取手機號碼 curCount = count; if(phone!=‘‘){ //驗證手機有效性 var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/; if(!myreg.test($(‘#phone‘).val())) { alert(‘請輸入有效的手機號碼!‘); return false; } phone = $(‘#phone‘).val(); //驗證碼(隨機生成) var code= codeRandom(4); //設置button效果,開始計時 $("#sub").attr("disabled", "true"); $("#sub").val("請在" + curCount + "秒內輸入驗證碼"); InterValObj = window.setInterval(SetRemainTime, 1000); //啟動計時器,1秒執行一次 //發送數據到後臺 通過Ajax $.ajax({ //設置的參數 type: "post", url: "data.php", data:{"code":code,"phone":phone}, success:function (msg) { alert(msg); } });}else{ alert(‘請填寫手機號碼‘); } }); }); </script> </head> <body> <h1>PHP-短信驗證碼</h1> 手機驗證碼:<input type="text" name="phone" id="phone"> <input id="sub" type="button" value="發送驗證碼" /> </body> </html>
第三、調用短信服務器短信接口
<?php /** * Created by PhpStorm. * User: Leo * Date: 2017/8/30 * Time: 14:59 */ //$_post $phone= isset($_POST[‘phone‘])?$_POST[‘phone‘]:‘‘; $code = isset($_POST[‘code‘])?$_POST[‘code‘]:‘‘; require (dirname(__FILE__).‘/config.php‘); require (dirname(__FILE__).‘/SendSMS.php‘); //實例化短信發送類 $sms= new SendSMS($options[‘account‘],$options[‘password‘]); $context=‘驗證碼‘.$code; $res=$sms->send($phone,$context); if ($res){ echo "成功"; }else{ echo "失敗"; }
因為我們為了代碼的優雅,把代碼分開來寫. 方便以後重復使用.所以把發送短息具體封裝了一個類.具體看代碼:
<?php /** * Created by PhpStorm. * User: Leo * Date: 2017/8/30 * Time: 15:26 */ /** * 設置用戶信息 */ class SendSMS{ const SENDURL=‘http://gd.ums86.com:8899/sms/Api/Send.do‘; private $_un; private $_pw; function __construct($user,$pwd){ $this->_un=$user; $this->_pw=$pwd; } function send($phone,$content,$isreport=0){ //發送數據 $data=array( ‘un‘=>$this->_un, ‘pw‘=>$this->_pw, ‘sm‘=>$content, ‘da‘=>$phone, ‘rd‘=>$isreport, ‘rf‘=>2, ‘tf‘=>3, ‘dc‘=>15, ); $url=SendSMS::SENDURL.‘?‘.http_build_query($data); $this->curlGet($url); } public function curlGet($url){ $ch= curl_init(); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_URL,$url); $res=curl_exec($ch); curl_close($ch); return $res; } }
在SendSMS裏面的一些方法,你在第三方的短信驗證碼服務商提供的實例代碼裏面都可以看到,功能基本都是大同小異的,所以我們就實現一個屬於自己的發送消息類,比較簡單.
最後,我們就實現了一個屬於自己的短信驗證碼發送功能
那麽最後,你學會了嗎?
PHP 短信驗證碼功能