使用Thinkphp怎么实现一个短信验证注册功能

  介绍

这篇文章给大家介绍使用Thinkphp怎么实现一个短信验证注册功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>思路

1,用户输入手机号,请求获取短信验证码。

2, Thinkphp生成短信验证码,存储,同时和其他参数一起发送请求给云片。

3,云片发送短信验证码到指定手机号。

4,用户输入短信验证码。

5, Thinkphp根据验证码是否正确,验证码是否过期两个条件判断是否验证通过。

<强>代码实现

验证接口

接口地址:https://sms.yunpian.com/v1/sms/send.json。

使用邮差,输入三个必须的参数apikey,移动和文本。

使用Thinkphp怎么实现一个短信验证注册功能

<强> php发起http/https请求

使用php的旋度函数发起https请求,带入参数apikey,移动和文本。

//,获取短信验证码   public  function  getSMSCode () {//,create  curl  resource    ch 美元;=,curl_init (),,//set  url   时间=美元url  & # 39; https://sms.yunpian.com/v1/sms/send.json& # 39;,,   CURLOPT_URL, curl_setopt (ch,美元,美元url),,//set 参数   $ paramArr =,阵列(   & # 39;apikey # 39;,=祝辞,& # 39;* * * * * * & # 39;,   & # 39;移动# 39;,=祝辞,& # 39;* * * * * * & # 39;,   & # 39;文本# 39;,=祝辞,& # 39;【小太阳】您的验证码是1234 & # 39;   );   param 美元;=,& # 39;& # 39;;   foreach  (paramArr 美元;as  key 美元;=祝辞,美元值),{   param 美元。=,urlencode(键)强生# 39;=& # 39;.urlencode(美元值)强生# 39;,& # 39;;   }   $ param =, substr (param美元,,0,,strlen (param美元)1);   CURLOPT_POSTFIELDS, curl_setopt (ch,美元,美元参数);   curl_setopt (ch,美元,CURLOPT_HEADER,, 0);   curl_setopt (ch,美元,CURLOPT_POST,, 1);//卷发默认不支持https协议,设置不验证协议   curl_setopt (ch,美元,CURLOPT_SSL_VERIFYPEER,,假),,   curl_setopt (ch,美元,CURLOPT_SSL_VERIFYHOST,,假),,//return 从而transfer  as  a  string    curl_setopt (ch,美元,CURLOPT_RETURNTRANSFER,, 1),,//,output 美元;contains 从而output  string    $ output =, curl_exec (ch);,//,close  curl  resource 用free  up  system  resources    curl_close (ch);,   echo 美元输出;   }

<强>生成随机短信验证码

默认生成四位的随机短信验证码。

//,生成短信验证码   public  function  createSMSCode (=length 美元;4){   $ min =,战俘(10,,,(length 美元;作用;1));   $ max =,战俘(10,长度)美元,安康;1;   return 兰德(min美元,,max);   }

整合

在数据库新建表sun_smscode:

DROP  TABLE  IF  EXISTS “sun_smscode”;   CREATE  TABLE “sun_smscode”, (   “id”, int (8), NOT  NULL  AUTO_INCREMENT,   “移动”,varchar (11), NOT 空,   “代码”,int (4), NOT 空,   “create_at”, datetime  NOT 空,   “update_at”, datetime  NOT 空,   PRIMARY  KEY  (id)   ),引擎=MyISAM  AUTO_INCREMENT=3, DEFAULT  CHARSET=use utf8;   thinkphp代码://,获取短信验证码   public  function  getSMSCode () {//,create  curl  resource    ch 美元;=,curl_init (),,//set  url   时间=美元url  & # 39; https://sms.yunpian.com/v1/sms/send.json& # 39;,,   CURLOPT_URL, curl_setopt (ch,美元,美元url),,//set 参数   时间=美元mobile  $ _POST[& # 39;移动# 39;];   $ code =, $ this→createSMSCode ();   $ paramArr =,阵列(   & # 39;apikey # 39;,=祝辞,& # 39;* * * * * * & # 39;,   & # 39;移动# 39;,=祝辞,移动,   & # 39;文本# 39;,=祝辞,& # 39;【小太阳】您的验证码是& # 39;。美元的代码   );   param 美元;=,& # 39;& # 39;;   foreach  (paramArr 美元;as  key 美元;=祝辞,美元值),{   param 美元。=,urlencode(键)强生# 39;=& # 39;.urlencode(美元值)强生# 39;,& # 39;;   }   $ param =, substr (param美元,,0,,strlen (param美元)1);   CURLOPT_POSTFIELDS, curl_setopt (ch,美元,美元参数);   curl_setopt (ch,美元,CURLOPT_HEADER,, 0);   curl_setopt (ch,美元,CURLOPT_POST,, 1);   curl_setopt (ch,美元,CURLOPT_SSL_VERIFYPEER,,假),,//不验证证书下同   curl_setopt (ch,美元,CURLOPT_SSL_VERIFYHOST,,假),,//return 从而transfer  as  a  string    curl_setopt (ch,美元,CURLOPT_RETURNTRANSFER,, 1),,//,output 美元;contains 从而output  string    $ output =, curl_exec (ch);,//,close  curl  resource 用free  up  system  resources    curl_close (ch);,//outputJson 美元;=,json_decode(输出);   $ outputArr =, json_decode(输出美元,,真的);//echo  outputJson→美元代码;//echo  outputArr美元[& # 39;代码# 39;];   if ($ outputArr[& # 39;代码# 39;],==,& # 39;0 & # 39;){   $ data[& # 39;移动# 39;],=,美元的移动;   $ data[& # 39;代码# 39;],=,美元代码;   时间=美元smscode  D (& # 39; smscode& # 39;);   $ smscodeObj =, smscode→美元,(“移动=& # 39;美元手机# 39;“)→找到();   如果(smscodeObj美元){   $ data [& # 39; update_at& # 39;],=,日期(& # 39;Y-m-d  H:我:& # 39;);   $ success =, smscode→美元,(“移动=& # 39;美元手机# 39;“)→保存(元数据);   if ($ success  !==, false) {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用Thinkphp怎么实现一个短信验证注册功能