aivanouski / yii2-invisible-recaptcha
适用于Yii2的Google不可见reCaptcha
0.3
2017-08-10 14:25 UTC
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-20 20:36:36 UTC
README
基于reCaptcha API 2.0。
安装
安装此扩展的首选方式是通过composer。
- 运行以下命令之一
php composer.phar require --prefer-dist "aivanouski/yii2-invisible-recaptcha" "*"
或者
"aivanouski/yii2-invisible-recaptcha" : "*"
将其添加到应用程序的composer.json文件的require部分。
- 注册reCAPTCHA API密钥。
- 将以下组件添加到您的配置文件(web.php)中
'components' => [
'captcha' => [
'name' => 'captcha',
'class' => 'szaboolcs\InvisibleRecaptcha',
'siteKey' => 'your siteKey',
'secret' => 'your secret'
]
]
用法
login.php
<?php
use szaboolcs\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 szaboolcs\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(InvisibleRecaptchaValidatior::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;
}
}