pctux / yii2-invisible-recaptcha
适用于 Yii2 的 Google 无形 reCaptcha
0.2.1
2018-03-14 21:29 UTC
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-29 02:23:56 UTC
README
基于 reCaptcha API 2.0。是 szaboolcs/yii2-invisible-recaptcha 的分支。
安装
推荐通过 composer 安装此扩展。
- 运行以下命令:
php composer.phar require --prefer-dist "pctux/yii2-invisible-recaptcha" "*"
或者
"pctux/yii2-invisible-recaptcha" : "*"
添加到您的应用 composer.json 文件的 require 部分中。
- 注册 reCAPTCHA API 密钥。
- 将以下组件添加到您的配置文件(web.php)中
'components' => [
'captcha' => [
'name' => 'captcha',
'class' => 'pctux\recaptcha\InvisibleRecaptcha',
'siteKey' => 'your siteKey',
'secret' => 'your secret'
]
]
用法
login.php
<?php
use pctux\recaptcha\InvisibleRecaptcha;
use yii\widgets\ActiveForm;
$form = ActiveForm::begin([
'id' => 'login-form'
]);
echo $form->field($model, 'username');
echo $form->field($model, 'password');
echo InvisibleRecaptcha::widget([
'name' => 'Submit',
'formSelector' => '#login-form'
]);
ActiveForm::end();
LoginController.php
<?php
namespace app\controllers;
use pctux\recaptcha\InvisibleRecaptchaValidator;
use app\models\Login;
use Yii;
class LoginController
{
public function actionLoginForm()
{
$model = new Login();
return $this->render('login', [
'model' => $model
]);
}
public function actionLogin()
{
$model = new Login();
$model->load(Yii::$app->request->post());
if ($model->validate() && InvisibleRecaptchaValidator::validate(Yii::$app->request->post(InvisibleRecaptchaValidator::POST_ELEMENT)) && Yii::$app->user->login($model->getUser())) {
return $this->goHome();
}
return $this->render('login', [
'model' => $model
]);
}
}
Login.php
<?php
use yii\base\Model;
use app\models\User;
class Login extends Model
{
public $username;
public $password;
private $_user;
public function rules()
{
// ...
}
public function getUser()
{
if (!$this->_user) {
$this->_user = User::find()->byUsername($this->username)->one();
}
return $this->_user;
}
}