namespace app\index\controller;
use think\Controller;
use think\Request;
use think\Db;
use think\Loader;
class Alidayu extends Base {
public function index()
{
// 短信配置信息
$appkey = config('sms_appkey');//你的App key
$secret = config('sms_appsecret');//你的App Secret:
$sms_templatecode = config('sms_template_code');
$sms_signname = config('sms_signname');
$ab = $this->randstring();//获取随机数字
$mobile = input('post.mobile');//接收手机号码
$captcha = input('post.captcha');//接收的验证码
// 验证
// 实例化验证器
$validate = Loader::validate('Login');
// 验证数据
$data = ['mobile'=>$mobile,'captcha'=>$captcha];
// 加载语言包
$validate->loadLang();
// 验证
if(!$validate->scene('sms_login')->check($data)) {
return $this->error($validate->getError());
}
$data['yzm_time'] = time();
$data['code'] = $ab;
$data['num'] = 0;
$data['mobile'] = $mobile;
$data['captcha'] = $captcha;
$res = Db::name('Code')->where('mobile',$mobile)->find();
if($res) {
$interval_time = $data['yzm_time']-$res['yzm_time'];
if($interval_time<config('sms_interval')) {
$data['message']='发送太频繁请稍后重试';
return $this->error($data['message']);
} else {
$data['num'] = 0;
Db::name('Code')->where('mobile',$mobile)->update($data);
}
} else {
Db::name('Code')->where('mobile',$mobile)->insert($data);
}
import('org.util.taobao.top.TopClient');
import('org.util.taobao.top.ResultSet');
import('org.util.taobao.top.RequestCheckUtil');
import('org.util.taobao.top.TopLogger');
import('org.util.taobao.top.request.AlibabaAliqinFcSmsNumSendRequest');
// 将需要的类引入,并且将文件名改为原文件名.php的形式
$c = new \TopClient;
$c->appkey = $appkey;
$c->secretKey = $secret;
$req = new \AlibabaAliqinFcSmsNumSendRequest;
$req->setExtend("123456");//确定发给的是哪个用户,参数为用户id
$req->setSmsType("normal");
$req->setSmsFreeSignName($sms_signname);
$req->setSmsParam("{'code':'".$ab."','product':'小微企业'}");
$req->setRecNum("".$mobile."");//参数为用户的手机号码
$req->setSmsTemplateCode($sms_templatecode);
$resp = $c->execute($req);
$postObj = simplexml_load_string($resp, 'SimpleXMLElement', LIBXML_NOCDATA);
if($resp->result->success ){
$data['message']="发送成功";
return $this->success($data['message']);
}else{
$data['message']="发送失败";
return $this->success($data['message']);
}
}前台利用AJAX进行验证,十分方便<script type="text/javascript">
//获取手机验证码
function sendSms(){
var mobile = $("#mobile").val();
var pic_code = $("#pic_code").val();
if(verifymobile(mobile) == false){
alert('请填写正确的手机号码')
return false
}
$.ajax({
type:"post",
url:"{:url('alidayu/index')}",
data:{"mobile":mobile,"captcha":pic_code},
dataType:"json",
success: function(res){
if(res.code == 0 )
{
alert(res.msg);
} else{
var wait = 60;
$(".code_button").val((--wait) + "秒后重新发送");
var time_line = setInterval(function(){
if(wait == 0)
{
$(".code_button").val("获取手机验证码");
return clearInterval(time_line);
}else{
$(".code_button").val((--wait) + "秒后重新发送");
}
},1000);
alert(res.msg);
}
}
});
}这里篇幅限制,无法提供所有示例,详细研究请下载源代码,大家共同交流,促进技术进步源码索取QQ群号 :588401996 或登录小微云商官网:http://w.yunshang.shop
最佳答案