Maison >développement back-end >tutoriel php >PHP réalise la fonction anti-swiping automatique du code de vérification des e-mails
Titre : PHP réalise la fonction anti-swiping automatique du code de vérification des e-mails
Avec la popularité d'Internet et l'utilisation généralisée des applications, les codes de vérification des e-mails sont devenus une méthode de vérification couramment utilisée dans de nombreux sites Web et applications. Cependant, la fréquence d’envoi des codes de vérification étant trop élevée, cela imposera une charge supplémentaire au serveur et pourra facilement être utilisé par des utilisateurs malveillants pour extraire des codes de vérification par SMS. Afin de résoudre ce problème, la fonction anti-swiping automatique des codes de vérification des e-mails peut être implémentée en PHP. Cet article expliquera comment utiliser PHP pour implémenter cette fonction et joindra des exemples de code spécifiques.
1. Générer un code de vérification par e-mail
Tout d'abord, nous devons générer un code de vérification par e-mail. En PHP, vous pouvez utiliser la fonction de nombre aléatoire rand() pour générer un code de vérification aléatoire d'une longueur spécifiée. L'exemple de code est le suivant :
function generateEmailCode($length) { $code = ''; $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charLength = strlen($chars); for ($i = 0; $i < $length; $i++) { $code .= $chars[rand(0, $charLength - 1)]; } return $code; }
Dans le code ci-dessus, la fonction generateEmailCode() accepte un paramètre de longueur, qui est utilisé pour spécifier la longueur du code de vérification généré. En interne, la fonction utilise la fonction rand() pour générer des nombres aléatoires et génère des codes de vérification basés sur le jeu de caractères spécifié. Enfin, le code de vérification généré est renvoyé.
2. Calculez la fréquence d'envoi des codes de vérification
Afin d'empêcher les utilisateurs de glisser fréquemment des codes de vérification, nous devons calculer la fréquence d'envoi des codes de vérification. Lors de la mise en œuvre de la fonction anti-swipe automatique, nous pouvons utiliser la base de données pour enregistrer l'heure à laquelle chaque adresse e-mail envoie un code de vérification et calculer l'intervalle de temps d'envoi des codes de vérification. Si l'intervalle de temps est inférieur au seuil défini, cela sera considéré comme un comportement de brossage et l'envoi du code de vérification sera refusé.
Tout d'abord, nous devons créer une table de base de données pour enregistrer l'heure d'envoi du code de vérification, y compris l'adresse e-mail, l'heure d'envoi et d'autres champs. L'exemple de code est le suivant :
CREATE TABLE `email_verification` ( `email` varchar(255) NOT NULL, `send_time` datetime NOT NULL );
Ensuite, écrivez une fonction checkEmailFrequency() qui vérifie la fréquence d'envoi des codes de vérification. L'exemple de code est le suivant :
function checkEmailFrequency($email, $threshold) { $conn = mysqli_connect('localhost', 'username', 'password', 'database'); if (!$conn) { die('数据库连接失败'); } $query = "SELECT send_time FROM email_verification WHERE email = '$email' ORDER BY send_time DESC LIMIT 1"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_assoc($result); if ($row) { $lastSendTime = strtotime($row['send_time']); $currentTime = time(); $timeDiff = $currentTime - $lastSendTime; if ($timeDiff < $threshold) { return false; } } return true; }
Dans le code ci-dessus, la fonction checkEmailFrequency() accepte deux paramètres, qui sont l'adresse email et le seuil. À l'intérieur de la fonction, une connexion à la base de données est d'abord établie, puis l'heure du dernier envoi d'une boîte aux lettres spécifique est interrogée et l'intervalle de temps est calculé. Si l'intervalle de temps est inférieur au seuil, renvoyez false pour indiquer le comportement de balayage, sinon renvoyez true pour autoriser l'envoi du code de vérification ;
3. Envoyer le code de vérification par e-mail
Lors de l'envoi du code de vérification par e-mail, appelez d'abord la fonction checkEmailFrequency() pour vérifier la fréquence d'envoi du code de vérification. Si vrai est renvoyé, le code de vérification peut être envoyé ; sinon, le code de vérification ne sera pas envoyé et une invite d’erreur correspondante sera émise. L'exemple de code est le suivant :
$email = 'user@example.com'; $threshold = 60; // 阈值设为60秒 if (checkEmailFrequency($email, $threshold)) { $verificationCode = generateEmailCode(6); // 生成6位验证码 // 发送验证码的逻辑代码 // 记录验证码的发送时间 $conn = mysqli_connect('localhost', 'username', 'password', 'database'); if (!$conn) { die('数据库连接失败'); } $query = "INSERT INTO email_verification (email, send_time) VALUES ('$email', NOW())"; mysqli_query($conn, $query); } else { echo '验证码发送过于频繁,请稍后再试。'; }
Dans le code ci-dessus, $email est l'adresse e-mail à laquelle le code de vérification doit être envoyé, et $threshold est le seuil défini. Appelez d'abord la fonction checkEmailFrequency() pour vérifier la fréquence d'envoi. Si vrai est renvoyé, le code de vérification sera envoyé et l'heure d'envoi sera enregistrée. Sinon, un message d'erreur sera donné.
4. Résumé
Grâce aux étapes ci-dessus, nous avons implémenté avec succès la fonction anti-swiping automatique pour les codes de vérification des e-mails en PHP. Grâce à des étapes telles que la génération de codes de vérification, le calcul de la fréquence d'envoi et l'envoi de codes de vérification, les utilisateurs sont efficacement empêchés d'abuser des codes de vérification. Dans le même temps, nous présentons également brièvement des exemples de code spécifiques pour permettre aux développeurs de les utiliser rapidement. J'espère que cet article vous aidera à comprendre comment mettre en œuvre la fonction anti-swiping automatique des codes de vérification des e-mails.
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!