PHP手机短信验证码实现流程详解
本人在自己博客(拉弗尔)的注册部分使用手机号注册,需要发送短信验证码。
使用云片的短信服务提供商,当然具体短信服务提供商大家可以自由选择。
1、实现流程
输入手机号,点击获取验证码提交正确的短信验证码后,注册完成
2、实现思路图
3、注册云片,以及开发信息认证,模板设置,这里就不详细展开了
4、安装简单短信,简单短信是安正超写的一个短信发送组件,利用这个组件,我们可以快速的实现短信发送功能。
作曲者需要“通过rue/easy-SMS”//新建配置文件touch config/easysms.php然后在easysms.php文件内添加以下内容:
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)返回[ 'timeout'=5.0,' default'=[ //网关调用策略,默认:顺序调用策略=\ over rue \ easy SMS \ Strategies \ order strategy :类,//默认可用的发送网关网关=[ 'yunpian ',],],//可用的网关配置网关'=['错误日志'=['文件'='/tmp/easy-SMS。log ',],' yun pian '=[' API _ KEY '=env(' yun pian _ API _ KEY '),],];然后创建一个ServiceProvider
PHP artisan make :提供程序easysmssserviceprovider修改文件
app/providers/easysmsserviceprovider。服务器端编程语言(Professional Hypertext Preprocessor的缩写)
?phpnamespace应用程序\提供程序使用照明\支持\服务提供商;使用Overtrue \ EasySms \ EasySms类easysmssserviceprovider扩展了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(easy SMS 3360: CLaSS,‘easy SMS’);}}最后打开config/app.php在提供者中增加app \ Providers \ easysmsserviceprovider :类,
5、获取云片的API_KEY
在。包封/包围(动词包围的简写)中配置云篇_API_KEY,注意下面需要替换为你自己的键
6、控制器代码获取验证码(将密码以及键存入缓存)
公共函数getverificationcode($ request){ if(false==$ this-validateapi request($ request-all(),[' mobile '='required|regex:/^1[34578]\d{9}$/|unique:users'],[ ' mobile。必需的“=”请输入手机号,' mobile.regex'='手机号格式不正确,' mobile.unique'='手机号已存在])){返回false } $ mobile=trim($ request-get(' mobile ');$code=str_pad(random_int(1,9999),4,0,STR _ PAD _ LEFT);尝试{ $easySms-send($mobile,['content'='【UKNOW】您的验证码是{$code}。如非本人操作,请忽略本短信'] );} catch(\ guzzhettp \ Exception \ client Exception $ Exception){ $ response=$ Exception-getResponse();$ result=JSON _ decode($ response-getBody()-getContents(),true);$this-setMsg($result['msg']?'短信发送异常');返回false} $key='verificationCode ' .str _ random(15);$ expiredAt=now()-addMinutes(1);Cache:put($key,['mobile'=$mobile,' code'=$code],$ expire dat);返回[ 'verification_key'=$key,' expire dat '=$ expire dat-todaytetimestring(),' 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-validateapi request($ params),[' mobile '='required|regex:/^1[34578]\d{9}$/|unique:users','代码'='必需',' verification_key'='必需',' password'='必需|min:6 ',' password _ confirmation '='必需',],[ 'mobile.required'='请输入手机号,' mobile.regex'='手机号格式不正确,' mobile.unique'='手机号已存在,' code.required'='请输入短信验证码,' password.required'='请输入密码,' password.min'='密码不得小于6位,' password.confirmed'='密码前后不一致,' password _ confirmation。必需的“=”请再次输入密码,' verification_key.required'='请输入短信验证码]) ) {返回false } $ verify data=cache : get($ verification _ key);if(!$verifyData){ $this-setMsg('验证码已失效');返回false} if(!hash_equals($code),(string)$ verify data[' code ']){ $ this-setMsg('验证码错误');返回false}缓存:忘记忘记($ verification _ key);$ user=user : create([' mobile '=$ mobile,' password '=bcrypt($ password)];if(!$user){ $this-setMsg('注册失败');返回false}返回真}以上流程就是手机验证码基本步骤。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
版权声明:PHP手机短信验证码实现流程详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。