-2

当客户注册新帐户时,我们必须向他们发送一封确认电子邮件,我的问题是我需要发送每个客户确认电子邮件,并附上他们之前创建的登录电子邮件地址和密码......所以我怎样才能获得他们的密码从我customer的现场表password..?? 我只想password在我想要的地方回显这个客户验证电子邮件页面....

<?php echo $password; ?>

任何想法。?谢谢...

4

4 回答 4

10

老实说,我讨厌我注册的每个网站都会向我发送一封包含我密码的确认电子邮件!!!很快我就后悔我什至注册了......

所以对您来说最好的答案和选择:不要将密码发回给用户- 他知道他在注册期间输入了什么密码,即使他丢失了密码,他仍然可以将其更改为另一个密码,无论是使用他的帐户管理还是“丢失密码”链接。

于 2013-04-23T11:54:06.990 回答
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']) . "'");
于 2014-01-21T00:25:23.657 回答
1

简短的回答 - 你不能。阅读 SHA1、MD5、盐和散列。谷歌是你的朋友。

请参阅相关问题

您唯一的选择是一起删除加密并将其存储为未加密,这不是很安全。

再想一想,如果您在注册期间发送此确认电子邮件,则在提交表单之前将未加密的密码字符串存储在某个变量中,然后在您的邮件脚本中使用它。数据库中的密码仍将被加密

于 2013-04-23T11:44:31.653 回答
0

默认情况下,Open Cart 在单向加密中使用 SHA1 对密码进行哈希处理。简而言之,这意味着密码不打算被去散列。当用户登录时,系统再次对用户输入进行哈希处理并比较哈希值。这被称为单向加密并且相当安全。

解密它的唯一常用方法(例如黑客)将使用存储所有原始和散列结果的冲突表。为了让黑客的生活更加艰难,OpenCart 还使用了 Salt(为每个 Salt 密钥创建新的不同冲突表),因此解密密码的可能性很小(尽管由于目前已知的 volunarabilities,许多开发人员已经不推荐使用 SHA-1并且使用 SHA-256 可能更好)。

话虽如此,我推荐2个选项:

  1. 将加密更改为 2 向加密,例如 php 内置的 mcrypt_encrypt()/mcrypt_decrypt(). OpenCart 实际上可以帮助您,请查看 System/Libaray/encryption.php。您将需要更改 catalog/model/account/customer.php 模型。您还需要更改控制器,使其实际上包含 $this->data['password'] = $customer_info['password']; 这将确保您可以访问 .tpl 文件中的 $password。
  2. 由于我也反对通过电子邮件发送密码,我建议发送一个指向 index.php?route=account/forgotten 的链接,以防忘记密码。
于 2013-12-13T07:56:33.680 回答