Maison >développement back-end >Problème PHP >Comment utiliser PHP pour implémenter la fonction de code de vérification de connexion utilisateur
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.
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.
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('Content-type: image/png'); // 设置 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['code'] = $code; // 把验证码存储在 Session 中,以便在其他页面中使用 $textColor = imagecolorallocate($im, 0, 0, 0); // 设置验证码颜色 imagestring($im, 5, 20, 12, $code, $textColor); // 绘制验证码 imagepng($im); // 输出 PNG 图片 imagedestroy($im); // 释放内存 ?>
Analyse :
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('Content-type: image/png'); // 设置 Content-type $im = imagecreatetruecolor(100, 40); // 创建一个宽为100,高为40的验证码背景图 $bgColor = imagecolorallocate($im, 255, 255, 255); // 设置背景色为白色 imagefill($im, 0, 0, $bgColor); // 绘制背景 // 字母数字集 $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $len = strlen($chars); $code = ''; for ($i = 0; $i < 4; $i++) { $code .= $chars[rand(0, $len-1)]; } $_SESSION['code'] = $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__.'/font'.$font.'.ttf', $char); } imagepng($im); // 输出 PNG 图片 imagedestroy($im); // 释放内存 ?>
Analyse :
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['username']; $password = $_POST['password']; $code = $_POST['code']; // 验证用户输入的验证码是否正确 if (strtolower($code) !== strtolower($_SESSION['code'])) { echo 'Invalid Code.'; exit; } // 验证用户输入的账号和密码是否正确 if ($username === 'admin' && $password === 'admin') { echo 'Login Successfully.'; } else { echo 'Invalid Username or Password.'; } ?>
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.
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!