2013-04-23 71 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']) . "'");