我即將從另一個CMS導入約10,000名用戶到我的WordPress的網站。問題是,他們的密碼都沒有工作,因爲他們沒有加密。WordPress的 - 加密導入用戶的密碼
如何快速加密所有這些密碼並以Wordpress識別和接受的方式進行加密,以便用戶可以登錄?
我即將從另一個CMS導入約10,000名用戶到我的WordPress的網站。問題是,他們的密碼都沒有工作,因爲他們沒有加密。WordPress的 - 加密導入用戶的密碼
如何快速加密所有這些密碼並以Wordpress識別和接受的方式進行加密,以便用戶可以登錄?
事實證明,我發現了其他幾種方法來做到這一點。一種是通過你的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相應的哈希密碼。
由於加密和哈希是不同的東西,我假設所有這些密碼都是純文本格式。在這種情況下,你所要做的就是在其上應用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
函數文檔上看看,看看有什麼用戶信息可以在第一時刻導入。
謝謝,維尼修斯。雖然我沒有最終使用你的方法,但它看起來可能會起作用,所以我給了你一個贊成票。 – Michael
關於使用'wp_update_user'很酷的事情是你不必擔心'wp_users'和'wp_usermeta'表之間的關係。如果你經常這樣做,比如在用戶webservice上,那麼你會明確地想要使用內置的方法。 – vmassuchetto