у меня есть некоторая функция для проверки пароля, и сравните ее с проверкой, вот моя функция:
public function required($field= array())
{
foreach($field as $value) {
if (isset($this->_input[$value])) {
if (empty(Security::clean($this->_input[$value]))) {
$messages = "is Required.";
error::inputError($value, $messages);
}
} else{
$messages = "Not Found.";
error::inputError($field, $messages);
}
}
}
public function password($field, $confirmasion){
if (isset($this->_input[$field] , $this->_input[$confirmasion])){
if ($this->_input[$field] != $this->_input[$confirmasion])
{
$messages = "is different with $confirmasion.";
error::inputError($field, $messages);
error::inputError($confirmasion, $messages);
}
}
}
В моем классе $this->_input ссылается на $_POST. а затем у меня есть класс для установки такой ошибки:
public static function inputError($field, $messages)
{
if (is_array($field)) {
foreach ($field as $key){
$newName = General::changeName($key);
$messagesError = "$newName $messages";
if (isset(self::$_errors[$key])){
return;
}else{
self::$_errors[$key] = $messagesError;
}
}
}else{
$newName = General::changeName($field);
$messagesError = "$newName $messages";
if (isset(self::$_errors[$field])){
return;
}else{
self::$_errors[$field] = $messagesError;
}
}
}
я ожидаю, когда, когда я отправляю форму, а мои поля пароля и подтверждения пусты, отображается «Требуется пароль» или «Требуется подтверждение» только без отображения ошибки «Пароль отличается от подтверждения». но когда я только заполняю свой поля пароля показывают «требуется проверка» и вторая ошибка «пароль отличается от проверки», потому что моя проверка все еще пуста. Что-то не так с моей логикой или что?
isset($this->_input['fieldname'])
вернетtrue
. Следовательно, пустое поле verification все равно будет сравнивать его с полем пароля. Вместо этого вы можете попробоватьif (!empty($this->_input[$field]) && !empty($this->_input[$confirmasion]))
в своей функцииpassword
. - person Phil   schedule 23.01.2015