Важная правка на сайт – нужно срочно поменять данные в шапке о смене адреса конференции. Конференция уже завтра. Клиент не на связи. Проект важный для компании. Правка на 10 минут, но не подходят доступы к админ-панели. Перепробованы все сохраненные пароли. Согласитесь, у каждого разработчика бывают в процессе работы подобные неожиданные обстоятельства.
В вопросе восстановления доступа к «админке» важно использовать проверенные скрипты, чтобы не нарушить работу сайта и, например, не перезаписать пароль другого пользователя. Мы регулярно сталкиваемся с такими ситуациями и данной статьёй поможем с быстрым решением проблемы.
Для систематизации информации мы подготовили готовый код, который регулярно испольузем сами. Мы сориентируем, как создать пользователя или «залогиниться» под уже существующим, имея ограниченный набор данных – Доступ к панели хостинга, доступ к ISPManager, FTP или доступ к SSH-консоли. Представлены коды для всех актуальных CMS в 2023 году: Как для популярных Bitrix и WordPress, так и для более экзотической, но до сих пор встречающейся CMS ModX. Каждый фрагмент кода сопроводим подробными комментариями.
Восстановление доступа к админ-панели сайта на Bitrix
Начнём обзор программного кода для получения доступа с самой популярной в 2023-2024 году системе управления сайтом в странах СНГ: 1с-Битрикс.
Как создать администратора Bitrix через PHP-скрипт
По SSH или через FTP или через «Файловый менеджер» в панели хостинга переходим в корневую директорию сайта, часто это /home/bitrix/www/ и создаём файл add-admin-bitrix.php со следующим содержимым:
<?
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php');
$newlogin = 'new_admin_username';
$newemail = 'new_admin_email@webit.ru';
$newpassword = 'new_admin_password';
$group = array(1);
$user = new CUser;
$arFields = array(
"EMAIL" => $newemail,
"LOGIN" => $newlogin,
"LID" => "ru",
"ACTIVE" => "Y",
"GROUP_ID" => $group,
"PASSWORD" => $newpassword,
"CONFIRM_PASSWORD" => $newpassword
);
$ID = $user->Add($arFields);
if (intval($ID) > 0) {
echo 'Администратор создан';
} else {
echo $user->LAST_ERROR;
}
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php");
В указанном коде константы:
- new_admin_username
- new_admin_password
- new_admin_email@webit.ru
являются примерами логина, e-mail и пароля нового администратора, которые лучше заменить на ваши данные.
После создания файла заходим через браузер по адресу:
https://<домен_сайта>.com/add-admin-bitrix.php
В случае успешной работы увидим «шапку сайта» и надпись «Администратор создан».
Далее, для авторизации вводим новый логин с паролем по ссылке:
https://<домен_сайта>.com/bitrix/
Примечание: Данный код не работает, если сайт находится в «режиме техобслуживания»
Как авторизоваться в CMS Bitrix с правами администратора через PHP-код без логина и пароля
Шаг 1 – Переходим в корневую директорию сайта, создаём файл authorizate-bitrix.php со следующим содержимым:
<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
global $USER;
$USER->Authorize(1);
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php");
Логика работы скрипта – авторизация пользователя с ID = 1. Обычно это ID администратора, в теории администратор с ID = 1 бывает удалён, автор данной статьи в своей практике не помнит ни одного такого случая.
Шаг 2 – Сохраняем файл
Шаг 3 – Заходим по адресу
https://<домен_сайта>.com/authorizate-bitrix.php
Шаг 4 – Переходим на главную страницу сайта и видим, что мы успешно авторизовались – в верхней части страницы появилась админ-панель битрикса.
Шаг 5 – Удаляем файл authorizate-bitrix.php во избежании его использования третьими лицами.
Восстановление доступа к админ-панели сайта на WordPress
Как создать администратора WordPress через PHP-скрипт
Шаг 1 – Находим корневую папку сайта на сервере. Для примера это будет /home/website.host/
Шаг 2 – Узнаём название шаблона сайта – открываем главную страницу, просматриваем HTML-код страницы, ищем строку /wp-content/themes/ – фраза после themes до следующего слеша – будет нужное нам название темы.
Шаг 3 – Комбинируем данные из шагов 1 и 2 – переходим в папку «шаблона» по адресу /home/website.host/wp-content/themes/website-theme/
Шаг 4 – Открываем файл functions.php и в конце добавляем следующие строки:
function wpb_admin_account()
{
$user = 'new_admin_username';
$pass = 'new_admin_password';
$email = 'new_admin_email@webit.ru';
if (!username_exists($user) && !email_exists($email)) {
$user_id = wp_create_user($user, $pass, $email);
$user = new WP_User($user_id);
$user->set_role('administrator');
echo 'Администратор создан';
}
}
add_action('init', 'wpb_admin_account');
Шаг 5 – Заходим на сайт через браузер – функция выполнится и в теле страницы появится надпись «Администратор создан».
Шаг 6 – Заходим по адресу https://website.host/wp-admin/ , вводим новые логин с паролем и оказываемся авторизованными в админке.
Шаг 7 – Удаляем добавленные в шаге 4 строки из файла functions.php
Как авторизоваться в CMS WordPress через PHP-код без логина и пароля
Для того, чтобы авторизоваться в «Вордпрессе» без создания нового администратора, используем следующий код, который также добавляем в functions.php темы:
If($_GET['auth1']=='auth2'){
$args = array(
'role' => 'administrator',
'orderby' => 'user_nicename',
'order' => 'ASC'
);
$users = get_users( $args );
foreach ( $users as $user ) {
wp_set_current_user($user->ID);
wp_set_auth_cookie($user->ID, true, false );
echo 'Авторизация успешная.';
exit();
}
}
Переходим по ссылке:
https://<домен_сайта>.com/?auth1=auth2
Логика следующая – узнаём ID пользователя с правами администратора, и авторизовываем браузер с данным User ID.
После авторизации в целях безопасности рекомендуется удалить данные строчки из файла functions.php.
Восстановление доступа к админ-панели сайта на ModX
Несмотря на то, что CMS ModX имеет ограниченный функционал и не настолько интуитивно понятна – система активно используется, работа с клиентскими сайтами на ModX – не редкость в 2023-2024 году.
Как создать администратора ModX через PHP-скрипт
Для сайта на ModX действуем аналогичным образом – по FTP/SSH/Панель хостинга создаём в корневой директории файл add-admin-modx.php со следующим содержимым:
<?php
$username = 'new_admin_username';
$password = 'new_admin_password';
$email = 'new_admin_email@webit.ru';
$sudo = true;
require 'config.core.php';
require MODX_CORE_PATH . 'model/modx/modx.class.php';
$modx = new modX();
if ((!$modx) || (!$modx instanceof modX)) {
echo 'Could not create MODX class';
}
$modx->initialize('mgr');
$modx->getService('error', 'error.modError', '', '');
$user = $modx->newObject('modUser');
$profile = $modx->newObject('modUserProfile');
if ($user && $profile) {
$user->set('username', $username);
$user->set('password', $password);
$profile->set('blocked', 0);
$profile->set('blockeduntil', 0);
$profile->set('blockedafter', 0);
$profile->set('email', $email);
$user->addOne($profile);
$user->setSudo($sudo);
if ($user->save()) {
echo 'Пользователь успешно создан';
$user->joinGroup('Administrator');
} else {
echo 'Не получилось создать указанного пользователя';
}
} else {
echo 'Не получилось создать пользователя';
}
Фразы:
- new_admin_username
- new_admin_password
- new_admin_email@webit.ru
в коде тестовые, константы перед запуском скрипта следует заменить на ваши данные (логин, e-mail и пароль)
Затем заходим по адресу https://website.host/add-admin-modx.php – в случае успешной работы скрипта увидим сообщение «Пользователь успешно создан».
Переходим в админ-панель https://website.host/manager/ вводим данные из вышеуказанного скрипта – и видим, что мы успешно авторизовались.
Доступ к админ-панели восстановлен
Наш небольшой архив скриптов для получения доступа к админ-панели подошёл к концу. Данным кодом мы сами пользуемся каждую неделю и каждый из них неоднократно помогал в самых экстремальных ситуациях – когда правка нужна «сейчас», а по всем известным доступам авторизация не удавалась.
Теперь вы знаете, как быстро и «в 2 клика» авторизоваться на сайтах всех популярных современных платформах: Bitrix, WordPress, Modx.
Существуют также способы смены пароля и добавления пользователя, имея доступ к MySQL-базе – данные способы в статье не рассмотрены по причине того, что если существует доступ к PhpMyAdmin или Adminer – в 99% случаев это означает, что существует доступ к файловой системе, следовательно «экологичней» использовать вышенаписанные скрипты, т.к. при «грубом» вмешательстве в базу данных высока вероятность нарушить корректную работу веб-сайта.
Рекомендуем добавить данную страницу в закладки, чтобы сэкономить время, когда в следующий раз понадобится авторизоваться без пароля – актуальный и проверенный код находится в одном месте – на данной странице.
В расположенной ниже форме обратной связи можно задать вопросы нашим экспертам или написать комментарий с пожеланиями для будущих материалов, или поделиться своим опытом успешной авторизации на сайтах.
Авторизация успешная!