2011-11-21 3 views
3

약 10,000 명의 사용자를 다른 CMS에서 내 Wordpress 사이트로 가져 오려하고 있습니다. 문제는 암호가 암호화되지 않아 암호가 작동하지 않는다는 것입니다.Wordpress - 가져온 사용자의 비밀번호를 암호화하십시오.

사용자가 로그인 할 수 있도록 Wordpress가 인식하고 허용하는 방식으로 이러한 모든 비밀번호를 신속하게 암호화하려면 어떻게해야합니까?

답변

0

사실,이 작업을 수행하는 몇 가지 다른 방법을 발견했습니다. 하나 (오른쪽 데이터베이스를 선택한 후에는 "SQL"탭에서) 당신의 MySQL의 phpMyAdmin이 지역을 통해 수행되며 유래 내의 다른 스레드에서 앤드류 비타에 의해 게시 된 다음 "여기서"조건에 대한

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

, 비밀번호의 길이가 다른 경우

WHERE CHAR_LENGTH(wp_users.user_pass) = 12 

은 물론, 단순히 암호의 길이가 무엇이든지 위의 "12"로 변경 : 모든 암호는 같은 길이 있다면, 다음과 같은 조건을 사용할 수 있습니다. 문자 길이가 같지 않으면 암호화 할 암호를 결정하기 위해 다른 기준을 사용해야합니다 (이 경우 ALL을 암호화해야하는 경우가 아니면 "Where"조건을 완전히 해제해야합니다).

는 개인적으로 암호가 워드 프레스 자체 암호화 할 수 있도록 작업을 할 PHP 스크립트를 사용하여 종료 (또는 적어도 워드 프레스를 사용하는 방법 사용) 여기 내 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' 테이블 사이의 관계에 대해 걱정할 필요가 없다는 것입니다. 예를 들어 사용자 웹 서비스에서와 같이이 작업을 자주 수행하면 내장 메서드를 사용해야 할 것입니다. – vmassuchetto

1

암호화와 해싱은 다른 것들이므로 이러한 암호는 모두 일반 텍스트 형식으로 간주됩니다. 이 경우 md5 알고리즘을 적용하면됩니다.

SQL 또는 PHP 가져 오기 스크립트에서 수행 할 수 있습니다. Resetting Your Password Codex 페이지를 살펴보면 약간의 정보를 얻을 수 있습니다. 처음 순간에 가져올 수있는 사용자 정보를 볼 수 get_userdata 기능 문서에 봐

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 
    )); 
} 

:

어쨌든, 당신은 너무 멀리에서 이동하지 않습니다.

+0

감사합니다. Vinicius. 비록 내가 당신의 방법을 사용하여 끝내지는 않았지만 그것이 효과가있을 것 같아서, 나는 당신에게 upvote를주었습니다. – Michael

관련 문제