表结构:https://download.csdn.net/download/weixin_42330073/10848493

<?php/*** 发送手机验证码*/public function sendMobileCode(){Db::startTrans();$mobile = $this->request->param('mobile','');$mc = new MobileCodeModel();$mobile_code = rand(100000, 999999);$search = '/^0?1[3|4|5|6|7|8][0-9]\d{8}$/';if (!preg_match($search,$mobile)) {$this->apiResponse(0,'手机号格式有误','');}$content = "【振威】您的验证码为".$mobile_code.",如非本人操作请忽略本短信!";$info = $mc->where(['mobile' => $mobile,'create_date' => date('Y-m-d')])->find();if($info){if(time() < $info['create_time']+60 and $info['is_use'] == 0){$this->apiResponse(0,'不能频繁发送验证码','');}if($info['count'] > 10){$this->apiResponse(0,'今天发送验证码的次数已达到了上限','');}$res = $mc->where('id',$info['id'])->data(['mobile' => $mobile,'mobile_code' => $mobile_code,'is_use' => 0,'expire_time' => time()+300,'count' => $info['count'] +1])->update();}else{$res = $mc->insert(['mobile' => $mobile,'mobile_code' => $mobile_code,'is_use' => 0,'expire_time' => time()+300,'count' => 1,'create_time' => time(),'create_date' => date('Y-m-d')]);}if($res){//发送验证码$is_ok = substr($this->sendCode($mobile,$content),0,1);if($is_ok != 1){Db::rollback();$this->apiResponse(0,'短信发送失败','');}Db::commit();$this->apiResponse(1,'发送成功','');}}/*** 验证手机验证码*/public function validateMobileCode($post){$mc = new MobileCodeModel();if(empty($post['mobile'])){$this->apiResponse(0,'缺少必要参数:MOBILE','');}if(empty($post['mobile_code'])){$this->apiResponse(0,'缺少必要参数:MOBILE_CODE','');}$res_find = $mc->where(['mobile' => $post['mobile'],'mobile_code' => $post['mobile_code'],'is_use' => 0,'create_date' => date('Y-m-d'),'expire_time' => ['gt',time()]])->find();if($res_find){$res_update = $mc->where('id',$res_find['id'])->setField('is_use',1);if($res_update){return true;}}else{$this->apiResponse(0,'验证未通过',$post);}}/*** 发送手机验证码* @param $mobile* @param $code* @return mixed*/private function sendCode($mobile,$content){date_default_timezone_set('PRC');//设置时区$url        = "http://www.ztsms.cn/sendNSms.do";//提交地址$username   = Config::get('MB_USERNAME');//用户名$password   = Config::get('MB_PASSWORD');//原密码$data = array('content'   => $content,//短信内容'mobile'    => $mobile,//手机号码'productid' => '676767',//产品id'xh'        => ''//小号);$isTranscoding = false;$data['content'] = $isTranscoding === true ? mb_convert_encoding($data['content'], "UTF-8") : $data['content'];$data['username']=$username;$data['tkey']   = date('YmdHis');$data['password'] = md5(md5($password) . $data['tkey']);$curl = curl_init();// 启动一个CURL会话curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在curl_setopt($curl, CURLOPT_POST, true); // 发送一个常规的Post请求curl_setopt($curl, CURLOPT_POSTFIELDS,  http_build_query($data)); // Post提交的数据包curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环curl_setopt($curl, CURLOPT_HEADER, false); // 显示返回的Header区域内容curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 获取的信息以文件流的形式返回$result = curl_exec($curl); // 执行操作return $result;}

发送手机验证码,验证手机验证码,包括数据表的设计相关推荐

  1. 游戏人物装备技能数据表怎么设计(整理)

    游戏人物装备技能数据表怎么设计(整理) 一.总结 一句话总结:把人物的属性抽离出去,其它的装备啊,技能表和属性表之间建立一个关系表. 1.装备表如何设计(装备表和角色表的对应关系是什么)? 装备属于人 ...

  2. MySQL数据表的设计

    MySQL数据表 服务器端数据表的设计 创建表的语句 服务器端数据表的设计 首先就是要解决数据的问题,作为一个聊天系统,我们的服务器端肯定要有用户的信息,比如说账号,用户名,密码等.在登录的时候,我们 ...

  3. mysql设计功能设置表_MySQL数据表的设计

    数据表(Table) 数据表是数据库的基本组成元素,以记录(行)和字段(列)组成的二位结构用于储存数据.数据库由表结构和表内容组成,先建立表结构,然后才能输入数据.数据表结构设计主要包括字段名称,字段 ...

  4. 某电商网站的数据库设计(2)——商品销售相关数据表的设计

    某电商网站的数据库设计(2)--商品销售相关数据表的设计 目录 某电商网站的数据库设计(2)--商品销售相关数据表的设计 四.销售信息表 1.非套装商品销售数据表 2.套装商品对应的单品销售数据表 3 ...

  5. ajas php 验证码_thinkPHP3.2.3利用Ajax前台实现验证码验证,但通过form表单的按钮提交后,验证码一直错误!如何解决?...

    展开全部 我用的方法是判断$_session里的验证码值是否与post提交的验证码值是否相等,经过测试没有问636f707962616964757a686964616f31333363396432题, ...

  6. 【论文写作】体育城场地预约系统的数据表如何设计

    2.4 数据表设计 (1) 用户信息表 它记录了用户名,密码和有关用户的个人信息,方便系统管理用户信息,也是实现预约功能所必不可少的信息. 表2-1用户表 (2)场地信息表 它记录了场地属性信息,方便 ...

  7. 会签 数据库表设计_关于OA流程相关数据表的设计

    一.前言 近期有些同学问起流程的表设计,终于有时间能写下博客,并整理下之前所发布的文章. 之前的文章讲到的表设计,没有给全且还存在漏洞,在这里向各位同学表示歉意.这是我个人最新领悟的一些流程思维,欢迎 ...

  8. 关于行政区划的数据表的设计

    中国的行政区划是在不断的更改的,县级以上变化不是特别多,但是到乡镇的变化就特别多,有撤销,有新设,有合并等,当你设计这些数据表的时候,可能在之后的三级联动,四级联动等等都要用到.我在公司上班就遇到,之 ...

  9. 七年级计算机第十四课编排表格,浙教版 信息技术七年级上 第十四课 编辑数据表 教案设计.doc...

    第十四课 编辑数据表 一.教学目标 知识与技能: 1.掌握单元格的插入的方法.单元格的合并和居中.调整单元格大小 ; 2.掌握单元格数据对齐方式的设置.单元格字体.字号.字体颜色的设置; 3.掌握单元 ...

最新文章

  1. java获取当月有几天_你真的能在JAVA开发这条路上面一直坚持下去吗?
  2. 捷微jeewx , 免费开源(java)微信公众账号管家系统发布
  3. 基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据
  4. 前端学习(1670):前端系列实战课程之核心运动原理
  5. python无法导入numpy_python – Pycharm无法导入numpy
  6. LeetCode 1887. 使数组元素相等的减少操作次数(map)
  7. linux如何导入安装包,linux下安装pip以及导入第三方包
  8. WMware Workstation——时间和时区问题
  9. Java面向对象㈡ -- 继承与多态
  10. OpenCV处理椒盐噪声以及提高对比度
  11. Centos使用Cacti监控你的网络
  12. linux系统有gotoxy函数,linux下有没有类似gotoxy()的函数
  13. 对IO设备的控制方式
  14. 个人设计web前端大作业——HTML+CSS华为官网首页
  15. uniapp 运行到手机或模拟器
  16. SylixOS -- KN_SMP_WMB()内存屏障函数解析
  17. 整体费率三连降,海尔追“格”超“美”的下一步在哪?
  18. mqtt连接百度天工物接入平台
  19. android时间控件
  20. 校园网限速引起网络知识:网络配置ipconfig /release ipconfig /renew

热门文章

  1. 技术 | 有道CEO周枫:NVidia Volta GPU深度学习性能提升近10倍
  2. 这帮死磕技术的理工男造了一支笔
  3. MySQL分库分表多维度查询——比较好的方法
  4. veket linux安装到硬盘,安装veket到移动硬盘NTFS分区
  5. C++最后一次实验及实验总结
  6. 惠普HP Prime可编程计算器之添加坐标表及写入与读取
  7. 晨兴刘芹谈创业者这种动物:生来孤独、天道不一定酬勤
  8. 医院信息化建设(1)---惠民服务
  9. 【观察】华为云连续四年蝉联政务云第一,背后是“长跑选手”实力的印证
  10. matlab 眼镜蛇机动壁纸制作