为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 如何实现验证码每个手机每天发送次数的限制

PHP 如何实现验证码每个手机每天发送次数的限制

PHP
慕娘9325324 2019-03-17 19:51:19
我接入了阿里云的短信,请问如何限制每个手机每天对验证码接收次数的限制呢?
查看完整描述

6 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

短信查询API(QuerySendDetails)---PHP

查看改手机号对应日期接受了多少条短信

查看完整回答
反对 回复 2019-03-18
?
心有法竹

TA贡献1866条经验 获得超5个赞

memcached/redis/数据库都能做到

根据手机号构造一个key,如手机号码-send-今天日期

  1. 发送之前读取这个key的值,如果大于等于设定的值,接口直接报错返回
  2. 发送验证码
  3. 将该key的值+1
查看完整回答
反对 回复 2019-03-18
?
慕斯709654

TA贡献1840条经验 获得超5个赞

写在redis里面

查看完整回答
反对 回复 2019-03-18
?
富国沪深

TA贡献1790条经验 获得超9个赞

推荐使用redis记录每天发送的日志,统计每日每个手机号发送验证的次数,超过限制次数不发。记得定时清理这部分日志。

当然也可以使用mysql去做,只是redis会快很多。

查看完整回答
反对 回复 2019-03-18
?
动漫人物

TA贡献1815条经验 获得超10个赞

使用缓存,redis为例,发送之前,比如你要限制每天发送次数,

  1. 写一个键为 手机号.日期 ,值为次数, 有效时间 24 小时, 的缓存
  2. 发送前验证检验 a.是否存在(配合当天日期) b.次数是否达到限制
  3. 符合条件发送, 让该缓存自增

要是你想复杂一点, 比如说:

10分钟内可以发5次,超过5次等待30分钟才能发送

  1. 写一个 手机号为键,值为次数的缓存,初始值为1, 10分钟的缓存
  2. 检测是否存在, 如果存在, 检测次数? 次数未达到最大值, 自增, 到了最大次数, 将缓存时间修改为30分钟
查看完整回答
反对 回复 2019-03-18
  • 6 回答
  • 0 关注
  • 1197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信