شاید ندانید که روش های بازیابی رمز عبور در وردپرس بیشتر از یک راه است که معمولا ساده ترین راه برای بازیابی گذرواژه، مراجعه به لینک صفحه ورود اصلی تحت عنوان «بازیابی رمز عبور» است. در این سری از مقالات آموزش وردپرس به این موضوع خواهیم پرداخت.

روش های بازیابی رمز عبور

هرچند گاهی اوقات(مخصوصا زمانی که ایمیل شما به درستی کار نمی کند) مجبور خواهید شد از راه متفاوتی برای بازیابی رمز عبور خود استفاده کنید. در این مقاله انواع روش برای بازیابی رمز عبور را برای شما ارائه داده ایم. روش های زیر بر اساس دسترسی های مختلفی که دارید متفاوت خواهد بود.

 

تغییر رمز عبور از طریق پروفایل کاربری

برای تغییر رمز عبور در نسخه فعلی وردپرس به ترتیب زیر اقدام کنید:

  1. در بخش مدیریت سایت از منوی کاربران رو همه کاربران کلیک کنید.
  2. از لیست کاربران روی نام کاربری خودتان یا کاربری که می خواهید رمز عبور آن را عوض کنید کلیک کنید.
  3. در صفحه ویرایش پروفایل کاربر، صفحه را اسکرول کنید تا به بخش «رمز تاره» برسید و روی «ساختن رمز» کلیک کنید.
  4. اگر میخواهید رمز عبوری که به صورت خودکار ایجاد شده را تغییر دهید می توانید با تایپ رمز عبور جدید در فیلد مورد نظر آن را تغییر دهید. جعبه قدرت رمز عبور به شما قدرت رمز عبور شما را نشان خواهد داد که حتما باید به درجه متوسط برسد تا بتوانید رمز عبور را تغییر دهید. اگر میخواهید گذرواژه ضعیف را استفاده کنید میتوانید « تایید بکارگیری رمز سست» را تیک بزنید.
  5. در نهایت روی دکمه «بروزرسانی کاربر» کلیک کنید.

رمز عبور جدید شما بلافاصله فعال می شود.

تغییر رمز عبور از طریق ارسال ایمیل فراموشی رمز عبور

اگر نام کاربری یا ایمیل حساب کاربری در پروفایل خود را می دانید، می توانید از ویژگی «رمز عبورتان را گم کرده‌اید؟»  استفاده کنید.

  • به صفحه ورود وردپرس خود بروید(چیزی شبیه به آدرس http://yoursite.com/wp-login.php)
  • روی لینک «رمز عبورتان را گم کرده‌اید؟» کلیک کنید.
  • صفحه ای خواهد آمد که باید برخی جزئیات را وارد کنید. نام کاربری یا آدرس ایمیل حساب کاربری خود را وارد کنید.
  • صبر کنید تا رمز عبور جدید برای شما ایمیل شود.
  • بعد از اولین ورود با رمز عبور جدید از بخش پروفایل حساب کاربری رمز عبور خود را به رمزی که بتوانید به خاطر بسپارید تغییر دهید.

 

تغییر رمز عبور وردپرس از طریق خط فرمان MySQL

نکته: اگر دانش فنی در خصوص ترمینال و خط فرمان ندارید این روش را نادیده بگیرید.
  1. مقدار هش md5 پسورد خود را تولید کنید:
    • از ابراز md5 Hash Generator استفاده کنید، یا…
    • یک کلید با استفاده از زبان پایتون، پی اچ پی یا هر زبار برنامه نویسی دیگر بسازید، یا …
    • روی لینوکس/یونیکس:
      1. فایلی تحت عنوان wp.txt ایجاد کنید، خالی و فقط شامل پسورد شما باشد. سپس دستوری زیر را وارد کنید:
      2. tr -d ‘\r\n’ < wp.txt | md5sum | tr -d ‘ -‘
      3. rm wp.txt
    • روی سیستم عامل مکینتاش:
      1. فایل تحت عنوان wp.txt ایجاد کنید، که تنها شامل پسورد جدید شما باشد. سپس دستورات زیر را در خط فرمان وارد کنید.
      2. md5 -q ./wp.txt; rm ./wp.txt (اگر میخواهید که هش md5 چاپ شود)
      3. md5 -q ./wp.txt | pbcopy; rm ./wp.txt (اگر میخواهید که هش md5 داخل کلیپ برد کپی شود)
  2. با فرمان «mysql -u root -p» وارد MySQL شوید.
  3. پسورد MySQL خود را وارد کنید.
  4. بانک اطلاعاتی خود را با دستور «use <name-of-database>» انتخاب کنید.
  5. با دستور «show tables; به دنبال جدول که با نام users تمام می شود بگردید»
  6. دستور «SELECT ID, user_login, user_pass FROM (name-of-table-you-found)» را برای نمایش نام کاربری، شناسه کاربری و پسورد فعلی بزنید.
  7. با دستور «UPDATE (name-of-table-you-found) SET user_pass = ‘(MD5-string-you-made)’ WHERE ID = (id-of-account-yout-are-resetting-password-for)»
  8. دستور «SELECT ID, user_login, user_pass FROM (name-of-table-yout-found)» را برای نمایش تغییرات بزنید.
  9. با زدن ctrl+D از کلایتنت MySQL خارج شوید.

نکته: اگر از نسخه اخیر MySQL یعنی نسخه 5.x استفاده می کنید میتوانید مقدار هش MD5 را با آن محاسبه کنید.

  1. مرحله اول بالا را رد شوید.
  2. عوض مرحله هفتم بالا دستور زیر را وارد کنید:
    • دستور «UPDATE (name-of-table-you-found) SET user_pass = MD5(‘(new-password)’) WHERE ID = (id#-of-account-you-are-reseting-password-for);» را برای تغییر پسورد وارد کنید

نکته اینجاست که حتی اگر بازیابی رمز های عبور سالت شده هستند، به این معنی که شبیه «$P$BLDJMdyBwegaCLE0GeDiGtC/mqXLzB0» باشند، شما هنوز می توانید با جایگزین کردن بازیابی رمز عبور هش MD5 وارد حساب کاربری شود.

 

تغییر رمز عبور وردپرس با استفاده از phpMyAdmin

این بخش مخصوص کسانی هست که به دیتابیس های خود از طریق phpMyAdmin دسترسی دارد. نکته: استفاده از phpMyAdmin ریسک خودش را دارد. اگر به توانایی خود برای استفاده شک دارید مشورت بگیرید. وردپرس پاسخگوی دیتاهای از بین رفته شما نیست.

  1. وارد بخش phpMyAdmin هاست خود شوید و روی databases کیلک کنید.
  2. لیست دیتابیس ها را خواهید دید. روی دیتابیس وردپرس تان کلیک کنید.
  3. به دنبال جدولی با پسوند users مثلا wp_users بگردید.
  4. از لیست کاربری که قصد تغییر پسورد آن را دارید را پیدا و روی لینک edit جلوی آن کلیک کنید(می توانید روی عنوان جدول هم کلیک کنید)
  5. در قسمت user_pass ابتدا Function را روی MD5 و سپس رمز عبور جدید خود را در قسمت value وارد کنید.
  6. روی دکمه Go کلیک کنید.

رمز عبور شما تغییر کرده در غیر اینصورت مراحل را مجدد بررسی کنید.

 

تغییر رمز عبور وردپرس از طریق FTp

اگر از کاربر admin استفاده میکنید یک راه ساده برای تغییر پسورد از طریق FTP وجود دارد.

  1. از طریق سایت وارد اکانت FTP شوید و فایل functions.php قالب فعال خود را دانلود کنید.
  2. فایل را ویرایش و کد wp_set_password( ‘password’, 1 ); زیر را به آن اضافه کنید، دقیقا در شروع فایل بعد از باز شدن تگ <?php

رمز عبور جدید خود را برای کاربر مدیریت وارد کنید. عدد 1 در اینجا شناسه کاربری در جدول wp_users است.

  1. فایل ویرایش شده را دوباره داخل قالب فعال خود آپلود و جایگزین کنید.
  2. بلافاصله وقتی اولین ورود را انجام دادی برگردید و کد اضافه شده را حذف کنید. این کار رمز عبور شما را در هر صفحه ای بازیابی می کند.

 

تغییر رمز عبور از طریق خط فرمان وردپرس یا WP CLI

WP CLI یک ابزار خط فرمان برای مدیریت نصب وردپرس شماست.

  1. وارد دایرکتوری /wordpress و شوید و برای نمایش تمام کاربران دستور زیر را تابپ کنید:
$ wp user list

شناسه یا ID کاربری که قصد تغییر رمز عبور آن را دارید پیدا کنید.

سپس با دستور زیر کاربر مد نظر را به روز کنید.

$ wp user update 1 --user_pass=$UP3RstrongP4$w0rd

عدد 1 در اینجا شناسه کاربر مد نظر است.

 

استفاده از اسکریپت بازیابی رمز عبور اضطراری

 

زمانی که نام کاربری خود را می دانید:

اگر هیچ کدام از روش های بالا کار نکرد، می توانید از اسکریپت بازیابی رمز عبور  اضطراری استفاده کنید. به این نکته توجه کنید که این یک افزونه نیست، بلکه یک اسکریپت PHP است.

ذکر چند نکته:

  1. در استفاده از اسکریپت بازیابی رمز عبور اضطراری دانستن نام کاربری مدیر ضروری است.
  2. این اسکریپت رمز عبور مدیر را به روز و آن را در قالب یک ایمیل به آدرس ایمیل مدیر ارسال می کند.
  3. حتی اگر ایمیلی هم دریافت نکردید، رمز عبور تغییر کرده است.
  4. در این روش نیاز به ورود به حساب کاربری ندارید(بعد از انجام کار، اگر توانستید وارد شوید دیگر نیازی به فایل اسکریپت نیست)
  5. فایل اسکریپت را در ریشه نصب وردپرس خود قرار دهید. آن را داخل پوشه plugins آپلود نکیند.
  6. به دلایل امنیتی، به یاد داشته باشید که وقتی کارتان تمام شد اسکریپت را حذف کنید.

نحوه استفاده:

  1. اسکریپت بازیابی رمز عبور اضطراری را از اینجا و یا از پایین کپی و داخل فایل emergency.php بریزید و این فایل را داخل ریشه نصب وردپرس خود آپلود کنید(همان دایرکتوری که فایل wp-config.php در آن قرار دارد)
  2. از داخل مرورگر آدرس http://example.com/emergency.php را باز کنید.
  3. طبق دستور نام کاربری مدیر که معمولا admin است و پسورد جدید را وارد کنید و روی update Options کلیک کیند. یک پیام برای تغییر رمز عبور نمایش داده می شود. یک ایمیل هم به مدیر بلاگ که حاوی اطلاعات تغییر رمز عبور است ارسال می شود.
  4. پس از اتمام کار فایل emergency.php را از روی سرور حذف کنید.حتما این کار را فراموش نکنید چون هر فردی میتواند با این اسکریپت رمز عبور مدیر را تعیین و عوض کند.
<?php
/*
	This program is free software; you can redistribute it and/or modify
    	it under the terms of the GNU General Public License as published by
    	the Free Software Foundation; either version 2 of the License, or
    	(at your option) any later version.
	This program is distributed in the hope that it will be useful,
    	but WITHOUT ANY WARRANTY; without even the implied warranty of
    	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    	GNU General Public License for more details.
	You should have received a copy of the GNU General Public License
    	along with this program; if not, write to the Free Software
    	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

require './wp-blog-header.php';

function meh() {
	global $wpdb;

	if ( isset( $_POST['update'] ) ) {
		$user_login = ( empty( $_POST['e-name'] ) ? '' : sanitize_user( $_POST['e-name'] ) );
		$user_pass  = ( empty( $_POST[ 'e-pass' ] ) ? '' : $_POST['e-pass'] );
		$answer = ( empty( $user_login ) ? '<div id="message" class="updated fade"><p><strong>The user name field is empty.</strong></p></div>' : '' );
		$answer .= ( empty( $user_pass ) ? '<div id="message" class="updated fade"><p><strong>The password field is empty.</strong></p></div>' : '' );
		if ( $user_login != $wpdb->get_var( "SELECT user_login FROM $wpdb->users WHERE ID = '1' LIMIT 1" ) ) {
			$answer .="<div id='message' class='updated fade'><p><strong>That is not the correct administrator username.</strong></p></div>";
		}
		if ( empty( $answer ) ) {
			$wpdb->query( "UPDATE $wpdb->users SET user_pass = MD5('$user_pass'), user_activation_key = '' WHERE user_login = '$user_login'" );
			$plaintext_pass = $user_pass;
			$message = __( 'Someone, hopefully you, has reset the Administrator password for your WordPress blog. Details follow:' ). "\r\n";
			$message  .= sprintf( __( 'Username: %s' ), $user_login ) . "\r\n";
			$message .= sprintf( __( 'Password: %s' ), $plaintext_pass ) . "\r\n";
			@wp_mail( get_option( 'admin_email' ), sprintf( __( '[%s] Your WordPress administrator password has been changed!' ), get_option( 'blogname' ) ), $message );
			$answer="<div id='message' class='updated fade'><p><strong>Your password has been successfully changed</strong></p><p><strong>An e-mail with this information has been dispatched to the WordPress blog administrator</strong></p><p><strong>You should now delete this file off your server. DO NOT LEAVE IT UP FOR SOMEONE ELSE TO FIND!</strong></p></div>";
		}
	}

	return empty( $answer ) ? false : $answer;
}

$answer = meh();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>WordPress Emergency PassWord Reset</title>
	<meta http-equiv="Content-Type" content="<?php bloginfo( 'html_type' ); ?>; charset=<?php bloginfo( 'charset' ); ?>" />
	<link rel="stylesheet" href="<?php bloginfo( 'wpurl' ); ?>/wp-admin/wp-admin.css?version=<?php bloginfo( 'version' ); ?>" type="text/css" />
</head>
<body>
	<div class="wrap">
		<form method="post" action="">
			<h2>WordPress Emergency PassWord Reset</h2>
			<p><strong>Your use of this script is at your sole risk. All code is provided "as -is", without any warranty, whether express or implied, of its accuracy, completeness. Further, I shall not be liable for any damages you may sustain by using this script, whether direct, indirect, special, incidental or consequential.</strong></p>
			<p>This script is intended to be used as <strong>a last resort</strong> by WordPress administrators that are unable to access the database.
				Usage of this script requires that you know the Administrator's user name for the WordPress install. (For most installs, that is going to be "admin" without the quotes.)</p>
			<?php
			echo $answer;
			?>
			<p class="submit"><input type="submit" name="update" value="Update Options" /></p>

			<fieldset class="options">
				<legend>WordPress Administrator</legend>
				<label><?php _e( 'Enter Username:' ) ?><br />
					<input type="text" name="e-name" id="e-name" class="input" value="<?php echo attribute_escape( stripslashes( $_POST['e-name'] ) ); ?>" size="20" tabindex="10" /></label>
				</fieldset>
				<fieldset class="options">
					<legend>Password</legend>
					<label><?php _e( 'Enter New Password:' ) ?><br />
					<input type="text" name="e-pass" id="e-pass" class="input" value="<?php echo attribute_escape( stripslashes( $_POST['e-pass'] ) ); ?>" size="25" tabindex="20" /></label>
				</fieldset>

				<p class="submit"><input type="submit" name="update" value="Update Options" /></p>
			</form>
		</div>
	</body>
</html>
<?php exit; ?>

زمانی که شناسه کاربری خود را می دانید:

اگر هم نام کاربری خود یا ایمیل خود را نمیدانید باید دست به دامان شناسه کاربری بشوید و از این طریق رمز عبور خود را بازیابی کنید. می توانید با استفاده از افزونه ضروری زیر این عمل را انجام دهید:

  1. کد افزونه را از زیر کپی و داخل یک فایل با پسوند php بریزید.
  2. آی پی خود به همراه شناسه کاربری و رمز عبور مد نظر خود را تنظیم کنید.(برای نمایش آی پی کافی است در گوگل عبارت my ip را جستجو کنید)
  3. فایل را در مسیر wp-content/mu-plugins/ آپلود کنید. لازم نیست که این افزونه رو فعال کنید چون به صورت خودکار فعال هست.
  4. یک بار سایت را باز کنید، با اطلاعات کاربر روبه رو خواهید شد.
  5. کار شما انجام و بلافاصله فایل را از روی سرور حذف کنید.
<?php
$user_id = 1; # Insert your user ID or simply 1 for the first user that was created
$user_pass = 'secret'; # Insert a new password
$ip = '127.0.0.1'; # Insert your IP

if ($_SERVER['REMOTE_ADDR'] === $ip) {
        require_once(ABSPATH . WPINC . '/registration.php');
        require_once(ABSPATH . WPINC . '/pluggable.php');
        $user = wp_update_user(array(
                'ID' => $user_id,
                'user_pass' => $user_pass,
        )) ;
        var_dump(get_userdata($user));
        die('disable me!');
}

زمانی که نه نام کاربری، نه ایمیل و نه شناسه کاربری خود را نمی دانید:

اما ممکن است که زمانی پیش بیاید که نه نام کاربری، نه ایمیل و نه شناسه کاربری خود را فراموش کرده اید. در این صورت به ناچار باید یک کاربر جدید با دسترسی مدیر ایجاد کنید:

  1. کد افزونه را از زیر کپی و داخل یک فایل با پسوند php بریزید.
  2. آی پی خود به همراه نام کاربری، ایمیل و رمز عبور مد نظر خود را تنظیم کنید.
  3. فایل را در مسیر wp-content/mu-plugins/ آپلود کنید. لازم نیست که این افزونه رو فعال کنید چون به صورت خودکار فعال هست.
  4. یک بار سایت را باز کنید، با شناسه کاربری جدید روبه رو خواهید شد.
  5. کار شما انجام، کاربر با دسترسی مدیر ایجاد شده و بلافاصله فایل را از روی سرور حذف کنید.
<?php
/**
 * Upload to wp-content/mu-plugins/whichevernameyoulike.php
 */
$login = 'foobar'; # New username
$password = 'barbaz'; # Password for the new user
$email = 'you@example.com'; # Email address of the new user
$ip = '127.0.0.1'; # Insert your IP, http://google.com/search?&q=what%20is%20my%20ip

if ($_SERVER['REMOTE_ADDR'] === $ip) {
    require_once(ABSPATH . WPINC . '/pluggable.php');
    require_once(ABSPATH . 'wp-admin/includes/' . 'user.php');

    $userdata = array(
        'user_login' => $login,
        'user_pass' => $password,
        'user_email' => $email,
        'role' => 'administrator',
    );
    $user_id = wp_insert_user($userdata);
    var_dump($user_id);
    die('delete me!');
}

با عضویت در کانال @wordpress_pro اطلاعات خود را در زمینه وردپرس بروز نگه دارید.

منابع: