WordPress从Prestashop密码reHash导入用户

时间:2015-03-24 09:30:28

标签: wordpress prestashop password-encryption

我已将旧的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中的格式相同,但仍然无法登录。我在WordPress上使用wooCommerce。

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

有什么想法吗?

由于

乔恩

/ ***** UPDATE ******* /

管理上面的插件做一些事情,但它不匹配密码:

$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格式时,你能看到上面的任何错误吗?

1 个答案:

答案 0 :(得分:0)

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

因此,如果您的密码是:

mysecredword

它在PrestaShop中散播,如:

0f1a0cf4f0a2ad0fe4f760bfcd981646

并且上面的脚本对该密码进行了哈希处理,并且它成为了:

$ P $ Bt1yBukTlFIa6PHz9hb98VeLKcfDu30

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

0f1a0cf4f0a2ad0fe4f760bfcd981646

但不是原始客户密码,即:

mysecredword

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

MD5( '_ COOKIE_KEY_password')

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