手机版

手机短信注册代码示例

时间:2021-08-31 来源:互联网 编辑:宝哥软件园 浏览:

我在我的公司做一个购物中心项目。既然只有一个后台,那就轮到我短信注册了。起初,我的心还是有点空虚。幸运的是,在Laravel-china社区有一本大神summer写的书。参考它的写法和思路,用easy-sms包,只用了半个下午就顺利做好了,晚上很快和大家分享了一波。

1.确定短信运营商

我看到所有的老板都用云,所以我毫不犹豫地强烈推荐公司使用这个短信平台,但是其他的事情可以做。

首先自己注册一个账户,然后找到这个

单击开始访问以完成新手指导过程。

第二部分的签名和模板必须填写,类似于我下面填写的内容

值得注意的是,当您使用easy-sms包时,此模板必须与此模板完全相同,否则您将报告错误。

记得去拿APIKEY。届时,在env中配置它。

# yun pian _ API _ Key=9c 60 BDD * * * * * * * * * * 2。安装简易短信包

使用这个包,可以快速实现发送短信的功能。

Composer要求“超真/简单短信”因为这个组件没有Laravel的ServiceProvider,为了方便起见,我们可以封装它。

首先,在配置目录中添加easysms.php文件

在config/easysms.php中填写以下内容

?phprreturn[//http请求超时(秒)' timeout'=5.0,//默认发送配置' default'=[//网关调用策略,默认值:调用' strategy '=\ overrue \ easysms \ strategy \ orderstategy 3360: class,//默认可用发送网关' gateway '=[' yun pian ',],],//可用网关配置' gateway '=[' error log '=[' file '='/tmp/easy-SMS . log ',],' yun pian '=[' API _ log '然后创建一个服务提供商

PHP artisan make : provider easysmssserviceprovider修改文件app/providers/easysmssserviceprovider . PHP。

?phpnamespace App \ Providers使用Overtrue \ EasySms \ EasySms使用照明\支持\服务提供商;类EasySmsServiceProvider扩展了ServiceProvider{ /** *引导应用程序服务。* * @ return void */public function boot(){//}/* * *注册应用程序服务。* * @ return void */public function register(){ $ this-app-singleton(easyms 3360: CLaSS,function($ app){ return new easyms(config(' easyms '))));});$ this-app-alias(easysms 3360: CLaSS,‘easysms’);}}最后将新创建的服务添加到config/app.php中的providers中,并写入app \ providers \ easysmssserviceprovider :3360 class中。

App \ Providers \ appserviceprovider :3360 class,App \ Providers \ authserviceprovider 33603360 class,//App \ Providers \ broadcastserviceprovider 33603360 class,App \ Providers \ event serviceprovider 33603360 class,App \ Providers \ routeserviceprovider 3360: class,App \ Providers \ easesmssserviceprovider :3: class,//easy-sms3,创建

首先,为了创建一个路由,我们需要一个ajax请求SMS验证码的方法和一个确认注册的逻辑方法,如下所示:

route : group([' prefix '=' verificationCodes ',' as'='verificationCodes ')],function(){ route : POSt(' register ','[email protected]')-name(' register ');route : get(' Ajax register ','[email protected]')-name(' Ajax register ');});创建了路由,我们使用命令生成控制器

Php artisan make :控制器home \ verificationcodescontroller直接在其中写入register和ajaxregister方法

代码逻辑

修改文件

app/Home/verificationcodescotroller . PHP

?服务器端编程语言(专业超文本预处理器的缩写).使用Overtrue \ EasySms \ EasySms使用应用程序\模型\系统\用户;类验证代码控制器扩展了控制器{ //这里验证就不写了公共函数Ajax注册(VerificationCodeRequest $ request,EasySms $easySms) { //获取前端创建交互式、快速动态网页应用的网页开发技术传过来的手机号$ phone=$ request-phone;//生成四位随机数,左侧补0 $code=str_pad(random_int(1,9999),4,0,STR _ PAD _ LEFT);尝试{ $result=$easySms-send($mobile,[' content '=']安拾商城】您的验证码是{$code}。如非本人操作,请忽略本短信' ]);} catch(overrue \ EasySms \ Exceptions \ no gateway available exception $ exception){ $ response=$ exception-getExceptions();return response()-JSON($ response);} //生成一个不重复的键用来搭配缓存躲藏判断是否过期$key='verificationCode_ ' .str _ random(15);$ expiredAt=now()-addMinutes(10);//缓存验证码10 分钟过期\\ cache : put($ key,['mobile'=$mobile,' code'=$code],$ expiredAt);return response()-JSON([' key '=$ key,' expired _ at '=$ expired at-todaytetimestring(),],201);}这样,用户就能收到短信,并且前端应该保存这个关键,提交注册表单的时候传递给后台,判断是否已经过期。下面就是判断是否过期,验证码是否错误。

公共函数寄存器(VerificationCodeRequest $ request){//获取刚刚缓存的验证码和key $ verify data=\ cache : get($ request-verification _ key);//如果数据不存在,说明验证码已经失效如果(!$ verifyData){ return response()-JSON([' status '=0,' message'='短信验证码已失效'], 422);} //检验前端传过来的验证码是否和缓存中的一致if(!hash _ equals($ verifyData[' code '],$ request-verification _ code){ return redirect()-back()-带(“警告”,短信验证码错误');} $ user=user : create([' mobile '=$ verify data[' mobile '],' password '=bcrypt($ request-password),]);//清除验证码缓存\缓存3360:忘记忘记($ request-verification _ key);return redirect()-route(' log in ')-带(' success ','注册成功!');}上面的哈希_等于是可防止时序攻击的字符串比较的~

以上就是我整个的过程。

版权声明:手机短信注册代码示例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。