失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > PHP手机短信验证码实现流程详解php实例

PHP手机短信验证码实现流程详解php实例

时间:2024-03-15 06:28:41

相关推荐

PHP手机短信验证码实现流程详解php实例

后端开发|php教程

php手机短信验证码,php短信验证码,php手机短信验证,php手机短信验证码laravel

后端开发-php教程

这篇文章主要为大家详细介绍了PHP手机短信验证码的实现流程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

js源码不可见,ubuntu 美化工具,打开tomcat的闪退,爬虫买硬盘,jsonp转php,十堰本地seo推广怎么做lzw

本人在自己博客(Laravel)的注册部分 使用手机号注册,需要发送短信验证码。

网站源码 酷,ubuntu安装时空闲,爬虫盗取是什么,php帮忙,seo pr算法lzw

使用云片的短信服务提供商,当然具体短信服务提供商大家可以自由选择。

php多用户微信商城系统源码,32位的ubuntu,python无界面爬虫,排名php,巴中seo报价lzw

1、实现流程

输入手机号,点击获取验证码

提交正确的短信验证码后,注册完成

2、实现思路图

3、注册 云片,以及开发信息认证,模板设置,这里就不详细展开了

4、安装 easy-sms,easy-sms 是安正超写的一个短信发送组件,利用这个组件,我们可以快速的实现短信发送功能。

composer require "overtrue/easy-sms"//新建配置文件touch config/easysms.php

然后在 easysms.php 文件内 添加以下内容:

5.0, default=>[// 网关调用策略,默认:顺序调用strategy => \Overtrue\EasySms\Strategies\OrderStrategy::class,// 默认可用的发送网关gateways => [ yunpian,], ], // 可用的网关配置 gateways => [errorlog => [ file => /tmp/easy-sms.log,],yunpian => [ api_key => env(YUNPIAN_API_KEY),], ],];

然后创建一个 ServiceProvider

php artisan make:provider EasySmsServiceProvider

修改文件

app/providers/EasySmsServiceProvider.php

app->singleton(EasySms::class,function ($app){return new EasySms(config(easysms)); }); $this->app->alias(EasySms::class,easysms); }}

最后 打开config/app.php 在 providers 中增加 App\Providers\EasySmsServiceProvider::class,

5、获取云片的API_KEY

在.env中配置 YUNPIAN_API_KEY,注意下面需要替换为你自己的 key

6、控制器代码 获取验证码(将code 以及key存入缓存)

public function getVerificationCode($request) { if(FALSE === $this->validateApiRequest($request->all(), [mobile => equired|regex:/^1[34578]\d{9}$/|unique:users],[mobile.required=>请输入手机号,mobile.regex=>手机号格式不正确,mobile.unique=>手机号已存在 ])){return false; } $mobile = trim($request->get(mobile)); $code = str_pad(random_int(1,9999),4,0,STR_PAD_LEFT); try{ $easySms->send($mobile, [content=>"【UKNOW】您的验证码是{$code}。如非本人操作,请忽略本短信"] ); }catch(\GuzzleHttp\Exception\ClientException $exception){$response = $exception->getResponse();$result =json_decode($response->getBody()->getContents(),true);$this->setMsg($result[msg]?? 短信发送异常);return false; } $key = verificationCode.str_random(15); $expiredAt = now()->addMinutes(1); Cache::put($key,[mobile=>$mobile,code=>$code],$expiredAt); return [verification_key=>$key,expiredAt=>$expiredAt->toDateTimeString(),verification_code=>$code];}

7、对比验证码

public function userStore($mobile, $verification_key,$code,$password,$password_confirmation) { $params = [ mobile=>$mobile, verification_key=>$verification_key, code=>$code, password=>$password, password_confirmation=>$password_confirmation ]; //参数判断 if ( FALSE === $this->validateApiRequest($params, [ mobile => equired|regex:/^1[34578]\d{9}$/|unique:users, code => equired, verification_key=> equired, password => equired|min:6|confirmed, password_confirmation => equired, ], [ mobile.required => 请输入手机号, mobile.regex => 手机号格式不正确, mobile.unique => 手机号已存在, code.required => 请输入短信验证码, password.required => 请输入密码, password.min => 密码不得小于6位, password.confirmed => 密码前后不一致, password_confirmation.required=>请再次输入密码, verification_key.required=>请输入短信验证码 ]) ) { return false; } $verifyData = Cache::get($verification_key); if( !$verifyData){ $this->setMsg(验证码已失效); return false; } if(!hash_equals($code,(string)$verifyData[code])){ $this->setMsg(验证码错误); return false; } Cache::forget($verification_key); $user = User::create([ mobile=>$mobile, password=>bcrypt($password) ]); if(!$user){ $this->setMsg(注册失败); return false; } return true;}

以上流程就是手机验证码基本步骤。

如果觉得《PHP手机短信验证码实现流程详解php实例》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。