Maison >développement back-end >Problème PHP >Comment utiliser PHP pour implémenter la fonction de code de vérification de connexion utilisateur

Comment utiliser PHP pour implémenter la fonction de code de vérification de connexion utilisateur

PHPz
PHPzoriginal
2023-04-21 09:09:332048parcourir

Avec le développement de la technologie des réseaux, les problèmes de sécurité des sites Web attirent de plus en plus l'attention. En tant que développeur de sites Web, nous devons garantir la sécurité des informations de compte des utilisateurs et la confidentialité de leurs données personnelles. Parmi eux, la sécurité du processus de connexion des utilisateurs est également très importante. Afin de protéger la sécurité des comptes d'utilisateurs, nous devons ajouter une fonction de code de vérification à la page de connexion de l'utilisateur. Cet article explique comment utiliser PHP pour implémenter la fonction de code de vérification de connexion utilisateur.

  1. Qu'est-ce que le code de vérification

Le code de vérification est une technologie qui distingue les humains des programmes informatiques, ce qui peut empêcher efficacement les attaquants malveillants d'utiliser des programmes automatisés pour lancer des attaques sur des sites Web. Les codes de vérification courants se présentent sous différentes formes telles que des chiffres, des lettres, des graphiques, etc. Les utilisateurs doivent saisir correctement le code de vérification lors de la connexion pour vérifier l'identité de l'utilisateur.

Dans le développement de sites Web, les codes de vérification sont généralement intégrés au système de connexion pour empêcher les utilisateurs malveillants d'obtenir les autorisations du système via le craquage par force brute et d'autres méthodes. Dans le même temps, les codes de vérification peuvent également empêcher les utilisateurs malveillants d’utiliser des programmes automatisés pour attaquer et effacer les données.

  1. Créer des codes de vérification PHP

En PHP, vous pouvez utiliser la bibliothèque d'extensions GD pour dessiner divers codes de vérification, notamment des chiffres, des lettres, des graphiques, etc. Ci-dessous, nous prenons comme exemple les codes de vérification numériques et alphabétiques pour présenter comment créer des codes de vérification en PHP.

2.1. Génération de code de vérification numérique

Le code de vérification numérique est la forme la plus élémentaire de création de codes de vérification et la plus courante. Des codes de vérification numériques peuvent être générés à l'aide des fonctions de la bibliothèque GD. Vous trouverez ci-dessous un exemple de code qui génère un code de vérification aléatoire à 4 chiffres.

<?php
session_start(); // 开启 session

header(&#39;Content-type: image/png&#39;); // 设置 Content-type

$im = imagecreatetruecolor(80, 40); // 创建一个宽为80,高为40的验证码背景图
$bgColor = imagecolorallocate($im, 255, 255, 255); // 设置背景色为白色
imagefill($im, 0, 0, $bgColor); // 绘制背景

$code = rand(1000, 9999); // 随机生成一个 4 位数的验证码
$_SESSION[&#39;code&#39;] = $code; // 把验证码存储在 Session 中,以便在其他页面中使用

$textColor = imagecolorallocate($im, 0, 0, 0); // 设置验证码颜色

imagestring($im, 5, 20, 12, $code, $textColor); // 绘制验证码

imagepng($im); // 输出 PNG 图片
imagedestroy($im); // 释放内存
?>

Analyse :

  • Tout d'abord, nous activons la fonction de session de PHP pour utiliser les codes de vérification sur d'autres pages.
  • Ensuite, nous spécifions le type MIME du code de vérification comme image/png, indiquant au navigateur que le fichier est un fichier image PNG.
  • Ensuite, nous utilisons la fonction imagecreatetruecolor pour créer une image vide d'une largeur de 80 et d'une hauteur de 40.
  • Ensuite, nous définissons un fond blanc à l'aide de la fonction imagecolorallocate et remplissons toute l'image à l'aide de la fonction imagefill.
  • Ensuite, nous générons un code de vérification aléatoire à 4 chiffres et le stockons dans la session.
  • Enfin, nous utilisons la fonction imagestring pour dessiner le code de vérification dans l'image, et utilisons la fonction imagepng pour générer l'image PNG générée, puis détruisons la ressource image et libérons la mémoire.

2.2. Génération de code de vérification mixte alphanumérique

Les codes de vérification numérique sont vulnérables aux attaques, donc afin d'améliorer la sécurité, nous pouvons utiliser le formulaire de code de vérification mixte alphanumérique. De même, nous pouvons dessiner le captcha alphanumérique en utilisant la bibliothèque GD de PHP. Vous trouverez ci-dessous un exemple de code qui génère un code de vérification alphanumérique aléatoire à 4 chiffres.

<?php
session_start(); // 开启 session

header(&#39;Content-type: image/png&#39;); // 设置 Content-type

$im = imagecreatetruecolor(100, 40); // 创建一个宽为100,高为40的验证码背景图
$bgColor = imagecolorallocate($im, 255, 255, 255); // 设置背景色为白色
imagefill($im, 0, 0, $bgColor); // 绘制背景

// 字母数字集
$chars = &#39;0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#39;;
$len = strlen($chars);
$code = &#39;&#39;;
for ($i = 0; $i < 4; $i++) {
    $code .= $chars[rand(0, $len-1)];
}

$_SESSION[&#39;code&#39;] = $code; // 把验证码存储在 Session 中,以便在其他页面中使用

$textColor = imagecolorallocate($im, 0, 0, 0); // 设置验证码颜色

// 使用随机字体和位置,绘制验证码
for ($i = 0; $i < 4; $i++) {
    $font = rand(1, 5); // 随机选择字体
    $angle = rand(-20, 20); // 随机旋转角度
    $x = $i * 20 + rand(0, 10); // 规定较小的x坐标值和x步进值,y的值也可以自定义 
    $y = rand(20, 30);
    $fontColor = imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255));
    $char = substr($code, $i, 1);
    imagettftext($im, 18, $angle, $x, $y, $fontColor, __DIR__.&#39;/font&#39;.$font.&#39;.ttf&#39;, $char);
}

imagepng($im); // 输出 PNG 图片
imagedestroy($im); // 释放内存
?>

Analyse :

  • Différent de la façon dont les codes de vérification numériques sont générés, les codes de vérification alphanumériques mixtes doivent d'abord définir un ensemble de caractères composé de chiffres et de lettres, puis en obtenir des caractères de manière aléatoire.
  • Ensuite, nous utilisons la même méthode pour stocker le code de vérification dans la session.
  • Le dessin des caractères est fondamentalement le même que le code de vérification numérique, mais un fichier de police ttf doit être introduit pour générer des lettres. Nous sélectionnons au hasard une police et une position de dessin et utilisons la fonction imagettftext pour dessiner les caractères.
  1. Utilisez le code de vérification sur le site Web

Après avoir généré le code de vérification, il vous suffit d'introduire le programme pour générer le code de vérification dans la page de connexion de l'utilisateur. Lors de la vérification de la saisie par l'utilisateur des informations de compte et de mot de passe, il est également nécessaire de vérifier si le code de vérification saisi par l'utilisateur est correct.

Ce qui suit est un exemple de code pour une page de connexion utilisateur.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <form action="login.php" method="post">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username"><br>

        <label for="password">Password:</label>
        <input type="password" id="password" name="password"><br>

        <label for="code">Code:</label>
        <input type="text" id="code" name="code"><br>
        <img src="captcha.php" alt="Captcha">

        <button type="submit">Submit</button>
    </form>
</body>
</html>

Semblable à la page de connexion d'un utilisateur ordinaire, nous avons ajouté une partie de code de vérification lors de la saisie du compte et du mot de passe, et avons introduit le programme de génération de code de vérification captcha.php. Une fois que l'utilisateur a entré le numéro de compte, le mot de passe et le code de vérification, cliquez sur le bouton Soumettre et le système soumettra les informations saisies par l'utilisateur à login.php pour vérification.

Ce qui suit est le code dans login.php, qui est utilisé pour vérifier si les informations sur le numéro de compte, le mot de passe et le code de vérification saisis par l'utilisateur sont correctes.

<?php
session_start();

$username = $_POST[&#39;username&#39;];
$password = $_POST[&#39;password&#39;];
$code = $_POST[&#39;code&#39;];

// 验证用户输入的验证码是否正确
if (strtolower($code) !== strtolower($_SESSION[&#39;code&#39;])) {
    echo &#39;Invalid Code.&#39;;
    exit;
}

// 验证用户输入的账号和密码是否正确
if ($username === &#39;admin&#39; && $password === &#39;admin&#39;) {
    echo &#39;Login Successfully.&#39;;
} else {
    echo &#39;Invalid Username or Password.&#39;;
}
?>

Dans login.php, nous vérifions d'abord si le code de vérification saisi par l'utilisateur est correct. Si le code de vérification ne correspond pas, l'utilisateur est invité à saisir un code de vérification non valide et à quitter la vérification de connexion. Dans le cas contraire, nous vérifions si les informations de compte et de mot de passe saisies par l'utilisateur sont correctes. Si c'est correct, l'utilisateur sera invité à se connecter avec succès, sinon il sera invité à indiquer que le nom d'utilisateur ou le mot de passe n'est pas valide.

  1. Résumé

Cet article explique comment utiliser les bibliothèques PHP et GD pour générer des codes de vérification mixtes numériques et alphanumériques, et utiliser des codes de vérification dans les sites Web pour garantir la sécurité des informations de connexion des utilisateurs. En étudiant cet article, vous avez appris comment empêcher les utilisateurs malveillants d’utiliser des programmes automatisés pour attaquer votre site Web et protéger le compte et la vie privée des utilisateurs du site Web.

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!

Déclaration:
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