Maison  >  Article  >  développement back-end  >  Comment implémenter le code de vérification de connexion en php

Comment implémenter le code de vérification de connexion en php

藏色散人
藏色散人original
2020-09-28 09:09:024246parcourir

Comment implémenter le code de vérification de connexion en PHP : générez d'abord un code de vérification aléatoire de 4 à 6 chiffres ; puis enregistrez chaque caractère généré dans la session ou la base de données puis envoyez enfin le code de vérification sur le téléphone mobile de l'utilisateur ; Comparez-le simplement avec le code de vérification saisi pour vérification.

Comment implémenter le code de vérification de connexion en php

Recommandé : "Tutoriel vidéo PHP"

PHP implémente un mécanisme de fonction de code de vérification simple

La sécurité des sites Web est un problème que les développeurs ne peuvent ignorer. Actuellement, l'une des méthodes les plus couramment utilisées pour améliorer la sécurité des sites Web consiste à utiliser le mécanisme de fonction de code de vérification. Certains n'utilisent que quelques chiffres et lettres pour confondre. codes de vérification, certains utilisent des téléphones portables pour envoyer des messages texte à des fins de vérification et certains utilisent des adresses e-mail pour la vérification. Mais comment ce mécanisme de fonction de code de vérification est-il mis en œuvre ? Ce qui suit est une explication détaillée des idées de mise en œuvre et des méthodes de mise en œuvre simples du mécanisme de fonction du code de vérification.

1. Idées d'implémentation du mécanisme de fonction du code de vérification

① Implémentation du code de vérification conventionnel :

a Générer une image png

b. couleur de l'image

c, définissez la couleur et le style de la police

d, générez un code de vérification aléatoire à 4 chiffres

e, ajustez et faites pivoter chaque caractère généré Dessinez le angle et position sur l'image png

f, ajoutez des lignes de bruit et d'interférence pour empêcher la machine d'enregistrement d'analyser l'image originale pour un enregistrement malveillant

g, afficher l'image

h, libérez l'image Mémoire occupée

i. Enregistrez le code de vérification dans la session ou la base de données

j Comparez-le avec le code de vérification saisi

② SMS (e-mail) Mécanisme de code de vérification :

a. Générez un code de vérification aléatoire de 4 à 6 chiffres

b Enregistrez chaque caractère généré dans la session ou la base de données

c. envoyé sur le téléphone mobile de l'utilisateur (e-mail)

d. L'utilisateur le saisit dans le délai imparti

e Le code de vérification est retiré de la session ou de la base de données

f. Comparez et vérifiez avec le code de vérification saisi

2 Mécanisme simple pour implémenter la fonction de code de vérification

① Créez un nouveau captcha.php et écrivez le code suivant

<?php
/**
 * =======================================
 * Created by WeiBang Technology.
 * User: Wei ZhiHua
 * Date: 2016/10/12 0020
 * Time: 下午 4:14
 * Power: 实现验证码功能
 * =======================================
 */
 
//开启session
session_start();
//创建一个大小为 100*30 的验证码
$image = imagecreatetruecolor(100, 30);
$bgcolor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgcolor);
 
$captch_code = &#39;&#39;;
for ($i = 0; $i < 4; $i++) {
    $fontsize = 6;
    $fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));
    $data = &#39;abcdefghijkmnpqrstuvwxy3456789&#39;;
    $fontcontent = substr($data, rand(0, strlen($data) - 1), 1);
    $captch_code .= $fontcontent;
    $x = ($i * 100 / 4) + rand(5, 10);
    $y = rand(5, 10);
    imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
//就生成的验证码保存到session
$_SESSION[&#39;authcode&#39;] = $captch_code;
 
//在图片上增加点干扰元素
for ($i = 0; $i < 200; $i++) {
    $pointcolor = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200));
    imagesetpixel($image, rand(1, 99), rand(1, 29), $pointcolor);
}
 
//在图片上增加线干扰元素
for ($i = 0; $i < 3; $i++) {
    $linecolor = imagecolorallocate($image, rand(80, 220), rand(80, 220), rand(80, 220));
    imageline($image, rand(1, 99), rand(1, 29), rand(1, 99), rand(1, 29), $linecolor);
}
//设置头
header(&#39;content-type:image/png&#39;);
imagepng($image);
imagedestroy($image);
 
?>
② Créez un nouveau formulaire .php, écrivez le code suivant

<?php
/**
 * =======================================
 * Created by WeiBang Technology.
 * User: Wei ZhiHua
 * Date: 2016/10/12 0021
 * Time: 下午 4:14
 * Power: 实现验证码功能
 * =======================================
 */
 
if (isset($_REQUEST[&#39;authcode&#39;])) {
    session_start();
    if (strtolower($_REQUEST[&#39;authcode&#39;]) == $_SESSION[&#39;authcode&#39;]) {
        echo "输入正确!";
    } else {
        echo "输入错误!";
    }
    exit();
}
?>
 
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    <title>确认验证码</title>
</head>
<body>
<form method="post" action="./form.php">
    <p>验证码图片:
        <img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand(); ?>" width=100 height=30>
        <a href="javascript:void(0)"
           onClick="document.getElementById(&#39;captcha_img&#39;).src=&#39;./captcha.php?r=&#39;+Math.random()">换一个?</a>
    </p>
    <p>请输入图片中的内容:<input type="text" name="authcode" value=""/></p>
    <p><input type="submit" value="提交" style="padding:6px 20px;"></p>
</form>
</body>
</html>

Ce qui précède est l'idée de production et la méthode d'implémentation du code de vérification PHP, du simple au complexe, vous pouvez écrire un mécanisme de fonction de code de vérification parfait basé sur ces.

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