Бывают ситуации когда забыл пароль от ACP форума, или банально ввел символ случайно и тебе не дает залогиниться, но при этом есть доступ к FTP или Панели Управления веб сервером.
В следующем коде используются функции для смены пароля предоставляемые самим ips.
Перед началом важно:
Вы не должны хранить этот файл у себя на сервере! Оставляя этот файл у себя на сервере, ВЫ подвергаете свое сообщество КРИТИЧЕСКОЙ опасности
После смены пароля НЕМЕДЛЕННО удалите файл с сервера и смените пароль через ACP
Что нужно сделать для смены пароля:
Создаем файл с нужным названием и расширением .php
Например: backdoor.php
Открываем файл и вставляем в него код (ПРЕДОСТАВЛЕН В САМОМ КОНЦЕ СООБЩЕНИЯ)
Сохраняем файл
Загружаем созданный файл (например через FTP или менеджер файлов Панели Управления Веб сервером) в корневую директорию форума (там где у вас находится файл init.php)
В адресной строке набираем:
https://название_сайта.com/название_файла.php?id=ид_пользователя&pass=новый_пароль
Например: https://site.com/backdoor.php?id=1&pass=123
Где взять ид_пользователя? Например перейти в профиль пользователя на форуме, в адресной строке будет например: https://site.com/profile/1-admin/ (Где 1 - это ид_пользователя)
Переходим
Если все прошло успешно вы увидите примерно следующую надпись:
Password for user [ member_id: 1 member_name: ADMIN ] changed!
Код:
<?php
require_once 'init.php';
if ( \IPS\Request::i()->id AND \IPS\Request::i()->pass )
{
try
{
$id = intval( \IPS\Request::i()->id );
$newPass = \IPS\Request::i()->pass;
$member = \IPS\Member::load( $id );
$changed = $member->changePassword( $newPass );
if ( !$changed and \IPS\Login\Handler::findMethod( 'IPS\Login\Handler\Standard' ) )
{
$member->setLocalPassword( $newPass );
$member->save();
}
$member->invalidateSessionsAndLogins( TRUE, \IPS\Session::i()->id );
$message = 'Password for user: [ member_id: ' . $id . ' member_name: ' . $member->name . ' ] changed!';
}
catch ( \OutOfRangeException $e )
{
$message = 'Failed to load user!';
}
}
else
{
$message = 'No data';
}
echo $message;
exit;