php实现登录短信验证
作者:
秒速五厘米
今天benny要跟大家说这个其实很简单,就是借用某一个平台的短信api接口实现短信验证,说简单呢,那是因为他的官网:http://www.ucpaas.com上有开发文档,它可以教会一个小白很快的运用它的接口,并开发自己的应用。这个官网还算人性化的,因为你一注册,就给了你10块钱的测试费用来尝试使用它的api,你要知道一条短信0.055元,10块钱给你拿来学习测试已经够多啦!
首先,你进入官网,注册,然后你就点击开发文档:
这里有详细的介绍你怎么用它的东西,我就不在这里bb啦,看完后我们就直接下载一个php的demo文件来试试!!
下载后,你就可以看到一个封装的类Ucpaas.class.php和一个index.php的文件:
上面的注释有详细的解释,要用到的参数啥的,你注册了账号后也就自然有了,多看几遍,有点基础的人几分钟内就可以看得懂的啦!
接着,你就开始阅读官网下面目录的内容:
这里有详细的介绍,我就只是做一个引导吧,具体的大家去阅读哦。
最后,我把这个短信验证功能在我的项目上实现了,你可以看下我的代码截图:
<?php //载入ucpass类 require('library/Db.class.php'); require_once('library/Ucpaas.class.php'); //初始化必填 $options['accountsid']='******';(这个不能给大家看哦) $options['token']='******';(这个不能给大家看哦) //初始化 $options必填 $ucpass = new Ucpaas($options); //开发者账号信息查询默认为json或xml header("Content-Type:text/html;charset=utf-8"); //短信验证码(模板短信),默认以65个汉字(同65个英文)为一条(可容纳字数受您应用名称占用字符影响),超过长度短信平台将会自动分割为多条发送。分割后的多条短信将按照具体占用条数计费。 // 验证码短信:同一个手机号1分钟内不能超过2条,24小时内不能超过8条 $appId = "****";(这个不能给大家看哦) $to=$_POST['to']; $templateId = "244286"; $string=''; for ($i=0; $i <4 ; $i++) { $string.=rand(0,9); } $param=$string; $db = new DB(); $sql ="select * from mr_user where username = :username"; $user = $db->row($sql,array('username' =>$to)); //用户名存在 $id=$user['id']; if ($user){ $password=md5($param); $update_sql = "update mr_user set password ='$password' where id='$id'"; $result_id = $db->query($update_sql); if ($result_id){ $data=$ucpass->templateSMS($appId,$to,$templateId,$param); $re=''; $arr = json_decode($data,true); foreach ($arr as $key => $value) { if ($key=='resp') { foreach ($value as $key2 => $value2) { if ($key2=='respCode') { $re=$value2; } } } } if ($re=='000000') { echo 1;//短信已发送! }elseif ($re=='105147') { echo 3;//短信发送太频繁 }else{ echo 2;//号码输入有误 } exit(0); } else{ echo 0;//短信发送出错! } }else { $data=$ucpass->templateSMS($appId,$to,$templateId,$param); $re=''; $arr = json_decode($data,true); foreach ($arr as $key => $value) { if ($key=='resp') { foreach ($value as $key2 => $value2) { if ($key2=='respCode') { $re=$value2; } } } } if ($re=='000000') { $addtime = time(); $insert_sql = "insert into mr_user(username,password,addtime) value(:username,:password,$addtime)"; $result_id = $db->query($insert_sql,array('username' =>$to,'password'=>md5($param))); if ($result_id){ echo 1;//短信已发送! }else{ echo 0;//短信发送出错! } }elseif($re='105147'){ echo 3;//短信发送太频繁 }else{ echo 2;//号码输入有误 } }