PHPでSMS認証を実装する方法

藏色散人
リリース: 2023-03-17 11:56:01
オリジナル
2298 人が閲覧しました

SMS 検証を実装する

php メソッド: 1. アカウントを登録し、インターフェイスをダウンロードします。 2. パラメーター変数を設定します。 3. インターフェイスを呼び出して SMS をテストします。 4. コード「if(strto lower($_SESSION)」を渡します。 ["captcha"] ) == strto lower($captcha)){echo $_POST["captcha"]."...";$_SESSION["captcha"] = "";if(...)... 「検証を実装するだけです。

PHPでSMS認証を実装する方法

このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.1、Dell G3 コンピューター。

php で SMS 検証を実装するにはどうすればよいですか?

php は、携帯電話の SMS 認証コードの全プロセスを実現します。

私たちの仕事や生活において、登録、支払い、パスワードの変更などに関係なく、さまざまな Web サイトやアプリを使用するとき、 . 誰もが認証のために SMS 認証コードを取得する必要がありますが、認証コードはどのように送信されるのでしょうか?次に、Huaxing Cloud SMS を例として (主に実装アイデアを理解するための例として)、PHP で SMS 検証コードを送信する実装プロセスを詳しく紹介します (スワイプ防止 SMS 検証コード メカニズムと暗号化通信)。

1. 実装アイデア

PHPでSMS認証を実装する方法

##2. 実装プロセス

#1. アカウントの登録

#Huaxing Cloud SMS アカウントを登録します。基本情報を入力すると、アカウントを開設するために専任担当者から連絡があり、テストのために事前に少数のテキスト メッセージが送信されます。

2. インターフェイスのダウンロード

[プロダクト センター] をクリックして製品ページに入り、対応する PHP セキュア クラウド SMS インターフェイスと HTTPS バージョンのクラウド SMS インターフェイスのドキュメントのダウンロードを選択します。ダウンロードされたドキュメントは次のとおりです。 :

PHPでSMS認証を実装する方法

3. 設定パラメータ変数

demo_https.php ファイルを設定します:

(1)curlPost、curlGet を変更し、 3 つの sendSMS メソッドをプロジェクト内の対応する場所にコピーします。残高を取得する必要がある場合は、getBalance メソッドも同時にコピーします。

(2) sendSMS メソッドの登録コード ($reg_code)、パスワード ($reg_pw)、署名 ($signature)、テキスト メッセージの内容 ($content) を独自の情報に変更します。注: テキスト メッセージの内容を報告する必要がある場合があります。

(3) コード内のコメント ルールに従って対象の携帯電話番号と内容を変更し、テキスト メッセージを送信する必要がある sendSMS メソッドを呼び出します。

4. レポート SMS テンプレート

送信する内容を華興カスタマー サービス スタッフに送信すると、ブラックリストや機密用語などをチェックしてレポート作業が完了します。

5. インターフェイスを呼び出して SMS をテストする

一連の事前準備を完了し、php クラウドの SMS インターフェイスを呼び出して実際に SMS の送信状況をテストします。

3. コードを実行します

クラウド SMS インターフェイス ドキュメントの HTTPS バージョンを表示して、インターフェイス アドレス、パラメーターの説明、および例を表示します。以下のコードを呼び出してパラメーターを構成した後、これを呼び出しますSMS の送信をテストして戻り値を出力するメソッドを使用すると、ドキュメント

image_captcha.php 内のエラー コードを確認して、画像検証コード (アンチスワイプ メカニズム)

<?php
/**
* 字母+数字的验证码生成
*/
// 开启session
session_start();
//1.创建黑色画布
$image = imagecreatetruecolor(100, 30);
//2.为画布定义(背景)颜色
$bgcolor = imagecolorallocate($image, 255, 255, 255);
//3.填充颜色
imagefill($image, 0, 0, $bgcolor);
// 4.设置验证码内容
//4.1 定义验证码的内容
$content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
//4.1 创建一个变量存储产生的验证码数据,便于用户提交核对
$captcha = "";
for ($i = 0; $i < 4; $i++) {
// 字体大小
$fontsize = 10;
// 字体颜色
$fontcolor = imagecolorallocate($image, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
// 设置字体内容
$fontcontent = substr($content, mt_rand(0, strlen($content)), 1);
$captcha .= $fontcontent;
// 显示的坐标
$x = ($i * 100 / 4) + mt_rand(5, 10);
$y = mt_rand(5, 10);
// 填充内容到画布中
imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
$_SESSION["captcha"] = $captcha;
//4.3 设置背景干扰元素
for ($$i = 0; $i < 200; $i++) {
$pointcolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));
imagesetpixel($image, mt_rand(1, 99), mt_rand(1, 29), $pointcolor);
}
//4.4 设置干扰线
for ($i = 0; $i < 3; $i++) {
$linecolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));
imageline($image, mt_rand(1, 99), mt_rand(1, 29), mt_rand(1, 99), mt_rand(1, 29), $linecolor);
}
//5.向浏览器输出图片头信息
header(&#39;content-type:image/png&#39;);
//6.输出图片到浏览器
imagepng($image);
//7.销毁图片
//imagedestroy($image); 
index.html前端代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>短信验证码</title>
</head>
<body>
<form action="./sendsms.php" method="post">
<div>
手机号:<input id="phone" type="text" name="phone" value="" />
</div>
<div>验证码: <input type="text" name="captcha" placeholder="请输入图片中的验证码">
<img  src="image_captcha.php" onclick="this.src=&#39;image_captcha.php?&#39;+new Date().getTime();"    style="max-width:90%"  style="max-width:90%" alt="PHPでSMS認証を実装する方法" ><br/></div>
<div> <input type="submit" value="验证"></div>
</form>
</body>
</html>
ログイン後にコピー

sendsms を生成できます。 php バックエンド実行コード:

<?php
/**
* 接受用户登陆时提交的验证码
*/
session_start();
//1. 获取到用户提交的验证码、手机号
$phone = $_POST[&#39;phone&#39;];//手机号
$captcha = $_POST["captcha"];
//2. 将session中的验证码和用户提交的验证码进行核对,当成功时提示验证码正确,并销毁之前的session值,不成功则重新提交
if(strtolower($_SESSION["captcha"]) == strtolower($captcha)){
echo $_POST["captcha"]."验证码正确!";
$_SESSION["captcha"] = "";
if(preg_match_all("/^1[34578]\d{9}$/", $phone)) { 
//得到手机号 
$url = &#39;https://www.stongnet.com/sdkhttp/sendsms.aspx&#39;;
$reg_code = &#39;101100-WEB-HUAX-111111&#39;; //华兴软通注册码,请在这里填写您从客服那得到的注册码
$reg_pw = &#39;11111111&#39;; //华兴软通注册码对应的密码,请在这里填写您从客服那得到的密码
$source_add = &#39;&#39;; //子通道号(最长10位,可为空
//$phone = &#39;15891234567&#39;; //手机号码(最多1000个),多个用英文逗号(,)隔开,不可为空
$content = &#39;华兴软通验证码:&#39; . range(1000,9999);; //短信内容(含有中文,特殊符号等非ASCII码的字符,用户必须保证其为UTF-8编码格式)
$param_arry = array();
$param_arry[&#39;reg&#39;] = $reg_code;
$param_arry[&#39;pwd&#39;] = $reg_pw;
$param_arry[&#39;sourceadd&#39;] = $source_add;
$param_arry[&#39;phone&#39;] = $phone;
$param_arry[&#39;content&#39;] = $content;
$ca_info = dirname(__FILE__) . &#39;/cacert.pem&#39;; //根证书文件路径,相对路径和绝对路径均可,推荐使用绝对路径;demo里文件和源码放在一起了,为了安全证书文件最好不要和应用代码放在一起
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($param_array));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); //验证交换证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); //检查SSL证书公用名是否存在,并且是否与提供的主机名匹配
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1); //设置实现协议为TLS1.0版本
curl_setopt($ch, CURLOPT_CAINFO, $ca_info); 
$data = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if(!empty($error)){ //curl有错误
echo $error;
}else{ //输出请求结果
echo $data;
}
}else{echo "请输入正确手机号";}
}else{
echo "验证码提交不正确!";
}
ログイン後にコピー

例に従ってください。カスタマー サービスから提供された登録番号とパスワードを使用して、携帯電話番号への SMS 確認コードの送信をテストし、独自の要件に応じてさらなる機能開発を行うことができます。インターフェイスの戻りコードとドキュメントに基づいて。

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHPでSMS認証を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート