短信发消息与验证验证码

给脑子不好的自己

环境要求

根据各种版本对php要求

安装

第一种方法:直接composer

composer require "overtrue/easy-sms"

第二种方法: 在composer.json中

 "require": {
 "overtrue/easy-sms": "^1.1",
 }

config/app.php 文件中 'providers' 添加

iBrand\Sms\ServiceProvder::class

config/app.php 文件中 'aliases' 添加

'Sms'=> iBrand\Sms\Facade::class

使用

use Overtrue\EasySms\EasySms;

//腾讯云
public function sendCode($phone,$code)
    {
        $config = [
            // HTTP 请求的超时时间(秒)
            'timeout' => 5.0,
            // 默认发送配置
            'default' => [
                // 网关调用策略,默认:顺序调用
                'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
                // 默认可用的发送网关
                'gateways' => [
                    'qcloud',
                ],
            ],
            // 可用的网关配置
            'gateways' => [
                'errorlog' => [
                    'file' => '/tmp/easy-sms.log',
                ],
                'qcloud'=>[
                    'sdk_app_id'=>'xxxxx',
                    'app_key'=>'xxxxx',
                    'sign_name'=>'xxxx',
                ]
            ],
        ];
        $easySms = new EasySms($config);
        $easySms->send($phone, [
            'content'  => '尊敬的用户,您的验证码是:6379,如非您主动请求,请忽略本短信。',
            'template' => 'xxxxx',
            'data' => ['code' => $code],
        ]);
        /*$easySms->send($phone, [
            'content'  => '感谢您报名{1},为慈善公益助力!您的活动编码为{2},活动装备领取及通知信息,请留意手机短信。',
            'template' => 'xxxxx',
            'data' => [
                'xxxxx','xxxxx'
            ],
        ]);*/
    }

    //阿里云
    public function sendCode($phone,$code)
    {
        $config = [
            // HTTP 请求的超时时间(秒)
            'timeout' => 5.0,
            // 默认发送配置
            'default' => [
                // 网关调用策略,默认:顺序调用
                'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
                // 默认可用的发送网关
                'gateways' => [
                    'aliyun',
                ],
            ],
            // 可用的网关配置
            'gateways' => [
                'errorlog' => [
                    'file' => '/tmp/easy-sms.log',
                ],
                'aliyun' => [
                    'access_key_id' => 'xxxxxx',
                    'access_key_secret' => 'xxxxxx',
                    'sign_name' => 'xxxxx',
                ],
            ],
        ];
        $easySms = new EasySms($config);
        $easySms->send($phone, [
            'content'  => '您的验证码为: 6379',
            'template' => 'xxxxx',
            'data' => [
                'name' => '您的验证码为: '.$code
            ],
        ]);
    }

    /*
     * 根据传递过来的手机号,调用腾讯的短信发送接口发消息
     * 将手机号,验证码(6位)存在cache文件中
     */
    public function getCheckCode(Request $request)
    {
        $phone=$request->telephone;
        //$code=rand();
        //随机生成6位验证码
        $code=mt_rand(100000,999999);
        Cache::store('file')->put($phone,$code,10);
        $this->sendCode($phone,$code);
        return response()->json(['errorCode' => 0, 'message'   => '验证码发送成功',]);
    }

    /*
     * 手机登录认证
     *
     * 将cache的信息与传递过来的信息作对比
     * 信息配对正确的时候,根据手机号查询是否已经存在用户的信息,不存在将创建,存在则查询
     * 将用户信息存在session
     */
    public function phoneLogin(Request $request)
    {
        //是否存在用户认证的手机号码
        if(Cache::store('file')->has($request->telephone)) {
            //判断验证码是否正确
            if( Cache::store('file')->get($request->telephone) != $request->checkCode )
            {
                return response()->json(['errorCode' => 1, 'message'   => '验证码不正确',]);
            }else{
                //根据手机号查询是否已经存在用户
                $minProgramUser=MiniProgramUser::where('id',$request->user_id)->first();
                $minProgramUser->mobile=$request->telephone;
                $minProgramUser->save();
                //将用户信息存放到session中
                session(['user' => $minProgramUser]);
                //从session中读取认证过的用户信息
                $user=session('user');
               return response()->json(['errorCode' => 0, 'message'   => '成功',]);
            }
        }else{
        return response()->json(['errorCode' => 2, 'message'   => '验证码已失效,请重新获取',]);
        }
    }
本作品采用《CC 协议》,转载必须注明作者和本文链接
The sun is always behind the storm~
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

$code=mt_rand(100000,999999);

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!