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 控制器内容

<?php

namespace 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>

数据表:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值