【问题标题】:Get Password Value When Creating Account during WooCommerce Checkout在 WooCommerce 结帐期间创建帐户时获取密码值
【发布时间】:2015-05-01 11:11:34
【问题描述】:

我正在连接到一个外部 CRM API,我尝试使用相同的用户名和密码(客户在结帐页面上注册时创建的)为两个帐户创建一个帐户。用Wordpress散列之前可以得到用户密码吗?

我正在从 WooCommerce 访问我需要的所有其他用户订单信息,并通过 API 传递给 CRM:

$order = new WC_Order($order_id);
$order->billing_first_name;
$order->billing_last_name;
...

我只需要暂时取消密码。我在这里查看了 WC_Order 文档:http://docs.woothemes.com/wc-apidocs/class-WC_Order.html,但没有找到好的答案。

需要明确的是,我不会将未经哈希处理的密码发布到任一数据库。 WP 将像往常一样对 PW 进行哈希处理并存储它。我正在尝试通过 Neon API http://help.neoncrm.com/node/12 同时使用相同的用户名和密码创建另一个帐户。如果 pw 已经被 WP 散列,我不相信这是可能的。

【问题讨论】:

  • "It is possible to get the user password before it is hashed with Wordpress?" - 我当然希望不会。如果是这样,则应立即将该错误报告给 WordPress。我想您可以创建自己的表单来接受用户的密码,然后将该密码用于您想要的任何目的,但这绕过了负责任的密码处理的一条非常好的路线。
  • 我可以从 WooCommercethankyou.php 中的 $_POST 获取密码值。我只是希望有一些不那么老套的方法。
  • 你不应该,永远能够看到用户的未散列密码。永远。
  • @Sippy 我不确定您所说的“能够看到用户的未哈希密码”是什么意思。它只会在与 WP 未散列的时间相同的时间内以未散列的形式存储。您对如何最好地同时创建两个这样的帐户有什么建议吗?我知道这可能并不理想,但我不确定如何处理它。
  • @Sippy - 也许问题不清楚。我没有将未散列的密码发布到任何数据库。 WP 将像往常一样对 PW 进行哈希处理并存储它。我正在尝试通过 Neon API 使用相同的用户名和密码同时创建另一个帐户。我无法通过该 API 发送散列密码,否则我将无法登录,对吗? help.neoncrm.com/node/12

标签: php wordpress woocommerce crm


【解决方案1】:

我用一个挂钩的自定义 WooCommerce 插件解决了这个问题

'woocommerce_order_status_completed'  

需要在结帐阶段触发此过滤器,因为我们在结帐/帐户创建过程中通过 $_POST 访问密码字段。要触发此过滤器,需要使用此过滤器将订单状态更新为已完成:

'woocommerce_payment_complete_order_status'  

您可以在此处查看完整的方法和过滤器:http://www.rcorreia.com/woocommerce/woocommerce-automatically-set-order-status-payment-received/

插件或主题中的过滤器方法内部

'woocommerce_order_status_completed'

可以通过以下方式将帐户密码传递给 Neon api:

$accountPassword = sanitize_text_field($_POST['account_password']);

然后使用密码传递其他用户数据请求参数,例如:

array( ... 'individualAccount.login.password' => $accountPassword);

【讨论】:

  • 您是否找到了一种更简单的方法来实现这一点,而不是从$_POST['account_password'] 获取纯文本密码?
  • @elvismdev - 我认为这实际上可能会更好。查看:下面的参考链接中的函数 add_query_vars_filter( $vars )。参考:codex.wordpress.org/Function_Reference/get_query_var
  • 如果您使用诸如 eWay 之类的支付服务提供商,并且它希望您在提交结帐后输入您的信用卡号,这将不起作用。密码表单会妨碍并吞噬您的 $_post['account_password']。我认为您可以更好地寻找另一个与用户创建的挂钩
  • 我查看了 WC 并找到了“woocommerce_created_customer”。这个钩子将允许您存储未散列的密码,以便您可以将其散列到您自己的数据库中。
猜你喜欢
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 2018-02-27
  • 2021-08-23
  • 1970-01-01
相关资源
最近更新 更多