2016-10-19 3 views
1

Я хочу добавить Captcha-проверку на страницу входа. Но есть ошибка, изображение captcha не отображается, и когда я пытаюсь просмотреть изображение captcha http://xxx.yii2/site/captcha?v=5806eb0c3aa05, ниже отображается ошибкаYii2 captcha image не отображается

Изображение «http://xxx.yii2/site/captcha?v=5806ce094fa84» не может быть отображено, так как оно содержит ошибки.

Ниже мой SiteController

class SiteController extends Controller { 
    public function behaviors() 
    { 
    return [ 
     'access' => [ 
      'class' => AccessControl::className(), 
      'only' => ['logout','resetPassword'], 
      'rules' => [ 
       [ 
        'actions' => ['logout','resetpassword'], 
        'allow' => true, 
        'roles' => ['@'], 
       ], 
      ], 
     ], 
     'verbs' => [ 
      'class' => VerbFilter::className(), 
      'actions' => [ 
       'logout' => ['post'], 
      ], 
     ], 
    ]; 
} 

public function actions() 
{ 
    return [ 
     'error' => [ 
      'class' => 'yii\web\ErrorAction', 
     ], 
     'captcha' => [ 
      'class' => 'yii\captcha\CaptchaAction', 
      'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null, 
     ], 
    ]; 
} 

LoginForm контроллер

class LoginForm extends Model { 
    public $username; 
    public $password; 
    public $rememberMe = true; 
    public $verifyCode; 

    private $_user = false; 

    const ERROR_NONE=0; 
    const ERROR_USERNAME_INVALID=1; 
    const ERROR_USERNAME_LOCKED = 3; 
    const ERROR_USERNAME_INACTIVE = 4; 
    const ERROR_PASSWORD_INVALID=2; 

    public $role_id; 
    public $salt; 
    public $_id; 
    private $_identity; 

    /** 
    * @return array the validation rules. 
    */ 
    public function rules() 
    { 
    return [ 

     [['username', 'password'], 'required'], 
     ['rememberMe', 'boolean'], 
     ['username','validateMember'], 
     ['password', 'validatePassword'], 
     ['verifyCode', 'captcha'], 

    ]; 
    } 

Войти Форма вид

<?php $form = ActiveForm::begin([ 
    'id' => 'login-form', 
    'options' => ['class' => 'form-horizontal'], 
    'fieldConfig' => [ 
     'template' => "{label}\n<div class=\"col-lg-3\">{input}</div>\n<div class=\"col-lg-8\">{error}</div>", 
     'labelOptions' => ['class' => 'col-lg-1 control-label'], 
    ], 
]); ?> 

    <?= $form->field($model, 'username') ?> 

    <?= $form->field($model, 'password')->passwordInput() ?> 

    <?= $form->field($model, 'verifyCode')->widget(Captcha::className()) ?> 

    <?= $form->field($model, 'rememberMe')->checkbox([ 
     'template' => "<div class=\"col-lg-offset-1 col-lg-3\">{input} {label}</div>\n<div class=\"col-lg-8\">{error}</div>", 
    ]) ?> 

    <div class="form-group"> 
     <div class="col-lg-offset-1 col-lg-11"> 
      <?= Html::submitButton('<i class="fa fa-sign-in fa-fw"></i> Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> 
     </div> 
    </div> 

<?php ActiveForm::end(); ?> 

ответ

1

Проверьте это.

Обратите внимание, что CaptchaAction требует расширения GD2 или расширения ImageMagick PHP.

См: Class yii\captcha\CaptchaAction

Другая возможная причина проблемы указывается неправильное действие. Чтобы решить эту проблему, вам нужно указать, как вручную, так и в модели и виджетах.

Модель:

['verifyCode', 'captcha', 'captchaAction' => 'site/captcha'] 

Widget:

<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [ 
    'captchaAction' => 'site/captcha' 
]) ?> 
+0

У меня есть Imagick, проверка с помощью Captcha :: checkRequirements(); – kasmawati

+0

Если вы узнаете, каковы конкретные ошибки, это будет намного легче понять проблему. Вам нужно изучить панель отладки. В верхнем левом углу есть селектор, в котором вы можете выбрать другой запрос, чем в настоящее время. –

+0

Единственная ошибка, которую я получаю - Не удалось загрузить указанный URL-адрес – kasmawati

Смежные вопросы