2016-10-19 2 views
1

Ich möchte Captcha Verifikation auf Login-Seite hinzufügen. Aber es gibt einen Fehler, Captcha-Bild wird nicht angezeigt und wenn ich versuche, das Captcha-Bild http://xxx.yii2/site/captcha?v=5806eb0c3aa05 anzuzeigen, unter FehleranzeigeYii2 Captcha-Bild wird nicht angezeigt

Das Bild "http://xxx.yii2/site/captcha?v=5806ce094fa84" kann nicht angezeigt werden, weil es Fehler enthält.

Unten ist mein 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 Controller

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'], 

    ]; 
    } 

Login-Formular Ansicht

<?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(); ?> 

Antwort

1

prüfen diese.

Beachten Sie, dass CaptchaAction entweder eine GD2-Erweiterung oder eine ImageMagick PHP-Erweiterung benötigt.

See: Class yii\captcha\CaptchaAction

Ein weiterer möglicher Grund des Problems ist falsch Aktion angegeben. Um es zu lösen, müssen Sie manuell sowohl im Modell als auch im Widget angeben.

Modell:

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

Widget:

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

Ich habe imagick, Überprüfung sind Sicherheits mit :: checkRequirements(); – kasmawati

+0

Wenn Sie herausfinden, was die bestimmten Fehler sind, wird es viel einfacher sein, das Problem zu verstehen. Sie müssen das Debug-Panel erkunden. Oben links befindet sich ein Auswahlfeld, in dem Sie eine andere Anfrage als die aktuell angezeigte auswählen können. –

+0

Der einzige Fehler, den ich bekomme ist - Fehler beim Laden der angegebenen URL – kasmawati