क्या आप AuthComponent का उपयोग कर रहे हैं? ध्यान रखें कि इसमें सभी आने वाले पासवर्ड फ़ील्ड हैं (लेकिन "पासवर्ड पुष्टि नहीं" फ़ील्ड, debug($this->data)
के साथ जांचें), इसलिए फ़ील्ड कभी भी समान नहीं होंगे। चेक करने के लिए Read the manual and use AuthComponent::password
।
कहा करने के बाद कि, यहाँ कुछ मैं का उपयोग करें:
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'.");
}
}
ऐसा निम्न कारणों से खराब है:
- फार्म के लिए तंग युग्मन है, हमेशा के लिए एक क्षेत्र
password_control
उम्मीद उपस्थित रहें। यदि आपके पास आपके डेटा में कोई नहीं है, तो आपको फील्ड श्वेतसूची का उपयोग करने या सत्यापन अक्षम करने की आवश्यकता है, यानी $this->User->save($this->data, true, array('field1', 'field2'))
।
- मैन्युअल रूप से पासवर्ड को एथकंपोनेंट करता है (क्योंकि मॉडल से घटकों तक कोई साफ़ पहुंच नहीं है)। यदि आप AuthComponent में उपयोग किए गए एल्गोरिदम को बदलते हैं, तो आपको इसे यहां भी बदलना होगा।
यह कहकर, यह पारदर्शी रूप से मान्य करता है और नियंत्रक में कोई अतिरिक्त कोड की आवश्यकता के बिना पासवर्ड और पासवर्ड नियंत्रण फ़ील्ड दोनों के लिए उचित त्रुटि संदेश उत्पन्न करता है।
है '$ this-> datadata' इरादा? यदि नहीं, तो आपकी समस्या है। – Stephen
मैंने अतिरिक्त डेटा को निकालने के लिए उपरोक्त कोड को अभी भी तय किया है, मुझे त्रुटि मिलती है – aWebDeveloper
क्या मैं डेटा पोस्ट करने वाले HTML फॉर्म देख सकता हूं? – Stephen