Laravel5.2 utilise Captcha pour générer des codes de vérification afin d'implémenter la connexion

不言
Libérer: 2023-03-31 22:06:02
original
1793 Les gens l'ont consulté

Cet article présente principalement Laravel5.2 pour utiliser Captcha pour générer des codes de vérification (session pit). Les amis qui en ont besoin peuvent s'y référer

Récemment, un ami m'a demandé de l'aider à se connecter au code de vérification Laravel, alors j'ai fait une petite recherche. (J'ai presque oublié comment utiliser Laravel)

Tout d'abord, il n'est pas nécessaire d'entrer dans les détails de l'installation de Laravel. Ma version est la 5.2.45 (remarque : le middleware pour Laravel 5.2.6 et supérieur peut l'être. chargé automatiquement), cela reste assez important.

Une fois l'installation terminée, vous devez utiliser composer pour charger votre Captcha. La méthode spécifique consiste à ajouter la ligne "gregwar/captcha": "1.*" au tableau require dans votre composer.json. . Ensuite, utilisez cmd dans le répertoire racine de votre projet pour exécuter la ligne de code de mise à jour du composer. Dans ce cas, même si la bibliothèque ou le middleware est installé. Ensuite, vous pouvez écrire votre code librement.

php : (Je n'entrerai pas trop dans les détails sur le routage spécifique ci-dessous, écrivez simplement le code clé)

public function captcha($tmp)
{  //生成验证码图片的Builder对象,配置相应属性
  $builder = new CaptchaBuilder;
  //可以设置图片宽高及字体
  $builder->build($width = 100, $height = 40, $font = null);
  //获取验证码的内容
  $phrase = $builder->getPhrase();
  //把内容存入session
  Session::flash('milkcaptcha', $phrase);
  //生成图片
  header("Cache-Control: no-cache, must-revalidate");
  header('Content-Type: image/jpeg');
  $builder->output();
}
Copier après la connexion

Appel du modèle de lame :

<img src="{{url(&#39;/captcha/1&#39;)}}" alt="" onclick="this.src=&#39;{{url(&#39;/captcha&#39;)}}/&#39;+Math.random()" width="100" height="40" border="0">
Copier après la connexion

Si vous pensez que c'est la fin, alors vous êtes vraiment trop yang trop simple. Lorsque vous vérifierez, vous constaterez que tout ne va pas.

N'est-ce pas si aigre et rafraîchissant ? Parce que dans laravel5.2, toutes les sessions ne peuvent pas traverser les contrôleurs et les méthodes si elles se croisent, la session sera régénérée. Par défaut, la session doit être passée via un middleware. Ne vous inquiétez pas, la méthode suivante est la solution. Actuellement, je connais deux solutions. La première consiste à créer vous-même un middleware et à y stocker toutes les sessions, mais c'est un peu gênant. Ensuite, je vais présenter une méthode simple, dans votre laravelappHttpKernel.php. Ajoutez le code suivant à $middleware. dans le fichier :

\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Cookie\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
Copier après la connexion

Vous pourrez alors utiliser la séance en toute confiance. C'est ainsi que vous pouvez vérifier le code de vérification ci-dessous,

public function login_data()
{
  $userInput = \Request::get(&#39;captcha&#39;);
  if (Session::get(&#39;milkcaptcha&#39;) == $userInput) {
    //用户输入验证码正确,验证你自己密码用户名
    echo 1;
  } else {
    //用户输入验证码错误
    echo 2;
  }
}
Copier après la connexion

Enfin, je dois me plaindre de la documentation officielle de Laravel. De tels pièges ne sont pas expliqués à l'avance. C'est probablement parce que les développeurs craignent que le développement soit trop fluide.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

À propos de l'utilisation du package de traitement de date et d'heure Carbon dans Laravel

À propos de la migration artisanale de PHP sous laravel 5.1 Comment utiliser

Comment résoudre le problème selon lequel le journal ne peut pas être écrit dans Laravel

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal