目次
phpで実装したIMEI制限付きSMS認証コード送信クラス
ホームページ バックエンド開発 PHPチュートリアル PHP_PHP チュートリアルに実装された IMEI 制限付きの SMS 検証コード送信クラス

PHP_PHP チュートリアルに実装された IMEI 制限付きの SMS 検証コード送信クラス

Jul 13, 2016 am 09:54 AM
php

phpで実装したIMEI制限付きSMS認証コード送信クラス

phpで実装したIMEI制限付きSMS認証コード送信クラス

?

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

クラスApi_Sms{

const EXPIRE_SEC = 1800 // 有効期限の間隔

;

const RESEND_SEC = 60 // 再送信間隔

;

const ONE_DAY_FREQ = 5; // 同じ携帯電話番号にテキスト メッセージを送信する 1 日の回数

const ONE_DAY_IMEI_COUNT = 3 // 毎日同じ携帯電話番号に送信される IMEI の数

;

パブリック $error = array();

/**

*指定された携帯電話番号に認証コードを送信します

* @param $mobile

* @param $imei

* @return bool

*/

パブリック関数 sendVerifyCode($mobile, $imei) {

if(!$this->isMobile($mobile)) {

$this->error = array('code' => -1, 'msg' => 'この携帯電話番号は非常に奇妙です、正しく入力してもう一度お試しください');

false を返す;

}

$redis = Api_Common::redis();

$vcKey = 'VC_'.$mobile;

$limitKey = 'VC_LIMIT_'.$mobile;

//認証コード再送信制限

$data = json_decode($redis->get($vcKey), true);

if($data && time() < $data['resend_expire']) {

$this->error = array('code' => -1, 'msg' => 'メッセージは 1 分以内に送信されました。しばらくお待ちください');

false を返す;

}

//携帯電話番号とIMEIの制限

$sendCnt = $redis->zScore($limitKey, $imei);

if($sendCnt && $sendCnt >= self::ONE_DAY_FREQ) {

$this->error = array('code' => -1, 'msg' => 'テキスト メッセージを受信しませんでしたか? しばらく待つか、テキスト メッセージがブロックされているかどうかを確認してください');

false を返す;

}

$imeiCnt = $redis->zCard($limitKey);

if($imeiCnt >= self::ONE_DAY_IMEI_COUNT && !$sendCnt) {

$this->error = array('code' => -1, 'msg' => '認証コード送信デバイスの制限を超えました');

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'))));

}

$result を返す;

}

/**

* 指定した携帯電話番号にSMSを送信します

* @param $mobile

* @param $content

* @return bool

*/

パブリック関数 send($mobile, $content){

//TODO 特定のサービスプロバイダー API を呼び出す

true を返す;

}

/**

* 合法的な携帯電話番号であるかどうかを確認してください

* @param $mobile

* @return bool

*/

プライベート関数 isMobile($mobile) {

if(preg_match('/^1d{10}$/', $mobile))

true を返す;

false を返す;

}

/**

* SMS 認証コードを確認します

* @param $mobile

* @param $vc

* @return bool

*/

パブリック関数 checkVerifyCode($mobile, $vc) {

$vcKey = 'VC_'.$mobile;

$vcData = json_decode(Api_Common::redis()->get($vcKey), true);

if($vcData && $vcData['vc'] === $vc) {

true を返す;

}

false を返す;

}

/**

* 確認コードをクリアします

* @param $mobile

*/

パブリック関数 cleanVerifyCode($mobile) {

$redis = Api_Common::redis();

$vcKey = 'VC_'.$mobile;

$limitKey = 'VC_LIMIT_'.$mobile;

$redis->del($vcKey);

$redis->del($limitKey);

}

}

他のネチズンが実装した追加のSMS認証コードを支払う

?

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

/*--------------------------------

機能: テキストメッセージを送信するための中国SMSネットワークPHP HTTPインターフェース

更新日: 2009-04-08

手順: http://http.c123.com/tx/?uid=ユーザーアカウント&pwd=MD5桁32のパスワード&mobile=番号&content=content

ステータス:

100 件が正常に送信されました

101 検証に失敗しました

102 SMS が足りません

103 操作が失敗しました

104 個の不正な文字

105 コンテンツが多すぎます

106 数字が多すぎます

107の周波数は速すぎます

108番号の内容は空です

109アカウントが凍結されました

110 単一メッセージの頻繁な送信は禁止されています

111 システムは暫定的に送信をスケジュールしています

112番号は間違っています

120システムアップグレード

--------------------------------*/

$uid = '9999' //ユーザーアカウント

;

$pwd = '9999' //パスワード

;

$mobile = '13912341234,13312341234,13512341234,02122334444' //番号

$content = '中国 SMS ネットワーク PHP HTTP インターフェイス' //コンテンツ

//すぐに送信

$res = sendSMS($uid,$pwd,$mobile,$content);

エコー$res;

//定期的に送信します

/*

$time = '2010-05-27 12:11';

$res = sendSMS($uid,$pwd,$mobile,$content,$time);

エコー$res;

*/

関数 sendSMS($uid,$pwd,$mobile,$content,$time='',$mid='')

{

$http = 'http://http.c123.com/tx/';

$data = 配列

(

'uid'=>$uid, //ユーザーアカウント

'pwd'=>strto lower(md5($pwd)), //MD5 桁 32 のパスワード

'mobile'=>$mobile, //番号

'content'=>$content, //コンテンツ

'time'=>$time, //定期的に送信します

'mid'=>$mid //サブ内線番号

);

$re= postSMS($http,$data) //POST 経由で送信

if( トリム($re) == '100' )

{

return "正常に送信されました!";

}

その他

{

return "送信に失敗しました! ステータス:".$re;

}

}

関数postSMS($url,$data='')

{

$row = parse_url($url);

$host = $row['ホスト'];

$ポート = $row['ポート'] ? $row['ポート']:80;

$file = $row['パス'];

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";

} 他 {

$受信 = '';

$out = "POST $file HTTP/1.1rn";

$out .= "ホスト: $hostrn";

$out .= "コンテンツタイプ: application/x-www-form-urlencodedrn";

$out .= "接続: 閉じる";

$out .= "コンテンツの長さ: $lenrnrn";

$out .= $post;

fwrite($fp, $out);

ながら (!feof($fp)) {

$receive .= fgets($fp, 128);

}

fclose($fp);

$receive =explode("rnrn",$receive);

unset($receive[0]);

return implode("",$receive);

}

}

?>

以上記載は本文の全内容です、大家様に喜んでいただければ幸いです。

http://www.bkjia.com/PHPjc/994740.html

tru​​ehttp://www.bkjia.com/PHPjc/994740.html技術記事 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...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles