Почему не работает сброс пароля пользователей WordPress?

5 апр. 2017 г., 01:01:58
Просмотры: 28.2K
Голосов: 2

Итак, я следовал инструкции ниже, чтобы сбросить свои пароли, когда забываю пароль для входа в админ-панель WordPress

https://crybit.com/reset-wordpress-users-password/

но это, похоже, не работает для другого сайта, над которым я работаю. Я не уверен почему. Я слышал, как коллеги говорили о PHP Portable Password Hashing Framework. Может кто-то объяснить мне, если действительно проблема в этом, достаточно ли просто использовать инструмент вроде этого:

http://tools.k2an.com/?page=wordpress

потому что я пробовал его, и он тоже не сработал, и у меня больше нет идей для решения. Пожалуйста, помогите.

Кто-нибудь знает, могут ли какие-либо из этих плагинов или это сообщение об ошибке быть проблемой:

medthursday@thursdaypools.com [~/public_html]# wp plugin list
Notice: Undefined index: HTTP_HOST in /home/medthursday/public_html/wp-content/plugins/simple-301-redirects/wp-simple-301-redirects.php on line 271
+--------------------------------------------+----------+-----------+------------+
| name                                       | status   | update    | version    |
+--------------------------------------------+----------+-----------+------------+
| advanced-custom-fields-pro                 | active   | available | 5.5.0      |
| akismet                                    | inactive | available | 3.2        |
| custom-post-type-ui                        | active   | available | 1.4.3      |
| hc-custom-wp-admin-url                     | active   | none      | 1.3.2      |
| hello                                      | inactive | none      | 1.6        |
| wd-instagram-feed                          | active   | available | 1.1.16     |
| post-types-order                           | active   | available | 1.9        |
| regenerate-thumbnails                      | active   | none      | 2.2.6      |
| remove-query-strings-from-static-resources | active   | available | 1.3.1      |
| simple-301-redirects                       | active   | none      | 1.07       |
| sucuri-scanner                             | active   | none      | 1.8.3      |
| sumome                                     | active   | available | 1.22       |
| theme-check                                | inactive | none      | 20160523.1 |
| updraftplus                                | active   | available | 1.12.29    |
| user-role-editor                           | active   | available | 4.31       |
| wordfence                                  | active   | available | 6.2.6      |
| wordpress-importer                         | active   | none      | 0.6.3      |
| wp-pagenavi                                | active   | none      | 2.91       |
| wordpress-seo                              | active   | available | 3.8        |
+--------------------------------------------+----------+-----------+------------+
7
Комментарии

что ты имеешь в виду под "это не работает"?

rudtek rudtek
5 апр. 2017 г. 01:15:37

То есть, после того как я обновляю пользователя wp_user с новым паролем, я обновляю страницу example.com/wp-admin, пытаюсь войти, и ничего — я всё равно не могу авторизоваться. Я делал это миллион раз на своём личном сайте.

Daniel Daniel
5 апр. 2017 г. 01:16:46

Ты получаешь ошибку? Проверял лог ошибок? Ты используешь http://www.example.com/wp-login.php?action=lostpassword? Если да, приходит ли тебе письмо?

rudtek rudtek
5 апр. 2017 г. 01:18:09

На фронтенде я получаю ошибку, что имя пользователя и/или пароль неверны. Какие логи ошибок нужно проверить на сервере? Когда я запрашиваю сброс пароля по email, система говорит, что такого email не существует, хотя он есть в phpMyAdmin, как и мое имя пользователя с паролем.

Daniel Daniel
5 апр. 2017 г. 01:21:12

В этом случае ошибки может и не быть. Получается ли войти на сайт под другим пользователем? Удавалось ли вообще когда-нибудь авторизоваться?

rudtek rudtek
5 апр. 2017 г. 01:32:26

Я никогда не пробовал входить под другими учетными данными

Daniel Daniel
5 апр. 2017 г. 01:39:27

Давайте продолжим обсуждение в чате.

rudtek rudtek
5 апр. 2017 г. 01:40:55
Показать остальные 2 комментариев
Все ответы на вопрос 3
3

Возможно, это не тот ответ, который вы ищете, но попробуйте один из следующих вариантов – вдруг поможет?!

Конечно, у вас есть доступ по FTP или SSL.
Если у вас нет ни одного из них, дальше можно не читать!

Старая добрая идея сделать бэкап в данном случае файла functions.php перед внесением изменений – это мудро и может быть очень важно.

Для начала активируйте режим отладки в wp-config.php, чтобы увидеть (надеемся) возможные ошибки, которые беспокоят WordPress.

Вариант 1:
Добавьте в functions.php следующий код, если ваш администратор имеет ID номер 1:

/**
 * Подробнее {@link https://codex.wordpress.org/Function_Reference/wp_set_password}
 */
$user_id = 1;
$password = 'newpasswd';
wp_set_password( $password, $user_id );

Важно: Этот код нужно удалить после ОДНОЙ загрузки страницы, иначе пароль будет сбрасываться при каждой загрузке, возвращая пользователя на страницу входа.
Замените значения на свои! Если администратор не имеет user_id равного 1, и вы не знаете, какой именно ID нужен, пропустите этот вариант. (не стоит пробовать!)

После добавления кода попробуйте войти на сайт. (убедитесь, что кэш браузера очищен)
Попробуйте авторизоваться с именем администратора и новым паролем.
Получилось? Если да, удалите код из functions.php, и всё должно работать.
Не получилось? Удалите код и попробуйте вариант 2.

Вариант 2:
Добавьте в functions.php следующую функцию, которая *(в идеале)* создаст нового администратора. Измените $username \ $email \ $password на свои значения. (рабочий email будет логичным выбором)

/**
 * Создание нового пользователя с правами администратора
 *
 * Подробнее {@link https://codex.wordpress.org/Function_Reference/wp_create_user}
 *
 * @version WP 4.7.3
 */
add_action( 'init', 'wpse262478_add_new_adminuser' );
function wpse262478_add_new_adminuser()
{
    $username = 'aname'; 
    $email    = 'whatever@domain.com';
    $password = 'LZTf$f$FR)Y@xye';
    $user_id  = username_exists( $username );

    if ( !$user_id && email_exists( $email ) == false )
    {
        $user_id = wp_create_user( $username, $password, $email );

        if( !is_wp_error( $user_id ) )
        {
            $user = get_user_by( 'id', $user_id );
            $user->set_role( 'administrator' );
        }
    }
} // конец функции

(убедитесь, что кэш браузера очищен – это всегда полезно в подобных ситуациях)

Если всё получилось, войдите с новым аккаунтом администратора (если сразу не получается, нажмите F5 для обновления несколько раз) и удалите функцию из functions.php. Если успеха нет, всё равно удалите функцию, так как этот вариант тоже не сработал.

Надеюсь, один из вышеописанных способов помог. Если да, выдохните и расслабьтесь. Если нет, возможно, поможет следующее.

Раз уж вы уже пробовали доступ через phpMyAdmin (судя по обсуждению в чате), который тоже не сработал, можно попробовать ещё один вариант – хоть это и не всегда помогает, но попытка не пытка.

Вариант 3:
Переименуйте папку plugins во что-то другое и снова попробуйте варианты 1 или 2.
Если получилось, войдите, верните папке имя plugins и включайте плагины по одному, проверяя работоспособность.
Если всё работает, значит, вы нашли решение, хоть и не ответ на вопрос "почему так произошло". Но это уже тема для отдельного исследования.

P.S. Проверяли ли вы functions.php? Возможно, там есть код, который стал причиной этой проблемы?!

5 апр. 2017 г. 04:36:12
Комментарии

Чарльз, спасибо за предложения, но ничего не сработало.

Daniel Daniel
5 апр. 2017 г. 06:18:58

Ребята, я добавил больше деталей. Дайте знать, если это поможет.

Daniel Daniel
5 апр. 2017 г. 06:57:30

Исходя из того, что мне пришлось сделать, add_action необходим и для Варианта 1. Итак: `add_action( 'init', 'wpa5784583_init' );

function wpa5784583_init(){ $user_id = 2; $password = "NEW_PWD"; wp_set_password( $password, $user_id ); } `

jbobbins jbobbins
11 мая 2020 г. 19:39:20
1

Вы можете изменить свой пароль через таблицу пользователей в базе данных. Перейдите в базу данных, откройте таблицу пользователей, найдите администратора и измените пароль с выбором md5, затем сохраните таблицу.

Я думаю, вам может помочь эта ссылка: Сброс пароля Wordpress

5 апр. 2017 г. 08:17:42
Комментарии

Абхишек, так мы и пришли к этому моменту, потому что прежний способ не работает.

Daniel Daniel
5 апр. 2017 г. 15:25:29
6
-1

Вы все были замечательными источниками информации. Теперь ответ. Проблема была в плагине Wordfence, который отказывался распознавать любого пользователя, созданного мной через таблицу wp_users. Если пользователь с правами администратора не создавал моего пользователя, у меня не было никакого способа войти. Пользователи, которых я создал, помечались как "Existing User No", но когда коллега с административными правами создал пользователя daniel, Wordfence распознал его как "Existing User Yes". Так что я не знаю, стоит ли злиться из-за использования этого плагина или радоваться, что он работает так хорошо.

Топ 5 неудачных попыток входа
Имя пользователя    Попытки входа  Существующий пользователь
media_dev   21  Нет
admin   9   Нет
earthquake2018  7   Нет
JosiahSchaefer  7   Да
daniel  5   Да
5 апр. 2017 г. 16:20:41
Комментарии

Рад слышать, что вы нашли причину, как упоминалось в варианте 3 моего ответа. Это всё равно странно, вы проверили, добавлялись ли вообще записи в базу данных (с активированным Wordfence), когда вы пытались создать другого администратора? Меня бы насторожил любой плагин, который ведёт себя подобным образом, по крайней мере, если такое поведение/ограничение не упомянуто в документации/чаво. (Я не знаком с подобными плагинами безопасности, поэтому не могу сказать точно) Если это нигде не указано, я бы сообщил разработчикам и попросил упомянуть это везде, потому что это даже мешает вам добавлять/редактировать базу данных. В любом случае, поздравляю.

Charles Charles
5 апр. 2017 г. 22:27:09

Значит, когда вы сказали "ни один вариант не сработал" в ответе @Charles, вы на самом деле имели в виду, что не стали пробовать вариант 3;)

Jebble Jebble
6 апр. 2017 г. 09:27:04

Это неверная интерпретация. Когда я сказал "ни один вариант", это включало и вариант 3 — я перепробовал все предложения как здесь, так и в других местах. Проблема была не в ответах, а в том, что я боролся с плагином под названием Wordfence, о чём даже не подозревал, так как не разрабатывал этот сайт.

Daniel Daniel
6 апр. 2017 г. 20:27:25

Даниэль. То, что говорит @JeffreyvonGrumbkow, означает, что проблема была бы решена, если бы вы выполнили Вариант 3 и отключили свои плагины. Это исключило бы wordfence из уравнения.

rudtek rudtek
11 апр. 2017 г. 08:17:26

@rudtek, ах, понятно, к сожалению, в тот момент я попытался деактивировать wordfence через wp-cli, но несмотря на то, что я был на сервере, wordfence отказался распознавать мои действия, и я не смог попасть в wp-admin, чтобы отключить плагины оттуда.

Daniel Daniel
11 апр. 2017 г. 08:25:42

По какой-то причине моей проблемой оказалось КЭШИРОВАНИЕ. Как только я указал WP Super Cache игнорировать 'resetpass', все заработало как надо.

AKKAweb AKKAweb
16 мар. 2018 г. 05:14:31
Показать остальные 1 комментариев