Maison > développement back-end > tutoriel php > Compétences en développement PHP : Comment implémenter la fonction de vérification par SMS de l'enregistrement des utilisateurs

Compétences en développement PHP : Comment implémenter la fonction de vérification par SMS de l'enregistrement des utilisateurs

王林
Libérer: 2023-09-21 14:38:02
original
755 Les gens l'ont consulté

Compétences en développement PHP : Comment implémenter la fonction de vérification par SMS de lenregistrement des utilisateurs

Compétences en développement PHP : Comment implémenter la fonction de vérification par SMS de l'enregistrement des utilisateurs

À l'ère d'Internet, l'enregistrement des utilisateurs est devenu un comportement courant pour les sites Web et les applications. Afin de protéger la sécurité des comptes des utilisateurs et d'empêcher les enregistrements malveillants, de nombreuses entreprises ont activé les fonctions de vérification par SMS. Les utilisateurs doivent saisir leur numéro de téléphone mobile et recevoir un code de vérification par SMS lors de leur inscription pour confirmer leur identité et leur validité. Dans cet article, nous présenterons comment utiliser le langage PHP pour implémenter la fonction de vérification par SMS d'enregistrement des utilisateurs et fournirons des exemples de code spécifiques.

Étape 1 : Préparez l'environnement de développement

Tout d'abord, assurez-vous d'avoir installé l'analyseur PHP et la base de données, telle que MySQL. De plus, vous avez également besoin d'une plate-forme SMS disponible. Nous utiliserons le service Alibaba Cloud SMS (Aliyun SMS) dans cet exemple. Vous devez créer un compte sur Alibaba Cloud et suivre sa documentation pour configurer et obtenir une clé API.

Étape 2 : Créer une base de données

Créez une base de données nommée « utilisateurs » et créez une table nommée « utilisateurs » dans la base de données. La structure du tableau est la suivante :

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
);
Copier après la connexion

Dans ce tableau, nous stockons les informations de l'utilisateur, notamment le nom d'utilisateur, le mot de passe, le numéro de téléphone portable, le statut de l'utilisateur, le code de vérification et l'heure de création.

Étape 3 : Envoyer le code de vérification par SMS

Ensuite, nous écrirons une fonction PHP pour envoyer le code de vérification par SMS. Dans cette fonction, nous devons appeler l'API SMS d'Alibaba Cloud et transmettre le numéro de téléphone mobile et le code de vérification comme paramètres.

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();
}
Copier après la connexion

Dans cette fonction, nous devons remplacer <Your Access Key Id><Your Access Key Secret>替换为你在阿里云获取的API密钥信息。同时,你还需要将<Your Sign Name><Your Template Code> par la signature SMS et le code du modèle SMS que vous avez définis dans Alibaba Cloud.

Étape 4 : Traiter la demande d'enregistrement

Lorsque l'utilisateur soumet la demande d'enregistrement, nous devons vérifier si le numéro de téléphone mobile a déjà été enregistré. S'il n'est pas enregistré, nous générons aléatoirement un code de vérification à 6 chiffres et l'enregistrons dans la base de données.

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);
}
Copier après la connexion

Dans cet exemple de code, nous vérifions d'abord si le numéro de mobile a été enregistré. Si le numéro de mobile existe déjà, nous renverrons un message d'erreur. Sinon, nous générerons un code de vérification aléatoire à 6 chiffres et l'enregistrerons dans la base de données.

Étape 5 : Vérifiez le code de vérification

Une fois que l'utilisateur a saisi le code de vérification SMS reçu, nous devons vérifier si le code de vérification est correct. Si le code de vérification est correct, nous mettrons à jour le statut de l'utilisateur sur « Vérifié » pour indiquer que l'utilisateur a été vérifié par son numéro de téléphone mobile.

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);
}
Copier après la connexion

Dans ce code, nous vérifions d'abord si le code de vérification est correct. Si le code de vérification est correct, nous mettrons à jour le statut de l'utilisateur à 1, indiquant que l'utilisateur a été vérifié par numéro de téléphone mobile.

Résumé :

Grâce aux étapes ci-dessus, nous avons mis en œuvre avec succès la fonction de vérification par SMS de l'enregistrement des utilisateurs. Les utilisateurs recevront un code de vérification par SMS lors de leur inscription. En saisissant le code de vérification correct, l'authenticité et la validité du numéro de téléphone mobile sont garanties. Cette fonction de vérification par SMS peut améliorer efficacement la sécurité des comptes d'utilisateurs et empêcher l'enregistrement malveillant et les comptes volés.

Il convient de noter que le code ci-dessus n'est qu'un exemple simple et que d'autres mesures de sécurité et processus de vérification devront peut-être être améliorés dans les projets réels. Mais grâce à cet exemple, vous pouvez apprendre à utiliser le langage PHP et le service Alibaba Cloud SMS pour implémenter la fonction de vérification par SMS d'enregistrement des utilisateurs.

Référence :

  • [Document API SMS Alibaba Cloud](https://help.aliyun.com/document_detail/55284.html?spm=a2c4g.11186623.6.624.649a645e4YmxKU)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal