簡體   English   中英

在Magento中更改客戶登錄密碼

[英]Change Customer Login Password in Magento

我想在Magento更改客戶的登錄密碼,我使用以下代碼更新密碼但它對我不起作用

 $customerid = 46;
 $oldpassword = 12345678;
 $newpassword = 87654321;
 $customer = Mage::getModel('customer/customer')->load($customerid);
 $passwordhash = $customer['password_hash'];
 $phasharray = explode(":",$passwordhash);
 $passpostfix = $phasharray[1];
 $completeOldPassword =  $oldpassword.":".$passpostfix;
 if($completeOldPassword==$passwordhash){
    $customer->setPassword($newpassword);
    $customer->save();
 }

使用下面的代碼更新用戶的密碼,需要用戶名和storeid附加變量進行更新。 : -

$validate = 0; $result = '';
$customerid = 46;
$username = 'YOUR_USERNAME';
$oldpassword = 12345678;
$newpassword = 87654321;
$storeid = 'YOUR_STORE_ID';

$websiteId = Mage::getModel('core/store')->load($storeid)->getWebsiteId();
try {
     $login_customer_result = Mage::getModel('customer/customer')->setWebsiteId($websiteId)->authenticate($username, $oldpassword);
     $validate = 1;
}
catch(Exception $ex) {
     $validate = 0;
}
if($validate == 1) {
     try {
          $customer = Mage::getModel('customer/customer')->load($customerid);
          $customer->setPassword($newpassword);
          $customer->save();
          $result = 'Your Password has been Changed Successfully';
     }
     catch(Exception $ex) {
          $result = 'Error : '.$ex->getMessage();
     }
}
else {
     $result = 'Incorrect Old Password.';
}
echo $result;

如果你回顯$ completeOldPassword和$ passwordhash,你會發現它們無法匹配,因為你的$ oldpassword應該是一個帶鹽的密碼哈希。 現在它只是明文

如果您只想更改密碼而不檢查舊密碼,請嘗試此操作

$customerid = 46;
$newpassword = 87654321;
$customer = Mage::getModel('customer/customer')->load($customerid);
$customer->setPassword($newpassword);
$customer->save();

唯一的解決方案是使用忘記密碼並使用電子郵件帳戶重置密碼.Magento在密碼中添加安全鹽哈希值,您無法像您所做的那樣更改密碼。

允許更改customer.update API請求的密碼

使用password_hash作為發送請求的屬性名稱,並在$ MAGENTO_ROOT / app / code / core / Mage / Customer / Model / Customer / Api.php的更新功能中添加

if(strlen($ customerData [“password_hash”])> 5){

$客戶 - > setPassword($ customerData [ “password_hash”]);

}

在$ customer-> save()之前;

忘記http://www.magentocommerce.com/api/soap/customer/customer.update.html中提到的密碼屬性

只有password_hash是客戶實體的有效屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM