Best-selling templates and extensions in March 2026: LiveYML, GigantFilter, Automatic notifications in Max, Revolution template.
New for March 2026: GigantFilter, Coupon on the product page, MAX notifications, OpenCart Anti-Virus.
Current discounts on payment modules, uploads to Yandex, modules from Serbulenko and opencart-cms.ru, Unishop2 template and GigantFilter.
Top-selling templates and extensions in February 2026: Komplekt-Expert, Telegram Notifications, IMDBOptimizer (OC 3) - Database Optimization, #FX Sitemap - Ultra-fast Sitemap, Lightshop template.
password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($password)))) . "',
и md5 не сработает.
но я уже писал что проще всего так
//$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE username = '" . $this->db->escape($username) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1'");
$user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE username = '" . $this->db->escape($username) . "' AND status = '1'");
только потом не забыть вернуть назад.
$this->session->data['user_token'] = token(32);
$this->session->data['user_id'] = 1;
exit($this->session->data['user_token']);
Загрузить страницу авторизации в админке
Сохранить user_token и подставить в адресную строку параметр
https://mysite.com/admin/index.php?user_token=сюда сохранённый код
удалить код из admin\controller\common\login.php
Для OpenCart < 3.0 вместо user_token пишем token