【发布时间】:2016-08-10 06:11:28
【问题描述】:
我正在尝试将验证码添加到登录表单。
我的环境:
- Yii 2
- php 5.4.45 TS
- IIS 10.0
- Windows 10
在login.php、LoginForm.php 和SiteController.php 中我添加了以下内容(仅显示相关部分):
后端\视图\站点\login.php:
use yii\captcha\Captcha;
...
<?= $form->field($model, 'captcha')->widget(Captcha::className()) ?>
...
common\models\LoginForm.php:
...
public $captcha;
...
public function rules()
{
return [
...
[['username', 'password', 'captcha'], 'required'],
['captcha', 'captcha'],
];
}
后端\控制器\SiteController.php:
public function actions()
{
return [
...
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
// 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
];
}
我已经下载并安装了ImageMagick-7.0.2-Q16
如here 所述,我已经下载了 php_imagick-3.4.1-5.4-ts-vc9-x86.zip 并从那里提取 php_imagick.dll。然后在/php/ext/中添加php_imagick.dll
在php.ini 我添加了以下内容:
...
[PHP_IMAGICK]
extension=php_imagick.dll
...
然后重新启动 IIS,但验证码不显示,我在日志中看到以下内容:
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
重启操作系统后:
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
我在某处读到最新版本可在 Windows 10 上运行,但需要安装 Visual C++ 2013 Redistributable Package。我检查了这个包是否已安装。
如何在 Yii-2 应用程序中添加验证码?我尝试了 ImageMagick 和 php_imagick.dll 的不同组合,但没有任何效果。
【问题讨论】:
-
如果您愿意接受替代解决方案,请查看google.com/recaptcha/intro/index.html
-
@AlekseyBykov 你有没有像 Jason 提到的那样实现 recaptcha?如果你有,你能发布答案吗?
-
@AlekseyBykov 感谢您的及时回复。即使我正在研究相同的 github 链接并尝试实施。谢谢。
标签: php yii yii2 captcha imagick