Неработает восстановление пароля wordpress

Запись создана июня 12, 2008

В версии 2.5.1 популярного блогового движка WordPress появился неприятный баз с восстановлением паролей.

Симптомы: при запросе восстановления пароля приходит письмо с ссылкой подтверждения (ссылка всегда одна и таже), при клике на ссылку WordPress ругается «Извините, этот ключ неверен.»

Resolution: Вносим правки в два файла wp-login.php и /wp-includes/pluggable.php

$key = $wpdb->get_var($wpdb->prepare("SELECT user_activation_key FROM $wpdb->users WHERE user_login = %s", $user_login));
 if ( empty($key) ) {

Меняем на:

$key = $wpdb->get_var($wpdb->prepare("SELECT user_activation_key FROM $wpdb->users WHERE user_login = %s", $user_login));
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 .= '!@#$%^&*()';

Random Posts

» Запись из раздела wordpress | 4 комментариев

Комментарии

4 ответов to “Неработает восстановление пароля wordpress”

  1. Jeurey on июня 17, 2008 4:54

    $wpdb->get_var($wpdb->prepare(«SELECT user_activation_key FROM $wpdb->users WHERE user_login = %s», $user_login));

    Сама идея включения переменной и последующего sprintf в строку является бредовой… В багрепорт чтоли отправить :)

  2. Leteatbee on августа 12, 2008 16:41

    В описании ошибка, при совершении всех замен в файле wp-login ошибка в строке 97
    do_action(‘retrieve_password_key’, $user_login, $key);

  3. admin on августа 12, 2008 18:58

    нет никакой ошибки, лично проверял на этом блоге.

  4. ws256 on апреля 19, 2011 16:43

    фигасе бага, у меня версия 3.1.1 и тоже такая фигня, но не увсех пользователей, не совсем понял причину, но надо лечить. А кроме правки файлов движка нету средств? Может плагин такой сделали уже?

LCD телевизоры по спец ценам - купить жк телевизор. Продажа телевизоров, плазмы, LCD.

Автосервис Mazda "РОЛЬФ Лахта". Лучший выбор автозапчастей Mazda в Санкт-Петербурге.


Ответить




*

Anti-Spam Image