鍍金池/ 問(wèn)答/PHP  C/ PHP 如何實(shí)現(xiàn)驗(yàn)證碼每個(gè)手機(jī)每天發(fā)送次數(shù)的限制

PHP 如何實(shí)現(xiàn)驗(yàn)證碼每個(gè)手機(jī)每天發(fā)送次數(shù)的限制

我接入了阿里云的短信,請(qǐng)問(wèn)如何限制每個(gè)手機(jī)每天對(duì)驗(yàn)證碼接收次數(shù)的限制呢?

回答
編輯回答
舊言

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

查看改手機(jī)號(hào)對(duì)應(yīng)日期接受了多少條短信

2017年12月2日 15:47
編輯回答
維他命

memcached/redis/數(shù)據(jù)庫(kù)都能做到

根據(jù)手機(jī)號(hào)構(gòu)造一個(gè)key,如手機(jī)號(hào)碼-send-今天日期

  1. 發(fā)送之前讀取這個(gè)key的值,如果大于等于設(shè)定的值,接口直接報(bào)錯(cuò)返回
  2. 發(fā)送驗(yàn)證碼
  3. 將該key的值+1
2018年4月7日 00:51
編輯回答
笑浮塵

使用緩存,redis為例,發(fā)送之前,比如你要限制每天發(fā)送次數(shù),

  1. 寫一個(gè)鍵為 手機(jī)號(hào).日期 ,值為次數(shù), 有效時(shí)間 24 小時(shí), 的緩存
  2. 發(fā)送前驗(yàn)證檢驗(yàn) a.是否存在(配合當(dāng)天日期) b.次數(shù)是否達(dá)到限制
  3. 符合條件發(fā)送, 讓該緩存自增

要是你想復(fù)雜一點(diǎn), 比如說(shuō):

10分鐘內(nèi)可以發(fā)5次,超過(guò)5次等待30分鐘才能發(fā)送

  1. 寫一個(gè) 手機(jī)號(hào)為鍵,值為次數(shù)的緩存,初始值為1, 10分鐘的緩存
  2. 檢測(cè)是否存在, 如果存在, 檢測(cè)次數(shù)? 次數(shù)未達(dá)到最大值, 自增, 到了最大次數(shù), 將緩存時(shí)間修改為30分鐘
2017年12月2日 00:36
編輯回答
單眼皮

寫在redis里面

2018年7月22日 18:12
編輯回答
浪蕩不羈

推薦使用redis記錄每天發(fā)送的日志,統(tǒng)計(jì)每日每個(gè)手機(jī)號(hào)發(fā)送驗(yàn)證的次數(shù),超過(guò)限制次數(shù)不發(fā)。記得定時(shí)清理這部分日志。

當(dāng)然也可以使用mysql去做,只是redis會(huì)快很多。

2017年5月31日 06:41
編輯回答
何蘇葉

注冊(cè)的時(shí)候一秒鐘內(nèi)只能發(fā)送一次短信驗(yàn)證碼差不多的邏輯

2017年10月27日 02:43