【发布时间】: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