В OpenCart время сессии определяет, как долго пользователь может оставаться авторизованным на сайте, не вводя логин и пароль повторно. По умолчанию, время сессии установлено на 24 минуты, что может быть недостаточным для пользователей, которые проводят на сайте длительное время. Поэтому, настройка времени сессии может улучшить пользовательский опыт и повысить безопасность данных.
Основная проблема короткой сессии это когда например, вы долго заполняете товар на сайте, прописываете все подробно, нажимаете сохранить, и в итоге ничего не сохраняется, а просто вылетает из админки.
Как изменить время сессии в OpenCart?
Настройка через файл php.ini
Если речь о настройках на сервере, открываем файл php.ini, и редактируем следующие параметры:
session.gc_maxlifetime = 86400
session.cookie_lifetime = 0
* где параметр gc_maxlifetime указывает на временя в секундах, после прошествии которого данные могут быть удалены; cookie_lifetime — время жизни файлов cookies; 86400 — 24 часа в секундах.
* если параметру gc_maxlifetime задать значение 0, действие сессий будет бесконечным. Это, как правило, не стоит делать — приведет к падению производительности и безопасности сервера.
После настройки параметров, необходимо перезагрузить сервер, являющийся интерпретатором PHP.
Настройка через файл .htaccess
В файл .htaccess вносим следующее:
php_value session.gc_maxlifetime 86400
php_value session.cookie_lifetime 0
* как можно заметить, параметры те же, что при настройки через php.ini.
Настройка через файл index.php
Открываем файл index.php, и в самом начале после тега <?php новой строкой добавляем следующий код
ini_set('session.gc_maxlifetime', 86400);
ini_set('session.cookie_lifetime', 0);
session_set_cookie_params(0);
Функции обязательно вызывать до открытия сесии (session_start).
Время сессии по-правильному надо изменять в настройках вашего сервера, но если вдруг у вас нет возможности/желания это сделать, или те способы не работают, и все равно сбрасывается авторизация при добавлении/редактировании товаров
1.в корне сайта создаем файл ping.php
2.В этот файл пишем
<?php
session_start();
$_SESSION['last_ping'] = time();
?>
3. открываем файл футера админ панели admin/view/template/common/footer(.tpl/.twig)
4.вставляем туда в самое начало, следующий код:
<script type="text/javascript">
function pingServer() {
$.ajax({ url: "/ping.php" });
}
$(document).ready(function() {
setInterval('pingServer()', 60000);
});
</script>
Это может помочь предотвратить потерю данных при работе в административной панели.
Итак, увеличение времени сессии в opencart — это простой способ улучшить опыт пользователей и защитить данные на вашем сайте. Измените время сессии в соответствии с вашими потребностями, но не забывайте о безопасности и производительности вашего сайта.