2011-11-21 46 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