我已将旧的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格式时,你能看到上面的任何错误吗?
答案 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常量