【问题标题】:WordPress Import Users from Prestashop Password reHashWordPress 从 Prestashop 密码 reHash 导入用户
【发布时间】:2015-03-24 09:30:28
【问题描述】:

我已将我们的旧 Prestashop 用户导入 wp_users 表,显然密码不是 WP 格式,因此我们的用户无法使用他们的 Prestashop 密码登录。

我试过这个插件,但它根本不起作用:

https://wordpress.org/support/plugin/prestashop-user-compatibility

然后我查看了重置密码 codex 并找到了以下脚本,但这仍然无法正常工作。

  require_once 'wp-config.php';
$sql="SELECT user_pass,ID FROM wp_users WHERE ID = '279'";
$find = mysql_query($sql) or die(mysql_error());

  while($row = mysql_fetch_array($find))
  {

  $current_password = $row['user_pass'];
  $current_id = $row['ID'];
  $hashed_password = wp_hash_password( $current_password );

  $update_sql= "UPDATE wp_users SET user_pass = '" . $hashed_password . "' WHERE ID = " . $current_id . "";
  $update = mysql_query($update_sql) or die(mysql_error());  

  echo $current_id . " " . $hashed_password;
  echo "<br />";
  }

运行上面的代码后,密码在 phpMyAdmin 中看起来像相同的格式,但仍然无法登录。我正在将 wooCommerce 与 WordPress 一起使用。

Prestashop 密码:0f1a0cf4f0a2ad0fe4f760bfcd981646 在上面的脚本之后:$P$Bt1yBukTlFIa6PHz9hb98VeLKcfDu30

有什么想法吗?

谢谢

乔恩

/***** 更新 *******/

设法让上面的插件做某事,但它与密码不匹配:

$ps_salt = 'MY COOKIE KEY';

    $wp_hashed_pw = $user->user_pass."<br />"; // password stored in WPDB
    $ps_hashed_pw = md5($ps_salt.$password);
    // this means that the user's password in the DB is an old Prestashop password
    // if the password is correct, we rehash and update it
    if($ps_hashed_pw == $user->user_pass) {
        wp_set_password( $password, $user->id );

    }

所以基本上当用户使用 Prestashop 密码登录时,它会运行代码,然后更新为 wordpress 格式,你能看出上面有什么问题吗?

【问题讨论】:

  • 更新:上面的脚本似乎正在使用 Prestashop 密码并对其进行加密,所以我现在可以使用 Prestashop 加密密码登录:0f1a0cf4f0a2ad0fe4f760bfcd981646 而不是真正的 Prestasho 密码?
  • Prestashop 在存储之前还会对密码进行哈希处理,因此您将无法获得真实/实际密码。

标签: wordpress prestashop password-encryption


【解决方案1】:

您无法对 PrestaShop 密码进行反向工程。很可能上面的脚本确保您可以使用 PrestaShop 密码的哈希登录。

所以如果你的密码是:

我的密码

它在 PrestaShop 中像这样散列:

0f1a0cf4f0a2ad0fe4f760bfcd981646

上面的脚本对密码进行了哈希处理,变成了:

$P$Bt1yBukTlFIa6PHz9hb98VeLKcfDu30

所以现在您可以使用以下命令登录 wordpress:

0f1a0cf4f0a2ad0fe4f760bfcd981646

但不使用原始客户密码,即:

我的密码

PrestaShop 通过以下方式对密码进行哈希处理:

MD5('_COOKIE_KEY_password')

其中“password”是客户密码,_COOKIE_KEY_ 是 /config/settings.inc.php 中的 PHP 常量

【讨论】:

  • 感谢您的回答。我想知道 Prestashop 如何对其密码进行哈希处理,你知道吗?
  • 刚刚更新的问题,如果您有时间请看一下,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 2019-04-03
相关资源
最近更新 更多