介绍
这篇文章给大家介绍使用Thinkphp怎么实现一个短信验证注册功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
<强>思路强>
1,用户输入手机号,请求获取短信验证码。
2, Thinkphp生成短信验证码,存储,同时和其他参数一起发送请求给云片。
3,云片发送短信验证码到指定手机号。
4,用户输入短信验证码。
5, Thinkphp根据验证码是否正确,验证码是否过期两个条件判断是否验证通过。
<强>代码实现强>
验证接口
接口地址:https://sms.yunpian.com/v1/sms/send.json。
使用邮差,输入三个必须的参数apikey,移动和文本。
<强> 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怎么实现一个短信验证注册功能