Dans les systèmes d'authentification de connexion tels que la connexion à un site Web ou à une application, l'enregistrement et la récupération de mot de passe, la fonction de code de vérification est devenue une méthode courante de vérification des utilisateurs. La fonction de code de vérification peut prévenir efficacement les attaques malveillantes et les attaques de robots, et protéger les données des utilisateurs et la sécurité du système. Cet article expliquera comment utiliser le framework ThinkPHP6 pour implémenter la fonction de code de vérification.
1. Introduction à la fonction de code de vérification ThinkPHP6
La fonction de code de vérification dans le framework ThinkPHP6 peut être implémentée en utilisant la classe thinkcaptchaCaptcha. Cette classe offre de nombreuses options pour définir la longueur, la police, la taille de la police, le type de ligne d'interférence, le type de point d'interférence, etc. du code de vérification. Ces options nous permettent de personnaliser nos propres codes de vérification pour répondre aux besoins de scénarios commerciaux spécifiques.
2. Étapes de mise en œuvre
Après avoir configuré l'environnement PHP dans l'environnement local, vous pouvez utiliser composer pour installer le framework ThinkPHP6. Entrez la commande suivante sur la ligne de commande :
composer create-project topthink/think myproject
Cela créera un répertoire de projet appelé monprojet et installera et initialisera automatiquement toutes les dépendances requises pour le projet.
Dans le framework ThinkPHP6, nous pouvons définir la méthode du code de vérification dans le contrôleur. Par exemple, nous pouvons créer une méthode de vérification dans le contrôleur Index. Cette méthode peut accepter un paramètre pour spécifier la longueur du code de vérification. Le code est le suivant :
namespace appindexcontroller; use thinkcaptchaCaptcha; class Index { public function verify($length = 4) { $captcha = new Captcha([ 'length' => $length, 'useNoise' => true, 'fontSize' => 30, 'useCurve' => false, ]); return $captcha->entry(); } }
Dans le code ci-dessus, nous utilisons la classe Captcha pour générer le code de vérification. Nous transmettons certains paramètres pour spécifier la longueur du code de vérification, s'il faut utiliser des lignes d'interférence ou des points d'interférence, etc.
Dans le code du contrôleur ci-dessus, nous utilisons la méthode $captcha->entry()
pour afficher le code de vérification. Cette méthode générera une image et affichera l’image directement sur le navigateur. $captcha->entry()
方法来显示验证码。这个方法将会生成一张图片,并在浏览器上直接输出图片。
我们可以在模板或视图文件中创建一个img元素,将它的src属性设置为我们在步骤2中创建的验证码方法的URL,即可在前端页面上显示验证码了。代码如下:
<img src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" />
在上面的代码中,我们使用url函数生成验证码图片的URL,并将长度设定为4,在点击图片时重新加载验证码图片,以更新验证码。
我们可以在提交表单数据时,使用PHP的session机制来获取用户输入的验证码,然后与生成的验证码进行比较来校验验证码是否正确。代码如下:
namespace appindexcontroller; use thinkcaptchaCaptcha; class Index { public function verify($length = 4) { $captcha = new Captcha([ 'length' => $length, 'useNoise' => true, 'fontSize' => 30, 'useCurve' => false, ]); return $captcha->entry(); } public function check() { $code = input('post.captcha'); if(captcha_check($code)){ // 验证码正确 }else{ // 验证码错误 } } }
在上面的代码中,我们定义了一个check方法,用于校验用户输入的验证码。我们使用captcha_check()
<img id="captcha" src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" /> <button onclick="document.getElementById('captcha').src='{:url('index/verify', ['length'=>4])}?' + Math.random(); return false;">刷新验证码</button>
Nous pouvons utiliser le mécanisme de session de PHP pour obtenir le code de vérification saisi par l'utilisateur lors de la soumission des données du formulaire, puis le comparer avec le code de vérification généré pour vérifier que la vérification est le code est correct ? Le code est le suivant :
namespace appindexcontroller; use thinkcaptchaCaptcha; class Index { // 验证码函数 public function verify($length = 4) { $captcha = new Captcha([ 'length' => $length, 'useNoise' => true, 'fontSize' => 30, 'useCurve' => false, ]); return $captcha->entry(); } // 验证码校验函数 public function check() { $code = input('post.captcha'); if(captcha_check($code)){ // 验证码正确 }else{ // 验证码错误 } } }
Dans le code ci-dessus, nous définissons une méthode de vérification pour vérifier le code de vérification saisi par l'utilisateur. Nous utilisons la fonction captcha_check()
pour comparer si le code de vérification saisi par l'utilisateur et le code de vérification généré sont égaux.
Parfois, nous devons fournir la fonction d'actualisation du code de vérification lorsque l'utilisateur saisit le code de vérification de manière incorrecte, afin que l'utilisateur puisse réussir la vérification plus rapidement. Nous pouvons réaliser cette fonction en actualisant simplement la page, ou en modifiant l'URL de l'image du code de vérification.
Sur la page frontale, ajoutez un bouton d'actualisation à l'élément de l'image du code de vérification. Cliquez sur ce bouton pour recharger l'image du code de vérification afin de mettre à jour le code de vérification. Le code est le suivant :
<!-- 登录表单页面 --> <form method="post" action="{:url('index/check')}"> <div> <label>用户名</label> <input type="text" name="username" /> </div> <div> <label>密码</label> <input type="password" name="password" /> </div> <div> <label>验证码</label> <img id="captcha" src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" /><br/> <input type="text" name="captcha" /> <a href="#" onclick="document.getElementById('captcha').src='{:url('index/verify', ['length'=>4])}?' + Math.random(); return false;">刷新验证码</a> </div> <button type="submit">登录</button> </form>
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!