私はキャプチャにそのコードを使用しています:https ://github.com/solutudo/cakephp-captcha
user_controller.php
これがログインアクションの私のコードです:
public function login() {
if (!empty($this->data)
&& !empty($this->Auth->data['User']['username'])
&& !empty($this->Auth->data['User']['password'])) {
// captcha code
if ($this->RequestHandler->isPost()) {
$this->User->setCaptcha($this->Captcha->getCode());
$this->User->set($this->data);
if ($this->User->validates()) {
// captcha code
$user = $this->User->find('first', array(
'conditions' => array(
'User.email' => $this->Auth->data['User']['username'],
'User.password' => $this->Auth->data['User']['password']),
'recursive' => -1
));
if (!empty($user) && $this->Auth->login($user)) {
if ($this->Auth->autoRedirect) {
$this->redirect($this->Auth->redirect());
}
} else {
$this->Session->setFlash($this->Auth->loginError, $this->Auth->flashElement, array(), 'auth');
}
}
}
}
}
user.ctpを表示する
<?php
echo $this->Form->create(array('action'=>'login'));
echo $this->Form->input('username');
echo $this->Form->input('password');
// captcha code
echo $this->Html->image('captcha.jpg', array('style' => 'padding: 0.5%;'));
echo $this->Form->input('captcha');
// captcha code
echo $this->Form->end('Login');
?>
モデルUser.php
<?php
class User extends AppModel {
public $actsAs = array(
'Captcha' => array(
'field' => 'captcha',
'error' => 'Captcha code entered invalid'
)
);
}
?>
キャプチャコードの検証とキャプチャが機能していません。キャプチャを入力せずにログインできます。同じコントローラーのadd関数で同じコードを使用しましたがuser_controller.php
、そのときはキャプチャコードが機能していました。
正しいキャプチャを入力した後、ユーザーにログインしてもらいたい。