2013-04-23 31 views
-2

當客戶註冊新帳戶,我們必須向他們發送一封確認郵件,我的問題是什麼,我需要發送每個客戶確認郵件附有他們的登錄電子郵件地址和密碼,他們創造了一個,而以前...所以我怎麼才能從我的customer表中從字段password獲得他們的密碼.. ??我只是想呼應,我想這password客戶驗證電子郵件頁面....Opencart的:從客戶表中獲取解密的密碼

<?php echo $password; ?> 

任何想法?謝謝...

回答

1

簡短的回答 - 你不能。閱讀SHA1,MD5,鹽和哈希。谷歌是你的朋友。

See Related Question

你唯一的選擇是刪除加密一起並存儲未加密的,這是不是很安全。

退一步講,如果你在註冊過程中這樣做的確認電子郵件,然後將其存儲在某個變量未加密的口令字符串submiting形式之前,那麼在你的郵件腳本中使用它。密碼在數據庫中仍將被加密

10

說實話,我恨每一個網站,我註冊的是送我包含我的密碼的確認電子郵件!並迅速我很遺憾我沒有,甚至註冊...

所以最好的答案,選項,供您:不發送密碼回用戶 - 他知道他在註冊時輸入的密碼是什麼,甚至如果他輸了他仍然可以將其更改爲另一個無論是使用他的帳戶管理還是「忘記密碼」鏈接。

+0

很久以前,網站必須登錄並安全地認證用戶獨立。現在在許多情況下它不是必需的。研究表明,大多數人離開註冊表單,或者簡單地插入錯誤的數據,使用社交登錄使得更多的人註冊並返回到網站。但在電子商店中,爲了保持這種簡單性,必須提供社交選項並要求用戶在結帳後才能創建密碼。當他們返回到網站時。應僅詢問密碼以更改用戶信息,退出。例如,用戶只能在Facebook阻止其帳戶時使用密碼。 – 2016-01-31 17:37:13

+0

關於使用電子郵件將密碼發回給用戶,我只會說這是對用戶安全的不尊重。 – 2016-01-31 17:41:14

0

默認情況下,打開車用散列在一個方向加密SHA1密碼。簡而言之,這意味着密碼不會被清除。當用戶登錄時,系統再次散列用戶輸入並比較散列。這被稱爲單向加密,相當安全。

解密它的唯一共同的方式(讓我們說,例如黑客)將通過使用存儲所有原始和散列結果的衝突表。爲了讓黑客變得更加困難,OpenCart還使用了Salt(爲每個Salt密鑰創建了新的不同碰撞表),所以它不太可能解密密碼(儘管由於目前已知的容量,SHA-1已不被許多開發人員推薦並且使用SHA-256可能會更好)。

話雖這麼說,我建議你2種選擇:

  1. 更改加密到2次定向加密,如建於 mcrypt_encrypt()/mcrypt_decrypt() PHP的。 OpenCart實際上可以幫助你,看看System/Libaray/encryption.php。您將需要更改目錄/模型/帳戶/ customer.php模型。您還需要更改控制器,使其實際包含$ this-> data ['password'] = $ customer_info ['password'];這將確保您可以在.tpl文件中訪問$密碼。
  2. 由於我以及對通過電子郵件發送的密碼,我建議發送鏈接到的index.php?路徑=帳戶/萬一忘記了忘記了密碼。
1

如果你想使保存的密碼的副本明文您需要:

1)在你的數據庫創建一個新的表(在這個例子表被所謂的氣溫,包含VARCHAR字段郵寄和傳遞)
2)定位登記文件:/catalog/model/account/customer.php
3)定位線與開始:

$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET store_id = '" . 

應該在大約14行
添加新的升它後如下:

$this->db->query("INSERT INTO " . DB_PREFIX . "temp SET mail = '" . $this->db->escape($data['email']) . "', pass = '" . $this->db->escape($data['password']) . "'");