-
-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathform.captcha.txt
92 lines (77 loc) · 3.13 KB
/
form.captcha.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Добавляем CAPTCHA к форме
=========================
В Yii есть специальный виджет [CCaptcha], позволяющий добавить проверочную
картинку-тест на страницу.
Покажем настройку CAPTCHA на примере стандартного блога:
`PostController::actionShow` выводит форму добавления комментария используя модель
`Comment`. Отображение для формы хранится в `_form.php`.
В отображение формы `_form.php` добавляем:
```php
<?if(CCaptcha::checkRequirements() && Yii::app()->user->isGuest):?>
<?=CHtml::activeLabelEx($model, 'verifyCode')?>
<?$this->widget('CCaptcha')?>
<?=CHtml::activeTextField($model, 'verifyCode')?>
<?endif?>
```
Здесь `$model` — модель, которая используется в форме. Авторизованным пользователям
картинку с кодом не показываем.
В модель добавляем:
```php
class Comment extends CActiveRecord {
// результат проверки
public $verifyCode;
function rules(){
return array(
array(
'verifyCode',
'captcha',
// авторизованным пользователям код можно не вводить
'allowEmpty'=>!Yii::app()->user->isGuest || !CCaptcha::checkRequirements(),
),
);
}
function attributeLabels(){
return array(
'verifyCode' => 'Код проверки',
);
}
}
```
В контроллер, который выводит форму, добавляем:
```php
class PostController extends CController {
public function filters() {
return array(
'accessControl',
);
}
public function accessRules() {
return array(
// если используется проверка прав, не забывайте разрешить доступ к
// действию, отвечающему за генерацию изображения
array('allow',
'actions'=>array('captcha'),
'users'=>array('*'),
),
array('deny',
'users'=>array('*'),
),
);
}
public function actions(){
return array(
'captcha'=>array(
'class'=>'CCaptchaAction',
),
);
}
}
```
Стоит изучить
-------------
- [Отличные материалы по CAPTCHA на dbhelp.ru](http://www.dbhelp.ru/category/captcha-lessons/).
- [CCaptcha](http://www.yiiframework.com/doc/api/CCaptcha).
- [CCaptchaAction](http://www.yiiframework.com/doc/api/CCaptchaAction).
---
- `Автор`: Александр Макаров, Sam Dark ([rmcreative.ru](http://rmcreative.ru/)).
- `Обсуждение и комментарии`: [http://yiiframework.ru/forum/viewtopic.php?f=8&t=1496](http://yiiframework.ru/forum/viewtopic.php?f=8&t=1496).