PHP開発スキル:ユーザー登録・SMS認証機能の実装方法

王林
リリース: 2023-09-21 14:38:02
オリジナル
709 人が閲覧しました

PHP開発スキル:ユーザー登録・SMS認証機能の実装方法

PHP 開発スキル: ユーザー登録 SMS 認証機能の実装方法

インターネット時代において、Web サイトやアプリケーションではユーザー登録が一般的な動作になりました。ユーザーのアカウントのセキュリティを保護し、悪意のある登録を防ぐために、多くの企業が SMS 認証機能を有効にしています。ユーザーは、登録時に自分の身元と有効性を確認するために携帯電話番号を入力し、SMS 認証コードを受け取る必要があります。この記事では、PHP言語を使用してユーザー登録SMS認証機能を実装する方法と具体的なコード例を紹介します。

ステップ 1: 開発環境を準備する

まず、PHP パーサーとデータベース (MySQL など) がインストールされていることを確認します。さらに、利用可能な SMS プラットフォームも必要です。この例では、Alibaba Cloud SMS サービス (Aliyun SMS) を使用します。 Alibaba Cloud にアカウントを登録し、ドキュメントに従って API キーを設定および取得する必要があります。

ステップ 2: データベースの作成

「users」という名前のデータベースを作成し、データベース内に「users」という名前のテーブルを作成します。テーブルの構造は次のとおりです。

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  password VARCHAR(255) NOT NULL,
  mobile VARCHAR(20) UNIQUE NOT NULL,
  status TINYINT(1) DEFAULT 0,
  verification_code VARCHAR(6) DEFAULT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
ログイン後にコピー

このテーブルには、ユーザー名、パスワード、携帯電話番号、ユーザー ステータス、確認コード、作成時刻などのユーザー情報が保存されます。

ステップ 3: SMS 確認コードを送信する

次に、SMS 確認コードを送信するための PHP 関数を作成します。この関数では、Alibaba Cloud の SMS API を呼び出し、携帯電話番号と確認コードをパラメータとして渡す必要があります。

function sendSMS($mobile, $verificationCode) {
  $accessKeyId = '<Your Access Key Id>';
  $accessSecret = '<Your Access Key Secret>';
  $params = [
    'PhoneNumbers' => $mobile,
    'SignName' => '<Your Sign Name>',
    'TemplateCode' => '<Your Template Code>',
    'TemplateParam' => json_encode(['code' => $verificationCode])
  ];
  $client = new GuzzleHttpClient();
  $response = $client->request('POST', 'https://dysmsapi.aliyuncs.com/', [
    'query' => array_merge($params, ['AccessKeyId' => $accessKeyId]),
    'headers' => ['x-sdk-client' => 'php/2.0.0']
  ]);
  return $response->getBody();
}
ログイン後にコピー

この関数では、<Your Access Key Id><Your Access Key Secret> を、Alibaba Cloud から取得したものに置き換える必要があります。 APIキー情報。同時に、<署名名><テンプレート コード> を、Alibaba Cloud で設定した SMS 署名と SMS テンプレート コードに置き換える必要があります。

ステップ 4: 登録リクエストを処理する

ユーザーが登録リクエストを送信するとき、携帯電話番号がすでに登録されているかどうかを確認する必要があります。登録されていない場合は、6 桁の確認コードがランダムに生成され、データベースに保存されます。

function registerUser($username, $password, $mobile) {
  // 检查手机号码是否已被注册
  if (checkMobileExists($mobile)) {
    return '手机号码已被注册';
  }
  // 生成随机验证码
  $verificationCode = rand(100000, 999999);
  // 保存验证码到数据库
  saveVerificationCode($mobile, $verificationCode);
  // 发送短信验证码
  $response = sendSMS($mobile, $verificationCode);
  return '短信验证码已发送';
}

function checkMobileExists($mobile) {
  // 连接数据库
  $conn = new mysqli('localhost', 'root', 'password', 'users');
  // 检查手机号码是否已存在
  $sql = "SELECT * FROM users WHERE mobile = '{$mobile}'";
  $result = $conn->query($sql);
  return $result->num_rows > 0;
}

function saveVerificationCode($mobile, $verificationCode) {
  // 连接数据库
  $conn = new mysqli('localhost', 'root', 'password', 'users');
  // 保存验证码到数据库
  $sql = "UPDATE users SET verification_code = '{$verificationCode}' WHERE mobile = '{$mobile}'";
  $conn->query($sql);
}
ログイン後にコピー

このサンプルコードでは、まず携帯電話番号が登録されているかどうかを確認します。携帯電話番号がすでに存在する場合は、エラー メッセージが返されます。それ以外の場合は、ランダムな 6 桁の確認コードが生成され、データベースに保存されます。

ステップ 5: 確認コードを確認する

ユーザーが受信した SMS 確認コードを入力するとき、確認コードが正しいかどうかを確認する必要があります。確認コードが正しい場合、ユーザーのステータスが「認証済み」に更新され、ユーザーが携帯電話番号で認証されたことが示されます。

function verifyCode($mobile, $verificationCode) {
  // 检查验证码是否正确
  if (checkVerificationCode($mobile, $verificationCode)) {
    // 更新用户状态
    updateStatus($mobile);
    return '手机号码验证成功';
  }
  return '验证码错误';
}

function checkVerificationCode($mobile, $verificationCode) {
  // 连接数据库
  $conn = new mysqli('localhost', 'root', 'password', 'users');
  // 检查验证码是否正确
  $sql = "SELECT * FROM users WHERE mobile = '{$mobile}' AND verification_code = '{$verificationCode}'";
  $result = $conn->query($sql);
  return $result->num_rows > 0;
}

function updateStatus($mobile) {
  // 连接数据库
  $conn = new mysqli('localhost', 'root', 'password', 'users');
  // 更新用户状态为已验证
  $sql = "UPDATE users SET status = 1 WHERE mobile = '{$mobile}'";
  $conn->query($sql);
}
ログイン後にコピー

このコードでは、まず検証コードが正しいかどうかを確認します。確認コードが正しい場合は、ユーザーのステータスが 1 に更新され、ユーザーが携帯電話番号で認証されたことを示します。

まとめ:

上記の手順により、ユーザー登録SMS認証機能を実装することができました。ユーザーは登録時にテキスト メッセージの認証コードを受け取り、正しい認証コードを入力することで、携帯電話番号の信頼性と有効性が保証されます。この SMS 認証機能は、ユーザー アカウントのセキュリティを効果的に向上させ、悪意のある登録やアカウントの盗難を防ぐことができます。

上記のコードは単なる例であり、実際のプロジェクトでは、他のセキュリティ対策や検証プロセスの改善が必要になる場合があります。ただし、この例を通じて、PHP 言語と Alibaba Cloud SMS サービスを使用してユーザー登録 SMS 検証機能を実装する方法を学ぶことができます。

参考資料:

  • [Alibaba Cloud SMS API ドキュメント](https://help.aliyun.com/document_detail/55284.html?spm=a2c4g.11186623.6.624.649a645e4YmxKU) )

以上がPHP開発スキル:ユーザー登録・SMS認証機能の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!