短信发消息与验证验证码
给脑子不好的自己
环境要求
根据各种版本对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 协议》,转载必须注明作者和本文链接
推荐文章: