当客户注册新帐户时,我们必须向他们发送确认电子邮件,我的问题是我需要发送每个客户确认电子邮件并附上他们刚才创建的登录电子邮件地址和密码...所以我怎么能从字段customer
的{{1}}表中获取密码.. ??我只想回复这个password
客户验证电子邮件页面,我想要....
password
任何想法。?感谢...
答案 0 :(得分:10)
说实话,我讨厌我注册的每个网站都会给我发一封包含我密码的确认电子邮件!!! 很快我很遗憾甚至没有注册...
所以对你来说是最好的答案和选择:不要将密码发回给用户 - 他知道他在注册过程中输入了什么密码,即使他丢失了密码,他仍然可以更改密码另一个是否使用他的账户管理或“忘记密码”链接。
答案 1 :(得分:1)
简短回答 - 你不能。一般来说,读取SHA1,MD5,盐和散列。谷歌是你的朋友。
您唯一的选择是一起删除加密并将其保存为未加密的,这不是很安全。
再想一想,如果您在注册期间执行此确认电子邮件,则在提交表单之前将未加密的密码字符串存储在某个变量中,然后在您的邮件脚本中使用它。数据库中的密码仍将加密
答案 2 :(得分:1)
如果您需要,请保存您需要的密码密码副本:
1)在您的数据库中创建一个新表(对于此示例表,该表称为temp,包含varchar字段mail和pass)
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']) . "'");
答案 3 :(得分:0)
默认情况下,Open Cart使用SHA1以单向加密方式对密码进行哈希处理。简单来说,这意味着密码不打算被去除。当用户登录时,系统再次对用户输入进行哈希处理并比较哈希值。这称为单向加密,非常安全。
解密它的唯一常用方法(比如说黑客)将使用存储所有原始和散列结果的碰撞表。为了让黑客的生活更加艰难,OpenCart还使用Salt(为每个Salt密钥创建新的不同冲突表),因此不太可能解密密码(尽管许多开发人员已经不推荐使用SHA-1,因为目前已知的可用性并且最好使用SHA-256)。
话虽如此,我建议2个选项:
mcrypt_encrypt()/mcrypt_decrypt()
。 OpenCart实际上可以帮助您,在System / Libaray / encryption.php下查看。您需要更改catalog / model / account / customer.php模型。您还需要更改控制器,使其实际包含$ this-> data ['password'] = $ customer_info ['password'];这将确保您可以在.tpl文件中访问$ password。