php实现的IMEI限制的短信验证码发送类_PHP教程
php实现的IMEI限制的短信验证码发送类
php实现的IMEI限制的短信验证码发送类
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
class Api_Sms{ const EXPIRE_SEC = 1800; // 过期时间间隔 const RESEND_SEC = 60; // 重发时间间隔 const ONE_DAY_FREQ = 5; // 每日向同一个手机号发短信的次数 const ONE_DAY_IMEI_COUNT = 3; // 每日向同一个手机号发送短信的IMEI个数
public $error = array();
/** * 向指定手机号发送验证码 * @param $mobile * @param $imei * @return bool */ public function sendVerifyCode($mobile, $imei) { if(!$this->isMobile($mobile)) { $this->error = array('code' => -1, 'msg' => '这个手机号很奇葩哦,请正确输入后重试'); return false; }
$redis = Api_Common::redis(); $vcKey = 'VC_'.$mobile; $limitKey = 'VC_LIMIT_'.$mobile;
// 验证码重发限制 $data = json_decode($redis->get($vcKey), true); if($data && time() $this->error = array('code' => -1, 'msg' => '短信已在1分钟内发出,请耐心等待'); return false; }
// 手机号及IMEI限制 $sendCnt = $redis->zScore($limitKey, $imei); if($sendCnt && $sendCnt >= self::ONE_DAY_FREQ) { $this->error = array('code' => -1, 'msg' => '没收到短信?请稍等或检查短信是否被屏蔽'); return false; } $imeiCnt = $redis->zCard($limitKey); if($imeiCnt >= self::ONE_DAY_IMEI_COUNT && !$sendCnt) { $this->error = array('code' => -1, 'msg' => '已超过验证码发送设备限制'); return false; }
// 获取验证码 if(!$data) { $vc = strval(rand(100000, 999999)); $data = array('vc' => $vc, 'resend_expire' => 0); $redis->set($vcKey, json_encode($data)); $redis->expire($vcKey, self::EXPIRE_SEC); // 设置验证码过期时间 } $vc = $data['vc'];
$content = '安全验证码:'.$vc; $result = $this->send($mobile, $content); if($result) { // 重设重发时限 $data['resend_expire'] = time() + self::RESEND_SEC; $ttl = $redis->ttl($vcKey); $redis->set($vcKey, json_encode($data)); $redis->expire($vcKey, $ttl);
// 设置手机号与IMEI限制 $redis->zIncrBy($limitKey, 1, $imei); $redis->expireAt($limitKey, strtotime(date('Y-m-d',strtotime('+1 day')))); } return $result; }
/** * 向指定手机号发送短信 * @param $mobile * @param $content * @return bool */ public function send($mobile, $content){ // TODO 调用具体服务商API return true; }
/** * 判断是否为合法手机号 * @param $mobile * @return bool */ private function isMobile($mobile) { if(preg_match('/^1\d{10}$/', $mobile)) return true; return false; }
/** * 验证短信验证码 * @param $mobile * @param $vc * @return bool */ public function checkVerifyCode($mobile, $vc) { $vcKey = 'VC_'.$mobile; $vcData = json_decode(Api_Common::redis()->get($vcKey), true); if($vcData && $vcData['vc'] === $vc) { return true; } return false; }
/** * 清除验证码 * @param $mobile */ public function cleanVerifyCode($mobile) { $redis = Api_Common::redis(); $vcKey = 'VC_'.$mobile; $limitKey = 'VC_LIMIT_'.$mobile; $redis->del($vcKey); $redis->del($limitKey); } } |
另付其他网友实现的短信验证码代码
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
/*-------------------------------- 功能: 中国短信网PHP HTTP接口 发送短信 修改日期: 2009-04-08 说明: http://http.c123.com/tx/?uid=用户账号&pwd=MD5位32密码&mobile=号码&content=内容 状态: 100 发送成功 101 验证失败 102 短信不足 103 操作失败 104 非法字符 105 内容过多 106 号码过多 107 频率过快 108 号码内容空 109 账号冻结 110 禁止频繁单条发送 111 系统暂定发送 112 号码不正确 120 系统升级 --------------------------------*/ $uid = '9999'; //用户账号 $pwd = '9999'; //密码 $mobile = '13912341234,13312341234,13512341234,02122334444'; //号码 $content = '中国短信网PHP HTTP接口'; //内容 //即时发送 $res = sendSMS($uid,$pwd,$mobile,$content); echo $res;
//定时发送 /* $time = '2010-05-27 12:11'; $res = sendSMS($uid,$pwd,$mobile,$content,$time); echo $res; */ function sendSMS($uid,$pwd,$mobile,$content,$time='',$mid='') { $http = 'http://http.c123.com/tx/'; $data = array ( 'uid'=>$uid, //用户账号 'pwd'=>strtolower(md5($pwd)), //MD5位32密码 'mobile'=>$mobile, //号码 'content'=>$content, //内容 'time'=>$time, //定时发送 'mid'=>$mid //子扩展号 ); $re= postSMS($http,$data); //POST方式提交 if( trim($re) == '100' ) { return "发送成功!"; } else { return "发送失败! 状态:".$re; } }
function postSMS($url,$data='') { $row = parse_url($url); $host = $row['host']; $port = $row['port'] ? $row['port']:80; $file = $row['path']; while (list($k,$v) = each($data)) { $post .= rawurlencode($k)."=".rawurlencode($v)."&"; //转URL标准码 } $post = substr( $post , 0 , -1 ); $len = strlen($post); $fp = @fsockopen( $host ,$port, $errno, $errstr, 10); if (!$fp) { return "$errstr ($errno)\n"; } else { $receive = ''; $out = "POST $file HTTP/1.1\r\n"; $out .= "Host: $host\r\n"; $out .= "Content-type: application/x-www-form-urlencoded\r\n"; $out .= "Connection: Close\r\n"; $out .= "Content-Length: $len\r\n\r\n"; $out .= $post; fwrite($fp, $out); while (!feof($fp)) { $receive .= fgets($fp, 128); } fclose($fp); $receive = explode("\r\n\r\n",$receive); unset($receive[0]); return implode("",$receive); } } ?> |
以上所述就是本文的全部内容了,希望大家能够喜欢。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.
