Bạn đang sử dụng AuthComponent? Lưu ý rằng nó băm tất cả các trường mật khẩu đến (nhưng không phải là các trường "xác nhận mật khẩu", hãy kiểm tra với debug($this->data)
), vì vậy các trường sẽ không bao giờ giống nhau. Read the manual and use AuthComponent::password
để thực hiện kiểm tra.
Có nói rằng, đây là một cái gì đó tôi sử dụng:
public $validate = array(
'password' => array(
'confirm' => array(
'rule' => array('password', 'password_control', 'confirm'),
'message' => 'Repeat password',
'last' => true
),
'length' => array(
'rule' => array('password', 'password_control', 'length'),
'message' => 'At least 6 characters'
)
),
'password_control' => array(
'notempty' => array(
'rule' => array('notEmpty'),
'allowEmpty' => false,
'message' => 'Repeat password'
)
)
);
public function password($data, $controlField, $test) {
if (!isset($this->data[$this->alias][$controlField])) {
trigger_error('Password control field not set.');
return false;
}
$field = key($data);
$password = current($data);
$controlPassword = $this->data[$this->alias][$controlField];
switch ($test) {
case 'confirm' :
if ($password !== Security::hash($controlPassword, null, true)) {
$this->invalidate($controlField, 'Repeat password');
return false;
}
return true;
case 'length' :
return strlen($controlPassword) >= 6;
default :
trigger_error("Unknown password test '$test'.");
}
}
này là xấu vì những lý do sau đây:
- Có khớp nối chặt chẽ với các hình thức, luôn luôn hy vọng một lĩnh vực
password_control
để có mặt. Bạn cần sử dụng danh sách trắng trường hoặc vô hiệu xác thực nếu bạn không có dữ liệu trong dữ liệu của mình, ví dụ: $this->User->save($this->data, true, array('field1', 'field2'))
.
- Nhập mật khẩu theo cách thủ công của AuthComponent theo cách thủ công (vì không có quyền truy cập sạch vào các thành phần từ mô hình). Nếu bạn thay đổi thuật toán được sử dụng trong AuthComponent, bạn cũng cần thay đổi nó ở đây.
Có nói rằng, minh bạch xác nhận và tạo thông báo lỗi thích hợp cho cả trường mật khẩu và mật khẩu kiểm soát mà không yêu cầu bất kỳ mã bổ sung nào trong bộ điều khiển.
là '$ this-> datadata' dự định? Nếu không, có vấn đề của bạn. – Stephen
tôi đã sửa mã trên để xóa dữ liệu thừa mà tôi vẫn gặp lỗi – aWebDeveloper
Tôi có thể xem biểu mẫu html đăng dữ liệu không? – Stephen