Я пытаюсь написать базовую страницу регистрации пользователя, и моя проблема заключается в проверке строки длины password
. Я читал о различных проблемах и решениях по этому поводу, но у меня все еще проблемы.
Вот что я написал:
class UsersController extends AppController {
function register () {
if (!empty ($this->data)) {
if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) {
if ($this->User->save($this->data)) {
$this->Session->setFlash('All ok');
$this->redirect(array('action', 'login'));
}
} else {
$this->Session->setFlash('Password mismatch');
$this->redirect(array('action', 'register'));
}
}
}
}
Затем пользовательская модель:
var $validate = array (
'username' => array (
'alphaNumeric' => array(
'rule' => 'alphaNumeric',
'required' => true,
'message' => 'Alphanumeric chars only'
),
'between' => array(
'rule' => array('between', 1, 24),
'message' => 'Username between 1 and 24 chars'
)
),
'password' => array (
'between' => array(
'rule' => array('between', 7, 25),
'message' => 'Password between 8 and 24 chars'
)
)
);
Файл register.ctp
<?php
echo $this->Form->create('User');
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->input('password_confirm', array('type' => 'password'));
echo $this->Form->end('Register account');
?>
Проверка пароля и password_confirm работает отлично, если я пишу разные пароли, я получаю ошибку, если пароли равны, я получаю ошибку длины пароля, где я не прав?
Журнал:
2011-03-29 23:20:41 Error: Array
(
[User] => Array
(
[username] => tonino
[password] => ae4f47749b697085b2f7322383fa7b14c79e06f6
[password_confirm] => passwordtest
)
)
Я забыл сказать, что мой пароль SHA1 hashed
, так как я могу проверить, не ввел ли пользователь слишком длинный пароль?
1 ответ
Пароли автоматически хешируются компонентом AuthComponent. Вся проверка, которую вы выполняете, выполняется для пароля "ae4f47749b697085b2f7322383fa7b14c79e06f6"
, а не "passwordtest"
, поэтому проверка не проходит. Вам нужно выполнить проверку поля password_confirm
, а не поля password
.
См. здесь пример несколько прозрачного решения.
Похожие вопросы
Связанные вопросы
Новые вопросы
cakephp
CakePHP - это веб-среда быстрой разработки с открытым исходным кодом для PHP, предоставляющая расширяемую архитектуру для разработки, обслуживания и развертывания приложений. Он использует общеизвестные шаблоны проектирования, такие как MVC и ORM, в рамках соглашения о конфигурации.