我安装了一个模块&因为我需要添加一个password_guard(密码类型)字段&我还需要检查密码(另一个字段)& guard_password不应该是相同的。
适用于app / code / community / Unirgy / Dropship / Block / Adminhtml / Vendor / Edit / Tab / Form.php
在函数_prepareForm()中我输入了以下代码: -
$fieldset->addField('password_guard', 'password', array(
'name' => 'password_guard',
'label' => $hlp->__('Guard Password'),
'class' => 'validate-password',
'note' => $hlp->__('Leave empty for no change'),
));
&安培;该领域开始出现&也进入数据库,但现在有2个问题......我面临: - 1)如何检查?那个guard_password&密码不能相同(密码已存储在DB中) 2)guard_password存储在DB中,但它像reset123一样存储...表示没有md5发生
那么我该如何实现这些任务呢?在哪些文件中需要进行编码&如何?
由于 考沙尔
答案 0 :(得分:0)
这些验证将在您正在处理表单提交的控制器操作中。 如果您所谈论的密码是客户密码而不是与之匹配的密码将是代码
$email = 'dependra@example.com';//It will be the customer email, if customer is logged in than you can get from session also
$toBeCheckPasswd = 'admin123';// your password_guard
$customer = Mage::getModel('customer/customer');
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->loadByEmail($email);
$res = $customer->validatePassword($toBeCheckPasswd);
if($res)
echo "matches";
else
echo "do not matche";
如果它不是cutomer密码而不是
$hashedPasswd = "f34c354b4c8ab4fcb88311f1d160a322:fE";//you will get from your table
$res = Mage::helper('core')->validateHash($toBeCheckPasswd, $hashedPasswd);
如果是没有salt的普通md5密码,那么只需
try{
if($md5password==md5($toBeCheckPasswd))
echo "matches";
else
Mage::throwException("Do not match");
}
catch(Excepton $e){
Mage::getSingleton('adminhtml/session')->addError( $e->getMessage());
$this->_redirect('*/*/index');
}
md5加密已经足够了,但Magento通过在加密中添加私钥(salt)更进了一步。 这就是
$password = "12345678";
$salt = "at";
$encyPasswod = md5($salt.$pass).":".$salt;
并使用匹配Mage::helper('core')->validateHash($toBeCheckPasswd, $hashedPasswd);
。