2011-11-21 39 views
3

我即将从另一个CMS导入约10,000名用户到我的WordPress的网站。问题是,他们的密码都没有工作,因为他们没有加密。WordPress的 - 加密导入用户的密码

如何快速加密所有这些密码并以Wordpress识别和接受的方式进行加密,以便用户可以登录?

回答

0

事实证明,我发现了其他几种方法来做到这一点。一种是通过你的mysql的phpmyadmin区域进行(在“SQL”选项卡上,一旦你选择了正确的数据库),并发布了由Andrew维生素在另一个线程计算器内:

UPDATE wp_users SET user_pass = MD5(user_pass) WHERE ... 

为“里”的条件,如果所有的密码都是一样的长度,你可以使用以下条件:

WHERE CHAR_LENGTH(wp_users.user_pass) = 12 

当然,如果你的密码长度是不同的,简单地改变“12”以上无论你的密码的长度。如果它们不是相同的字符长度,那么您将不得不使用一些其他标准来确定要加密的密码(除非它们全部需要加密,在这种情况下,您可以完全禁用“其中”条件。)

我个人最终使用了一个php脚本来完成这项工作,所以这个密码可以通过Wordpress本身进行加密(或者至少使用Wordpress使用的方法)。下面是我的php文件的内容:

<?php 
    require_once '/home/evaluate/public_html/members-blog/wp-config.php'; 

$sql="SELECT user_pass,ID FROM wp_users WHERE CHAR_LENGTH(wp_users.user_pass) = 12"; 
$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 />"; 
    } 

?> 

这样做,不仅是使用Wordpress自己的方法对密码进行加密,而且每次运行脚本时还会在屏幕上显示打印输出,并向您显示所有已更新和提供的记录的ID相应的哈希密码。

+0

关于使用'wp_update_user'很酷的事情是你不必担心'wp_users'和'wp_usermeta'表之间的关系。如果你经常这样做,比如在用户webservice上,那么你会明确地想要使用内置的方法。 – vmassuchetto

1

由于加密和哈希是不同的东西,我假设所有这些密码都是纯文本格式。在这种情况下,你所要做的就是在其上应用md5算法。

您可以从SQL或PHP导入脚本执行此操作。看看Resetting Your Password Codex页面,这应该给你一些亮点。

无论如何,你不会走太远:

require_once(ABSPATH . WPINC . '/registration.php'); 

$sql = "SELECT ALL USERS FROM YOUR TABLE"; 
$db = new wpdb (DB_USER, DB_PASSWORD, DB_NAME, DB_HOST); 

$result = $db->get_results($sql); 
foreach ($result as as $r) { 
    wp_update_user(array(
     'user_login' => $r->username, 
     'user_pass' => $r->password, 
     'user_firstname' => $r->first_name 
    )); 
} 

采取get_userdata函数文档上看看,看看有什么用户信息可以在第一时刻导入。

+0

谢谢,维尼修斯。虽然我没有最终使用你的方法,但它看起来可能会起作用,所以我给了你一个赞成票。 – Michael