• Автор:

    Flesha
  • Добавлено:

    апр 20, 2014
  • Комментариев:

    1
  • Просмотров:

    1579

Хак Удалить свой аккаунт

Хак Удалить свой аккаунт

Данный хак дает возможность пользователю удалить свой аккаунт по какой либо причине, его новости и комментарии остаются не тронутыми, по желанию можете сами добавить запрос на их удаление.

Установка:

1. Выполнить запрос:
ALTER TABLE dle_users ADD `user_act` int(6) DEFAULT '0' NOT NULL


2. Открыть engine/modules/profile.php, найти:
$tpl->set( '{ip}', $_IP );


Выше вставить:
// user delete by qnut
if( $member_id['user_id'] == $row['user_id'] and $row['user_group'] >= 4) {
$user_delete = "<input type=\"checkbox\" name=\"user_delete\" id=\"user_delete\" value=\"yes\"> <label for=\"user_delete\">Удалить аккаунт</label>";
$id = $row['user_id'];
if($_POST['user_delete'] == "yes") {
$db->query("UPDATE " . USERPREFIX . "_users SET user_act='1' WHERE user_id = '{$id}'");
header( "Location: {$_SERVER['REQUEST_URI']}" );
} else
$stop .= "Удаление невозможно!";
if($row['user_act'] == "1" ) {
$tpl->load_template( 'user_delete.tpl' );
$allow_active_news = false;
@header( "HTTP/1.0 404 Not Found" );
if( $allow_userinfo and $doaction == "upduserinfo" ) {
$stop = false;
if( !$is_logged OR $_POST['dle_allow_hash'] == "" OR $_POST['dle_allow_hash'] != $dle_login_hash OR !$id) die( "Hacking attempt! User ID not valid" );
if ( $member_id['user_id'] != $id AND $member_id['user_group'] != 1 ) die( "Hacking attempt!" );
if($_POST['user_save'] == "yes") {
$db->query("UPDATE " . USERPREFIX . "_users SET user_act='0' WHERE user_id = '{$id}'");
header( "Location: {$_SERVER['REQUEST_URI']}" );
}
}
msgbox( $lang['all_err_1'], "В течении месяца ваш аккаунт будет полностью удален!" );
$tpl->copy_template = "<form method=\"post\" name=\"userinfo\" id=\"userinfo\" enctype=\"multipart/form-data\" action=\"{$link_profile}\">" . $tpl->copy_template . "
<input type=\"hidden\" name=\"doaction\" value=\"upduserinfo\" />
<input type=\"hidden\" name=\"id\" value=\"{$row['user_id']}\" />
<input type=\"hidden\" name=\"dle_allow_hash\" value=\"{$dle_login_hash}\" />
</form>";
$tpl->compile( 'content' );
$tpl->clear();
$lastd = round( ( time() - $GLOBALS['row']['lastdate']) / 86400);
$lastd_month = floor($lastd / 31);
if($lastd_month >= 1) {
if( $_REQUEST['dle_allow_hash'] == "" or $_REQUEST['dle_allow_hash'] != $dle_login_hash ) die( "Hacking attempt! User not found" );
if( !$id ) die( $lang['user_nouser'] );
if( ! $row['user_id'] ) die( "User not found" );
if (($member_id['user_group'] != 1 AND $row['user_group'] == 1 ) || ($is_login)) die( $lang['user_undel'] );
$db->query( "DELETE FROM " . USERPREFIX . "_pm WHERE user_from = '{$row['name']}' AND folder = 'outbox'" );
@unlink( ROOT_DIR . "/uploads/fotos/" . $row['foto'] );
$db->query( "delete FROM " . USERPREFIX . "_users WHERE user_id='$id'" );
$db->query( "delete FROM " . USERPREFIX . "_banned WHERE users_id='$id'" );
$db->query( "delete FROM " . USERPREFIX . "_pm WHERE user='$id'" );
$db->query( "INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('".$db->safesql($member_id['name'])."', '{$_TIME}', '{$_IP}', '65', '{$row['name']}')" );
clear_cache();
header( "Location: {$_SERVER['REQUEST_URI']}" );
} else
$stop .= "Удаление невозможно!";
}
$tpl->set( '{user_delete}', $user_delete );
} else {
$tpl->set( '{user_delete}', "" );
}
// user delete by qnut


3. Открыть templates/{THEME}/userinfo.tpl, найти:
[/not-logged]


Перед ним вставить:
{user_delete}


4. Создать файл user_delete.tpl, с содержимым:
	<div class="field-simple-checkbox"><input type="checkbox" name="user_save" id="user_save" value="yes"> <label for="user_save">Восстановить аккаунт</label></div>
<div class="buttons">
<button type="submit" class="button" name="submit">Восстановить</button>
<input name="submit" type="hidden" id="submit" value="submit" />
</div>


Дополнительно:
Пользователь может удалить себя только в том случае, если он не находится в группе 1, 2 или 3.

Обновления:
Теперь после удаления, пользователю дается 30 календарных дней, в течении которых он может отменить полное удаление анкеты и моментально восстановить ее работу.



Автор: Qnut
Версия DLE: 9.x - 10.2
Вернуться

Комментарии:


  1. apelisin → 23 апреля 2014 18:30
    Не, тут что то не то. Запрос сделал, таблица создалась, но при удалении аккаунта выдаёт ошибку

    The Error returned was:
    Unknown column 'user_act' in 'field list'

    SQL query:

    UPDATE dle_users SET user_act='1' WHERE user_id = '18'

    Версия движка 10.1

    Хз, где косяк тут.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.