laravel 整合 云之讯短信验证注册
生活随笔
收集整理的這篇文章主要介紹了
laravel 整合 云之讯短信验证注册
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SDK下載地址:?http://docs.ucpaas.com/doku.php?id=sms_sdk
首先把 Ucpaas.class.php文件放在根目錄app/common/sms/lib/下 (目錄自己隨意)
新建路由 (laravel5.4版本)
//短信注冊處理頁面Route::any('register','Home\RegisterController@index');//驗證碼Route::get('code','Home\RegisterController@code');//驗證短信驗證碼Route::any('smsyzm','Home\RegisterController@smsyzm');RegisterController.php?控制器內容
<?phpnamespace App\Http\Controllers\Home;use App\Models\Tel_user; use Illuminate\Http\Request;//使用類 use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Validator;//注冊控制器 短信 class RegisterController extends Controller{/* 驗證 注冊 */public function index(Request $request){if($request->isMethod('POST')){$valArr = $request->all();$valArr['code'] = base64_decode($request->input('code'));//Validator 類驗證$validator = Validator::make($valArr,['name' => 'required|max:8','pwd' => 'required|min:6','pwd_confirmation' => 'required|min:6|same:pwd','phone' => 'required|unique:tel_user|regex:/^1[34578][0-9]{9}$/','code' => 'same:yzm',//生成賦值的驗證碼'yzm' => 'required|between:4,4', //輸入的驗證碼],['required' => ':attribute為必填項','min' => ':attribute長度不符合要求','max' => ':attribute長度不符合要求','phone.unique' =>':attribute只能接收一次驗證碼','phone.regex' =>':attribute格式不對','pwd_confirmation.same' => ':attribute和密碼不一樣','between'=>'attribute長度不符合要求','code.same' => ':attribute輸入錯誤',],['name'=>'用戶名','pwd'=>'密碼','pwd_confirmation' => '確認密碼','phone'=>'手機號','code'=>'驗證碼','yzm'=>'驗證碼',]);if($validator->fails()){//如果驗證出錯誤return response() -> json($validator->getMessageBag()->first());}$arr = $request->only(['name','phone']);$arr['pwd']= Crypt::encrypt($request->input('pwd'));//密碼加密$arr['status']=1;$arr['create_time']=time();if(Tel_user::insert($arr)){return 1;}else{return 0;}}return view("home.register");}/* 發短信 */public function smsyzm(Request $request){//dd($request->all());//載入ucpass類require_once("../app/common/sms/lib/Ucpaas.class.php");//初始化必填//填寫在開發者控制臺首頁上的Account Sid$options['accountsid']='xxxxxxxxxxxxxxxxx';//填寫在開發者控制臺首頁上的Auth Token$options['token']='xxxxxxxxxxxxxxxxx';//初始化 $options必填$ucpass = new \Ucpaas($options);$appid = "xxxxxxxxxxxxxxxxx"; //應用的ID,可在開發者控制臺內的短信產品下查看$templateid = "xxxxxx"; //可在后臺短信產品→選擇接入的應用→短信模板-模板ID,查看該模板ID$yzm = base64_decode($request->input('yzm')); //多個參數使用英文逗號隔開(如:param=“a,b,c”),如為參數則留空 code進行解密$time = 5;$param="$yzm,$time";$mobile = $request->input('yzmtel');//$_POST['yzmtel']$uid = "";//70字內(含70字)計一條,超過70字,按67字/條計費,超過長度短信平臺將會自動分割為多條發送。分割后的多條短信將按照具體占用條數計費。echo $ucpass->SendSms($appid,$templateid,$param,$mobile,$uid);}/*生成驗證碼*/public function code(){$code_len=4;$code=array_merge(range('A','Z'),range('a','z'),range(1,9));//需要用到的數字或字母$keyCode=array_rand($code,$code_len);//真正的驗證碼對應的$code的鍵值if($code_len==1){$keyCode=array($keyCode);}shuffle($keyCode);//打亂數組$verifyCode="";foreach ($keyCode as $key){$verifyCode.=$code[$key];//真正驗證碼}echo base64_encode($verifyCode); //加密}}register.blade.php 模板文件 (用的weui)
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>手機驗證碼注冊頁面</title><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0"><link rel="stylesheet" href="{{asset('style/weui/css/weui.css')}}"/><link rel="stylesheet" href="{{asset('style/weui/css/weuix.css')}}"/><script src="{{asset('style/weui/js/zepto.min.js')}}"></script><script src="{{asset('style/weui/js/zepto.weui.js')}}"></script><script type="text/javascript">var countdown=60;function settime(obj){//60秒倒計時if (countdown == 0){obj.removeAttribute("disabled");obj.value="發送短信驗證碼";countdown = 60;return;}else{obj.setAttribute("disabled", true);obj.value="重新發送(" + countdown + ")";countdown--;}setTimeout(function() {settime(obj) },1000)}$(document).ready(function() {//清除輸入文字信息function cleartxt(obj){$(obj).prev().find('.weui-input').val("");return false;};//點擊發送短信驗證碼$("#yzmfs").click(function () {//確保手機號不為空var mobile=$("#phone").val();if(mobile.length==0){$.toptip('請輸入手機號碼!');$("#phone").focus();return false;}if(mobile.length!=11){$.toptip('請輸入11位手機號!');$("#phone").focus();return false;}var myreg = /^((1[3|4|5|8][0-9]{1})+\d{8})$/;if(!myreg.test(mobile)){$.toptip('請輸入正確的手機號碼!');document.getElementById("phone").focus();return false;}//點擊發送短信驗證碼$.ajax({async : false,type: "get",url: "{{url('code')}}", //data: {},success: function (data) {//發送短信驗證碼$("#code").val(data); //獲取生成驗證碼賦值 加密$.ajax({async : false,type: "post",url: "{{url('smsyzm')}}", //data: {"yzm": data,'yzmtel': $('#phone').val(),'_token':'{{csrf_token()}}'},dataType: "json",success: function (data) {}});}});})})//注冊 ajax提交function register(){var name = $("#name").val();var pwd = $("#pwd").val();var pwd_confirmation = $("#pwd_confirmation").val();var phone = $("#phone").val();var code = $("#code").val();var yzm = $("#yzm").val();//手動輸入的驗證碼$.post("{{url('register')}}",{"name":name,"pwd":pwd,"pwd_confirmation":pwd_confirmation,"phone":phone,"code":code,"yzm":yzm,"_token":"{{csrf_token()}}",},function(data,status){//$.toptip(data);if(data==1){$.toast("注冊成功");window.location.href="http://www.xxxxxx.com/";}else if(data==0){$.toast("注冊失敗", "forbidden");}else{$.toptip(data);}});}</script></head> <body> <form action="" onsubmit="return false;" id="formRegister">{{csrf_field()}}<div class="weui-cells weui-cells_form"><div class="weui-cell margin5 margin15 border-radius w"><div class="weui-cell__hd"><label class="weui-label">用戶名</label></div><div class="weui-cell__bd"><input class="weui-input" placeholder="請輸入用戶名" type="text" name="name" id="name"></div><i class="weui-icon-clear" onclick="cleartxt(this)"></i></div><div class="weui-cell margin5 margin15 border-radius w"><div class="weui-cell__hd"><label class="weui-label">密碼</label></div><div class="weui-cell__bd"><input class="weui-input" placeholder="請輸入密碼" type="password" name="pwd" id="pwd"></div><i class="weui-icon-clear" onclick="cleartxt(this)"></i></div><div class="weui-cell margin5 margin15 border-radius w"><div class="weui-cell__hd"><label class="weui-label">確認密碼</label></div><div class="weui-cell__bd"><input class="weui-input" placeholder="請重復輸入密碼" type="password" name="pwd_confirmation" id="pwd_confirmation"></div><i class="weui-icon-clear" onclick="cleartxt(this)"></i></div><div class="weui-cell margin5 margin15 border-radius w"><div class="weui-cell__hd"><label class="weui-label">手機號</label></div><div class="weui-cell__bd"><input class="weui-input" placeholder="請輸入手機號" type="number" name="phone" id="phone"></div><i class="weui-icon-clear" onclick="cleartxt(this)"></i></div><!--<input id="msg" hidden>--><input id="code" hidden name="code"><div class="weui-cell margin5 margin15 border-radius w"><div class="weui-cell__bd"><input class="weui-input" type="text" id="yzm" name="yzm"></div><i class="weui-icon-clear" onclick="cleartxt(this)"></i><div class="weui-cell__hd"><input class="weui-input" type="button" id="yzmfs" value="發送短信驗證碼" onclick="settime(this)" /></div></div><div class="weui-btn-area"><input class="weui-btn weui-btn_primary" type="submit" value="注冊" onclick="register()"></div></div></form> </body></html>數據表:
總結
以上是生活随笔為你收集整理的laravel 整合 云之讯短信验证注册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mac版绿坝
- 下一篇: 搭建网站基本步骤(搭建一个网站的步骤)