• 一、验证码发送及验证
  • 二、验证码存放的格式
  • 三、自定义Redis操作类
  • 四、使用阿里云短信服务发送短信

一、验证码发送及验证

//start
public function test() {//模拟短信发送self::sendSmsCode(12345678987);self::sendSmsCode(12345678989);
}/*** 验证码发送* @param $tel 发送的手机号* @param int $expire 验证码有效时间:单位 s(秒)* @return mixed*/
public function sendSmsCode($tel, $expire = 120) {$code = '';self::getCode($code); //获取验证码TestRedis::sAdd($tel, $code); //增加redis缓存TestRedis::expire($tel, $expire); //给该缓存增加过期时间$aliService = new AliService();$res = $aliService->sendSmsCode($tel, $code); //阿里云短信服务:发送短信return $res;
}/*** 验证码校验* @param $tel 手机号* @param $code 验证码* @return bool 是否校验成功*/
public function checkSmsCode($tel, $code) {$bool = TestRedis::sIsMembers($tel, $code); //该redis缓存是否存在if ($bool) {TestRedis::sRem($tel, $code); //如果存在,则清空缓存}return $bool;
}/*** 生成$number位数的验证码* @param $code 生成的验证码* @param int $number 验证码的位数*/
public function getCode(&$code, $number = 4) {for($count = 0; $count < $number; $count++) {$code .= mt_rand(0, 9); //取值范围 [0, 9]}
}

二、验证码存放的格式

三、自定义Redis操作类

<?phpnamespace app\index\controller;//自定义一个redis操作类
class TestRedis {public $redis;public function __construct() {$this->redis = self::getRedisConn();}public static function getRedisConn() {try {$redis = new \Redis();  // 直接用自己安装的Redis扩展$connect = $redis->connect('127.0.0.1', '6379');    // 主机、端口号$password = ''; //密码$authConnect = true;if (!empty($password)) {$authConnect = $redis->auth($password);}$redis->select(3);   // 存放的数据库索引IDif (!$connect || !$authConnect) {  // redis连接失败时,只返回false,不会抛出异常throw new BaseException('redis连接异常请检查配置!');}return $redis;} catch (\Exception $e) {throw $e;}}//设置 key 的过期时间,key 过期后将不再可用。单位以秒计。public static function expire($key,$time) {self::getRedisConn()->expire($key, $time);}//向集合添加一个或多个成员public static function sAdd($key,$value) {return self::getRedisConn()->sAdd($key,$value);}//移除集合中一个或多个成员public static function sRem($key,$value) {return self::getRedisConn()->sRem($key,$value);}//返回集合中的所有成员public static function sMembers($key) {return self::getRedisConn()->sMembers($key);}//判断成员元素是否是集合的成员。public static function sIsMembers($key, $value) {return self::getRedisConn()->sIsMember($key, $value);}
}

四、使用阿里云短信服务发送短信

  • PHP 调用阿里云短信服务API发送短信

PHP 短信验证码:发送及验证相关推荐

  1. 网易云信-短信验证码发送、验证

    提示:本文仅记录本人工作中遇到的难点与个人见解,仅供参考,如有问题请见谅. 目录 前言 一.网易云信短信服务是什么? 二.使用步骤 1.创建网易云信工具类CheckSumBuilder 2.短信验证码 ...

  2. QPW 手机短信验证码发送日志表(tf_sms_send_log)

    文章目录 手机短信验证码发送日志表 需求说明 手机短信验证码发送日志表 CREATE TABLE `tf_sms_send_log` (`send_id` bigint(11) NOT NULL AU ...

  3. flask项目之5:短信验证码发送

    概述: 短信验证码的发送需要限制验证码的发送间隔不能不停的发,因为测试时发送的验证码是要花钱的,不可能不花钱就办事 短信验证码要根据图片验证码是不是正确再进行发, 进行短信验证码的实验要测试容联云平台 ...

  4. 使用Mob进行短信验证码发送

    首先,很多第三方短信验证码都可以,为什么我要选择mob的呢? 因为mob的短信验证码是完全免费 并且支持IOS,Android,Unity3d,Cocos2d-X的集成 Mob的官网:全球领先的数据智 ...

  5. php调用nexmo发送短信,在 Laravel 中 “规范” 的开发短信验证码发送功能

    Laravel简介 Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行 ...

  6. 手机短信验证码发送(106短信验证码发送)

    打开网页地址栏输入:http://www.106jiekou.com/ 需要用户注册,登陆,在上边购买短信,大概是10块钱100条, 买完之后可以直接下载接口说明文档和源代码的案例,是个压缩包 cu- ...

  7. 怎样避免短信验证码发送失败

    大家都知道生活中短信验证码是必不可少的,我们更改密码,确认身份还有日常交易,或者是使用app短信平台,都会接触到短信验证码,但是有时候会遇到点击"发送验证码"后没收到短信验证码的现 ...

  8. 短信验证码发送失败的常见原因有哪些?

    短信验证码现在几乎已成为互联网各行业的标配所在,在账户注册.密码修改.支付确认等方面发挥着重要的作用.目前通过短信验证码接口接入第三方短信验证码平台的短信服务,99%以上的用户基本上都可以在几秒钟之内 ...

  9. uniapp发送短信验证码无法通过验证的解决思路

    一般我们在程序的时候发送短信验证码会用session在服务器端存储短信验证码,再接收客户端提交过来的验证码 进行比对,如果一致就验证通过. 但我们再做uniapp开发的时候发现无法按照上面的思路无法进 ...

  10. 健康管理系统第六天(移动端开发之体检预约_经典五表联查_调用阿里云提供的短信服务进行短信验证码发送)

    一.移动端开发 1.移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车.玩游戏.订酒店.购票等, 以前只能通 ...

最新文章

  1. linux测试nvme性能,使用Python测试NVMe吞吐量
  2. matlab如何截取图像的中间部分_利用matlab提取并分割RGB图像中的某一个已知像素值的图像...
  3. tensorflow就该这么学--4(识别手写数字)
  4. MySQL之SELECT查询表达式
  5. 进程的退出方式以及僵尸进程和孤儿进程
  6. jsf 传参数_在JSF 2中对定制验证器进行参数化
  7. python多态_Python基础入门18节-第十六节 面向对象如何理解多态
  8. [转载]了解Linux的进程与线程
  9. 国产数据库发展十策(二):数据库难在研发还是难在生态?
  10. mysql数据库 主主的搭建
  11. php打印订单,WooCommerce: 打印订单
  12. 网络协议 3 - 从物理层到 MAC 层
  13. 省花博会,或将成为跳马百亿产业的跳板
  14. 仿新浪微博返回顶部的js实现(jQuery/MooTools)
  15. A-MPDU与A-MSDU各是什么意思
  16. Android笔记本处理器,惠普或推Android笔记本:配Tegra处理器
  17. 理想点法matlab p趋向无穷大,Matlab讨论区 - 声振论坛 - 振动,动力学,声学,信号处理,故障诊断 - Powered by Discuz!...
  18. 算力网络 — 核心技术
  19. C语言运算符的优先级和结合
  20. 总结XSS与CSRF两种跨站攻击

热门文章

  1. 队列queue中的常用函数
  2. 选择语句详解(C++)
  3. mysql 表格入门_MySQL-快速入门(1)基本数据库、表操作语句
  4. 音乐机器人活动教案_幼儿园小班音乐教案小熊跳舞律动活动反思【幼儿教案】...
  5. 人生苦短我要学python壁纸_人生苦短我学Python——环境安装
  6. mac mysql docker_docker学习(5) 在mac中创建mysql docker容器
  7. mysql注入多语句执行_MySQL注入总结MySQL暴错注入方法整理
  8. devexpress ajax demo,DevExpress Demo示例展示:多功能站点插件 附在线演示
  9. 怎么在html中加入pjax,网页添加Pjax代码实现无刷新加载
  10. 计算机专业黑板报迎新,开学迎新黑板报_迎新学期黑板报高三