Come capita spesso per altre password, anche quella per accedere al pannello di amministrazione di WordPress puรฒ essere dimenticata; certo, il noto blog engine mette a disposizione un sistema per il recupero della password tramite posta elettronica, ma anche in questo caso ci possono essere dei problemi, immaginate per esempio di non potervi loggare alla vostra mailbox per un down del server di posta oppure perchรฉ, inavvertitamente, il vostro prezioso account di amministrazione di WordPress รจ associato ad una casella di posta non piรน attiva! Come fare in situazioni come questa per recuperare l’accesso alla dashboard di WordPress e cambiare la password dell’utente amministratore pur non avendo accesso al pannello di amministrazione?
Fortunatamente per voi esistono diverse strade per impostare una nuova password all’utente amministratore di WordPress. In questo articolo vi spiegherรฒ come fare.
Indice
Utilizzare WP-CLI
WP-CLI รจ un’interfaccia da linea di comando che consente di eseguire, attraverso la shell del proprio server, una serie di comandi avanzati. Per utilizzare WP-CLI รจ necessario disporre di uno spazio web con accesso SSH, ovviamene.
Se avete un accesso SSH e WP-CLI installato siete giร a buon punto. Non vi resta che connettervi tramite terminale, posizionarvi nella cartella in cui si trova WordPress e lanciare questo comando:
wp user list
Vi verrร restituito l’elenco degli utenti di WordPress. Identificate l’utente sul quale volete operare annotandone l’ID.
A questo punto eseguito questo secondo comando:
wp user update 1 --user_pass=nuovapassword
Nel mio esempio ho impostato una nuova password (“nuovapassword”) per l’utente con identificativo 1.
Utilizzare una query SQL (mediante phpMyAdmin)
Una soluzione piuttosto semplice per porre rimedio al vostro problema e cambiare la password di amministrazione di WordPress consiste nel lanciare una semplice query SQL all’interno del vostro database. Per farlo potete utilizzare, ovviamente, phpMyAdmin.
Effettuiamo l’accesso a phpMyAdmin, selezioniamo il database relativo alla nostra installazione di WordPress, selezioniamo la tab “SQL” e digitiamo la seguente query:
UPDATE wp_users SET user_pass = MD5('nuovapassword') WHERE wp_users.user_login = "nomeutente";[/sql]
Naturalmente, perchรฉ l’UPDATE funzioni sarร necessario sostituire “nuovapassword” con la nuova password da associare all’Admin e “nomeutente” con il nome relativo al nostro utente amministratore.
Utilizzare uno script di emergenza
Una terza soluzione consiste nell’utilizzare uno dei tanti script per la “gestione dell’emergenza” reperibili in Rete. Personalmente ho utilizzato con successo questo script sull’installazione WordPress di alcuni clienti che non avevano possibilitร di accedere al phpMyAdmin risolvendo il problema in pochi minuti.
Di seguito il sorgente dello script PHP che vi invito a copiare e salvare all’interno di un file che chiameremo, ad esempio, “modifica-password.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; ?>
Apriamo il nostro client FTP preferito, connettiamoci al nostro sito WordPress ed effettuiamo l’upload del file “cambia-password.php”.
Una volta completato l’upload richiamiamo il file attraverso il browser in questo modo:
https://www.miositowordpress.com/cambia-password.php
Eseguiamo la semplice procedura a video e diamo conferma. Una volta effettuato il cambio della password ricordiamoci di cancellare questo file!