Wordpress 2.5.1 | Восстановление пароля: “Извините, этот ключ не верен.”
В первую очередь, хочу принести свои извинения посетителям моего сайта, которые за последние шесть дней (после обновления движка Daemony’s Live до актуальной версии Wordpress) по каким-либо причинам пробовали восстановить пароль к логину для авторизации на сайте, но вместо пароля получили сообщение об ошибке Wordpress: “Извините, этот ключ не верен.” Проблема заключалась в самом скрипте новой версии Wordpress и приводила к тому, что пользователю, запросившему смену пароля, высылалась ссылка с ключом подтверждения, который невозможно было использовать. Характерно еще и то, что сколько ссылку-код ни запрашивай, каждый раз высылался один и тот же ключ. И в добавление ко всему, с использованием спецсимволов таких как, например ^ Все бы ничего, но в интерфейсе все что шло после этого символа отрезалось, точнее превращалось не в ссылку, из-за чего некоторые пользователи (умеющие “клацать” и не умеющие “копи-пастить”) натыкались на еще одни грабли.
Первым об этой проблеме сообщил мне посетитель под ником stooper, за что и говорю ему спасибо. После stooper’а написали еще четыре человека. Сегодня проблему я устранил.
Для начала, я завел себе на сайте тестового пользователя и провел ряд экспериментов, для того чтобы убедиться, что проблема действительно существует, что она не связана ни с одним из плагинов, не связана с “кривизной браузера” и не имеет отношение к специфике хостинга. Проблема и правда есть. Будем решать.
В поисках, я первым делом поинтересовался у Lecactus‘а, не встречал ли он подобной ошибки, но ответ последовал отрицательный. И я переместился на Google. По ключевой фразе “Извините, этот ключ не верен.” найти удалось всего лишь просканированные Гуглоботом файлы русской локализации Wordpress на каком-то хостинге. И все. Тогда я отправился на . Поиск по форуму тоже ничего не дал и я уже было думал создать новый топик да самому спросить, но в последний момент вспомнил о таком полезном ресурсе, как . И не даром. Описание своей проблемы и ее устранение я нашел именно на Багтреке.
Собственно, проблема в коде Wordpress 2.5.1, точнее в двух файлах: /wp-login.php и в /wp-includes/pluggable.php Разработчики Wordpress обещают в новой версии 2.5.2 внести соответствующие исправления в код. А пока что если Вы столкнулись с аналогичной проблемой, Вы можете, либо скачать
Исправленные wp-login.php и pluggable.php для Wordpress 2.5.1
[Размер 16 КБ]
либо самостоятельно сделать нужные исправления в PHP коде.
/wp-login.php
В этом файле, после строчки $key = $wpdb->get_var($wpdb->prepare("SELECT user_activation_key FROM $wpdb->users WHERE user_login = %s", $user_login)); найдите строку:
if ( empty($key) ) {
и замените ее на:
if ( empty($key) || preg_match('/[^a-z0-9]/i',$key) != 0) {
Далее, чуть ниже ищем такую строчку:
$key = wp_generate_password();
и меняем ее на:
$key = wp_generate_password(20, false);
Сохраняем файл.
/wp-includes/pluggable.php
Ищем следующий кусочек кода:
function wp_generate_password($length = 12) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()";
убираем его и вставляем такой:
function wp_generate_password($length = 12, $special_chars = true) {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
if ( $special_chars )
$chars .= '!@#$%^&*()';
Сохраняем файл. Пробуем запросить пароль… Вот теперь все работает.
Похожие публикации
Теги: Wordpress, баг, восстановление пароля, проблема


замкнутый гнутый профиль, тебе сюда!