WordPress パスワードリセットスクリプト(DBにアクセスできない場合)

Last Updated:2023年07月17日| | コメントを残す

WordPress Codexサイトに登場した緊急時に利用可能 WordPress パスワードリセットスクリプトです。 おそらくEmergencyという名前のプラグインで作られていましたが、現在 WordPress リポジトリから削除されたようです。 以下に紹介するスクリプトを使用する場合は注意して使用してください。

WordPress パスワードリセットスクリプト(DBにアクセスできない場合)

WordPress 管理者パスワードが覚えておらず、管理者ページにログインできない場合は、電子メールでパスワードリセットリンクを受け取ることができます。 何らかの理由でメールが送信されない場合 phpMyAdminの など MySQL クライアントに接続してビーバーンをリセットできます。

DBにアクセスできない場合は、以下のスクリプトを使用できます。 しかし、注意して使用してください。

警告

  1. 管理者のユーザー名(username)を知っている必要があります。 わからない場合は使用できません。
  2. 以下のスクリプトを使用すると、アドミンパスワードを更新して管理者のEメールアドレスに送信します。
  3. メールで受信できなくてもパスワードは変更されます。
  4. ログインできるようになると、スクリプトは不要になります。
  5. WordPressがインストールされているルートフォルダにこのスクリプトを配置します。 WordPress プラグインディレクトリにアップロードしないでください。
  6. 完了したら、セキュリティのためにスクリプトを削除してください。

使用方法

  1. スクリプトをemergency.phpというファイルに WordPressがインストールされているルートフォルダ(wp-config.phpファイルがあるディレクトリ)に保存します。
  2. ブラウザでhttp://example.com/emergency.phpを開きます。
  3. 画面が表示されたら、管理者のユーザー名(adminなど)とパスワードを入力し、 更新オプションをクリックします。 パスワードが変更されるというメッセージが表示され、変更されたパスワード情報がブログ管理者に電子メールで送信されます。
  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.

       이 프로그램은 무료 소프트웨어입니다.자유 소프트웨어 재단(Free 
        Software Foundation)에 의해 공표된 대로 GNU General Public License
        (해당 License의 버전 2, 또는 최신 버전)의 조건에 따라 
        이 프로그램을 재배포하거나 변경할 수 있습니다.

	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; ?>

// 출처: https://codex.wordpress.org/User:MichaelH/Orphaned_Plugins_needing_Adoption/Emergency

可能であれば、サイト全体をバックアップした後に上記のコードを使用してください。

可能であれば、phpMyAdminにログインして管理者パスワードを変更できます。 ディビにアクセスできない場合は、上記の方法を試すことができますが、IDが「1」の管理者ユーザー名を知っていなければ変更が可能です。

パスワードの変更に関連して問題が発生した場合 ここでサービス(有料)をご依頼することができます。

参照


コメントを残す

コメント

割引ニュース
アストラテーマで最大40%割引!
期間限定
You This Coupon Code in Checkout
Click the code to Copy