28.08.13, 14:11
0 комментарий
  DLE Хаки

Проверка занятого почтового ящика

Обнаружил ошибку в DLE при изменении email в профиле, на тот который уже есть в системе, MySQL вываливается с ошибкой о дубликации (ошибка 1062 в profile.php). Не понимаю почему разработчик не добавил простую проверку этой ситуации. Ну да ладно, исправим это сами.

Фикс основан на уже пофиксенном, от другой проблемы, решении от MSW.

Установка:
В файле /engine/modules/profile.php найти:

if ( !$send_mail_log AND $email != $row['email']) $mailchange = " email='{$email}',";
        else $mailchange = "";


Заменить на:

#****** FIX Subscribe Change EMail *** by MSW + RDN TEAM ******#
    if ( !$send_mail_log AND $email != $row['email']) {
    
            $checkdoblemail = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users where email='{$email}'" );
            if ($checkdoblemail['count']) {
            msgbox( $lang['all_err_1'], "Этот email уже используется другим участником!" );
            } else {
            $db->query("UPDATE ". PREFIX ."_subscribe SET email='{$email}' WHERE user_id='{$id}'");
            $mailchange = " email='{$email}',";
            }
     } else $mailchange = "";
#****** FIX Subscribe Change EMail *** by MSW + RDN TEAM ******#


Готово!

Версия DLE: 9.x-10.0
Автор: Grey

Напишите своё мнение