2016-08-10 2 views
0

J'essaie d'ajouter le captcha au formulaire de connexion.Comment ajouter captcha dans l'application Yii-2?

Mon environnement:

  • 2 Yii
  • php 5.4.45 TS
  • IIS 10.0
  • de Windows 10

En login.php, LoginForm.php et je SiteController.php ajouté ce qui suit (montré seulement les parties pertinentes):

back-end \ vues \ Site \ login.php:

use yii\captcha\Captcha; 
... 
<?= $form->field($model, 'captcha')->widget(Captcha::className()) ?> 
... 

modèles communs \ \ LoginForm.php:

... 
public $captcha; 
... 
public function rules() 
{ 
    return [ 
     ... 
     [['username', 'password', 'captcha'], 'required'],   
     ['captcha', 'captcha'], 
    ]; 
} 

back-end contrôleurs \ \ SiteController.php:

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

I avoir téléchargé et installé ImageMagick-7.0.2-Q16

Comme décrit here J'ai téléchargé php_imagick-3.4.1-5.4-ts-vc9-x86.zip et extrait php_imagick.dll à partir de là. On ajoute ensuite php_imagick.dll dans /php/ext/

Dans php.ini j'ajouté ce qui suit:

... 
[PHP_IMAGICK] 
extension=php_imagick.dll 
... 

Ensuite, redémarrez IIS, mais captcha n'apparaît pas et je vois ce qui suit dans les journaux:

2016-08-10 07:28:21 [127.0.0.1][-][h1a65krn8scqc9auk56flmesi6][error][yii\base\InvalidConfigException] exception 'yii\base\InvalidConfigException' with message 'Either GD PHP extension with FreeType support or ImageMagick PHP extension with PNG support is required.' in C:\projects\aisnew\vendor\yiisoft\yii2\captcha\Captcha.php:180 

Après avoir redémarré le système d'exploitation:

2016-08-10 07:01:22 [127.0.0.1][-][h1a65krn8scqc9auk56flmesi6][error][yii\base\ErrorException:32] exception 'yii\base\ErrorException' with message 'PHP Startup: ' in Unknown:0 

J'ai lu quelque part que la version la plus récente fonctionne sous Windows 10 mais nécessite l'installation du paquet redistribuable Visual C++ 2013. J'ai vérifié que ce paquet est installé.

Comment ajouter captcha dans l'application Yii-2? J'ai essayé différentes combinaisons de ImageMagick et php_imagick.dll, mais rien ne fonctionne.

Je serais très reconnaissant pour l'information. Merci à tous.

+1

Si vous êtes ouvert aux solutions alternatives, consultez https://www.google.com/recaptcha/intro/index.html – Jason

+0

Merci beaucoup pour votre commentaire rapide! Oui, je suis ouvert à des solutions alternatives. Je vais l'essayer. –

+0

Fonctionne parfaitement, merci @Jason. J'ai vraiment aimé, je laisse cette solution en production. Aussi laisser cette question ouverte, je veux savoir comment faire cela en utilisant imagic. –

Répondre

2

Je pense que cela devrait fonctionner

<?= $form->field($model, 'captcha')->widget(Captcha::className(), 
      ['template' => '<div class="captcha_img">{image}</div>' 
       . '<a class="refreshcaptcha" href="#">' 
       . Html::img('/images/imageName.png',[]).'</a>' 
       . 'Verification Code{input}', 
      ])->label(FALSE); ?> 

ce que je l'ai fait est, a ajouté un modèle qui contient une image captcha, une image captcha de rafraîchissement (fournir chemin approprié), une étiquette sur le champ et un champ d'entrée pour le texte.

+1

Certaines explications peuvent améliorer la réponse et aider les futurs lecteurs –

+1

Le code est simple. Je viens de fournir un gabarit ayant une image captcha, une image rafraîchir captcha (le chemin de cette image doit être fourni depuis la fin du développeur), une étiquette (Vérification Code) et un champ de saisie pour le texte. –

+0

Ça a l'air bien. Mettez ce commentaire dans votre réponse, je vais l'augmenter –