查看: 423|回复: 0

[PHP实例] Yii2下点击验证码的切换实例代码

发表于 2018-2-6 08:00:01

最近需要用到验证码,搜索了很多关于Yii2验证码的切换的介绍,下面我来记录一下,有需要了解Yii2下验证码的切换的朋友可参考。希望此文章对各位有所帮助。

模型代码如下:

  1. <?php
  2. namespace app\admin\models;
  3. use yii;
  4. use yii\base\model;
  5. use yii\captcha\Captcha;
  6. class LoginForm extends Model{
  7. public $verifyCode;
  8. public $password;
  9. public $username;
  10. public function rules(){
  11. return [
  12. ['verifyCode','captcha','captchaAction'=>'/admin/login/captcha','message'=>'{attribute}'],
  13. [['password','username'],'required'],
  14. ];
  15. }
  16. }
复制代码

控制器代码如下:

  1. <?php
  2. namespace app\admin\controllers;
  3. use Yii;
  4. use yii\web\Controller;
  5. use app\admin\models\LoginForm;
  6. use yii\filters\AccessControl;
  7. use yii\filters\VerbFilter;
  8. use yii\captcha\CaptchaAction;
  9. class LoginController extends Controller{
  10. public function actions(){
  11. return [
  12. 'captcha'=>'yii\captcha\CaptchaAction',
  13. 'maxLength'=>4,
  14. 'minLength'=>3,
  15. 'width'=>10,
  16. 'height'=>10
  17. ];
  18. }
  19. public function actionIndex(){
  20. $log = new LoginForm();
  21. return $this->renderPartial("index",['model'=>$log]);
  22. }
  23. //授权规则
复制代码

视图代码如下:

  1. <?php
  2. use yii\helpers\Html;
  3. use yii\bootstrap\Nav;
  4. use yii\bootstrap\NavBar;
  5. use yii\widgets\Breadcrumbs;
  6. use app\assets\AppAsset;
  7. use yii\widgets\ActiveFiel;
  8. use yii\widgets\ActiveForm;
  9. use yii\captcha\Captcha;
  10. use app\components\HelloWidget;
  11. //url 创建
  12. use yii\helpers\Url;
  13. AppAsset::register($this);
  14. ?>
  15. <?php $this->beginPage()?>
  16. <!DOCTYPE html>
  17. <html>
  18. <head>
  19. <title>博客后台管理系统</title>
  20. <meta charset="utf-8">
  21. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  22. <?=Html::cssFile('@web/css/bootstrap.min.css')?>
  23. <?=Html::cssFile('@web/css/style.css')?>
  24. <?=Html::jsFile("@web/js/jquery-1.11.3.min.js");?>
  25. <?=Html::jsFile("@web/js/bootstrap.min.js");?>
  26. <?php ?>
  27. </head>
  28. <?php $this->beginBody()?>
  29. <body>
  30. <div class="login-box">
  31. <div class="login">
  32. <div class="login-icon">
  33. </div>
  34. <h4 class="login-title">博客后台管理系统</h4>
  35. <?php $form=ActiveForm::begin(['method'=>'post','action'=> \Yii::$app->urlManager->createUrl('/admin/login/index')])?>
  36. <div class="login-input-box mb10">
  37. <input type="text" class="form-control" name="username" placeholder="用户名">
  38. </div>
  39. <div class="login-input-box mb10">
  40. <input class="form-control" type="password" name="password" placeholder="密码">
  41. </div>
  42. <div class="login-input-box mb30">
  43. <input class="form-control" type="text" name="code" placeholder="验证码">
  44. <span class="login-code">
  45. <img id="code_img" src="<?= Url::toRoute('/admin/login/captcha')?>" title="点击刷新验证码" onClick="get_code(this);">
  46. </span>
  47. </div>
  48. <input class="inputbtn bg-success btn-block" type="submit" value="登 录">
  49. <?php ActiveForm::end();?>
  50. </div>
  51. </div>
  52. <script type="text/javascript">
  53. //刷新验证码
  54. function get_code(obj)
  55. {
  56. if(!obj)
  57. {
  58. obj = document.getElementById('code_img');
  59. }
  60. obj.src = obj.src + "&t="+Date.parse(new Date());
  61. }
  62. </script>
  63. </body>
  64. <?php $this->beginBody()?>
  65. </html>
  66. <?php $this->endPage()?>
复制代码

这里整个代码差不多了但是要设置一样更重要的 app/vendor/yiisoft/yii2/captcha/的文件下的CaptchaAction.php这文件中修改getVerifyCode($regenerate = false) 的方法$regenerate参数为true (getVerifyCode($regenerate = true))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。

您可能感兴趣的文章:

  • yii2中添加验证码的实现方法
  • Yii2增加验证码步骤详解
  • Yii2简单实现给表单添加验证码的方法
  • Yii2 如何在modules中添加验证码的方法
  • Yii 2.0自带的验证码使用经验分享


回复

使用道具 举报