Ранее уже был пост, как защитить админку в OpenCart 1.5 и 2 версий.
Теперь расскажу, как это сделать в 3-й версии, т.к там вывод идет через Twig. И в него нельзя вставить php код. Для защиты OpenCart 3 нужно редактировать контроллер /admin/controller/common/login.php, а не файл шаблона.
Коротко напомню, в сем суть.
Суть метода, в том, что просто по пути http://site.com/admin Вам выдаст 404 ошибку, а для входа нужно будете открыть страницу админки с определенным ключевым полем, которое будет передаваться в виде параметра ссылки. Итак, приступим.
- Делаем бекап файла /admin/controller/common/login.php
- Меняем начало файла, чтобы получилось:
<?php
if (isset($_GET['secretkey'])) {
$seckey = $_GET['secretkey'];
setcookie ("secretkey", $_GET['secretkey']);
} else if (isset($_COOKIE['secretkey'])) {
$seckey = $_COOKIE['secretkey'];
} else {
$seckey = '';
}
if ($seckey != 'secretkeyvalue') {
header("HTTP/1.0 404 Not Found");
exit;
} else { ?>
//содержимое /admin/controller/common/login.php
}
Теперь, чтобы зайти в админку нужно открыть сайт по ссылке
http://site.com/admin?secretkey=secretkeyvalue
Если не указывать - то выдаст 404 ошибку.
P.S также можете сделать, чтобы открывалась 404 страница Вашего шаблона (спасибо Роману за комментарий). Для этого замените:
header("HTTP/1.0 404 Not Found");
на
header( 'Refresh: 0; url=/index.php?route=error/not_found' );
Вы можете изменить ключ доступа, заменив "secretkeyvalue" на свое значение. Также Вы можете и изменить сам параметр, аналогично заменив "secretkey" на свое значение, но это далеко не обязательно, хватит и "secretkeyvalue".
[…] и для 1.5 версий и ранее. Для 3й версии используйте инструкцию в другом […]
Сорян Бро, возможно забыл добавить к тексту в конце // ?php } // так как без этого не будет работать в 3 опене
Ничего не забыл. Проверено на ocStore 3. Все работает
Здравствуйте, был бы признателен, если бы вы более подробно указали где именно и что именно менять (какое начало файла заменить).
Вставить между:
<?php
.и.....
class ControllerCommonLogin extends Controller { ?
Спасибо
В статье все написано, вставляете в начало файла, ничего заменять не нужно
ниче не понятно!
Я в самое начало вставляю что указано между <?php и ?>, далее оставляю старый код файла.
куда девать старое <?php ?
Нужна ли закрывающая в конце фигурка? Суда по указанному - нужна.
Ты мог бы не говорить что написано в статье. Это читали и коли спрашивают - значит непонятно!
Если вы правите код, то должно быть минимальное понятие как устроен PHP.
>> куда девать старое
>>Нужна ли закрывающая в конце фигурка?
Да, нужна, это окончание условия