LEOnidUKG Опубліковано: 9 серпня 2021 Share Опубліковано: 9 серпня 2021 (змінено) /system/library/seopro.php public function __destruct() { if(!$this->config->get('config_seo_pro')) return; if ($this->config->get('config_seo_url_cache')){ $this->cache->set('seopro.keywords', $this->keywords); $this->cache->set('seopro.queries', $this->queries); $this->cache->set('seopro.cat_tree', $this->cat_tree); $this->cache->set('seopro.product_categories', $this->product_categories); } } Я не знаю какую цель преследовал автор, может быть он что-то забыл? Возможно надо вот так хотя бы: public function __destruct() { if(!$this->config->get('config_seo_pro')) return; if ($this->config->get('config_seo_url_cache') && !$this->cache->get('seopro.keywords')){ $this->cache->set('seopro.keywords', $this->keywords); $this->cache->set('seopro.queries', $this->queries); $this->cache->set('seopro.cat_tree', $this->cat_tree); $this->cache->set('seopro.product_categories', $this->product_categories); } } Змінено 9 серпня 2021 користувачем LEOnidUKG Надіслати Поділитися на інших сайтах More sharing options...
LEOnidUKG Опубліковано: 9 серпня 2021 Share Опубліковано: 9 серпня 2021 Ещё баг: /catalog/model/blog/article.php $article_data = $this->cache->get('article.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache); $article_data = []; if (!$article_data) { Кэш сбрасывается в любом случаи. Надо написать так: $article_data = $this->cache->get('article.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache); if (!$article_data) { $article_data = []; 1 Надіслати Поділитися на інших сайтах More sharing options...
zhu4koff Опубліковано: 10 серпня 2021 Share Опубліковано: 10 серпня 2021 @LEOnidUKG думаю лучше будет на https://github.com/ocStore/ocStore Pull requests добавить, возможно быстрее исправят Надіслати Поділитися на інших сайтах More sharing options...
buslikdrev Опубліковано: 10 серпня 2021 Share Опубліковано: 10 серпня 2021 У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 10 серпня 2021 Share Опубліковано: 10 серпня 2021 14 минут назад, buslikdrev сказал: У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Нет сессии, будет создана новая. И естественно будет сохранена. Вот тут есть у движка непродуманный момент, что сесиию вообще не стоит сохранять, если там все значения по умолчанию. У OC это валюта и язык по умолчанию. Они будут выставлены из конфига при новом обращении. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 10 серпня 2021 Share Опубліковано: 10 серпня 2021 7 часов назад, buslikdrev сказал: У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. 3 Надіслати Поділитися на інших сайтах More sharing options... Basbia Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 (змінено) Я так понял ocstore сыровата ещё, надо ещё допиливать?? Змінено 11 серпня 2021 користувачем Basbia Надіслати Поділитися на інших сайтах More sharing options... Webjokerst Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? {{ h3 }} ? Надіслати Поділитися на інших сайтах More sharing options... buslikdrev Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 15 часов назад, mpn2005 сказал: Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Спойлер $cookie_status_path = DIR_SESSION . $this->config->get('session_prefix') . md5($this->request->server['REMOTE_ADDR']); if (!isset($this->request->cookie['cookie_status'])) { setcookie('cookie_status', true, 0); if (!is_file($cookie_status_path)) { file_put_contents($cookie_status_path, false); } else { $this->cookie_status = false; return false; } } else { if (is_file($cookie_status_path)) { @unlink($cookie_status_path); } } Надіслати Поділитися на інших сайтах More sharing options... SergeTkach Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 2 часа назад, Webjokerst сказал: В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? Это где? Можете показать снимок, а то у меня такого нету. Надіслати Поділитися на інших сайтах More sharing options... Webjokerst Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Надіслати Поділитися на інших сайтах More sharing options... Alexuz Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Надіслати Поділитися на інших сайтах More sharing options... ramen Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 (змінено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Змінено 17 серпня 2021 користувачем ramen Надіслати Поділитися на інших сайтах More sharing options... Shureg Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencartforum.com/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Змінено 18 серпня 2021 користувачем AlektroNik Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Змінено 18 серпня 2021 користувачем zhu4koff 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 9 10 Вперед Сторінка 5 з 22 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 27 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.3.7 - Модифицированный OpenCart Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Синхронізація OLX.ua та Opencart Автор: sinco Обмеження доступу по IP (fipp) Автор: mirek Розширений функціонал бонусів Автор: IHOR1989 Мультимовні відгуки для товарів Автор: Flint2000 Paddle PRO - Модуль оплати для Opencart Автор: vsevolodkarpykov × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
mpn2005 Опубліковано: 10 серпня 2021 Share Опубліковано: 10 серпня 2021 14 минут назад, buslikdrev сказал: У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Нет сессии, будет создана новая. И естественно будет сохранена. Вот тут есть у движка непродуманный момент, что сесиию вообще не стоит сохранять, если там все значения по умолчанию. У OC это валюта и язык по умолчанию. Они будут выставлены из конфига при новом обращении. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 10 серпня 2021 Share Опубліковано: 10 серпня 2021 7 часов назад, buslikdrev сказал: У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. 3 Надіслати Поділитися на інших сайтах More sharing options... Basbia Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 (змінено) Я так понял ocstore сыровата ещё, надо ещё допиливать?? Змінено 11 серпня 2021 користувачем Basbia Надіслати Поділитися на інших сайтах More sharing options... Webjokerst Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? {{ h3 }} ? Надіслати Поділитися на інших сайтах More sharing options... buslikdrev Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 15 часов назад, mpn2005 сказал: Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Спойлер $cookie_status_path = DIR_SESSION . $this->config->get('session_prefix') . md5($this->request->server['REMOTE_ADDR']); if (!isset($this->request->cookie['cookie_status'])) { setcookie('cookie_status', true, 0); if (!is_file($cookie_status_path)) { file_put_contents($cookie_status_path, false); } else { $this->cookie_status = false; return false; } } else { if (is_file($cookie_status_path)) { @unlink($cookie_status_path); } } Надіслати Поділитися на інших сайтах More sharing options... SergeTkach Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 2 часа назад, Webjokerst сказал: В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? Это где? Можете показать снимок, а то у меня такого нету. Надіслати Поділитися на інших сайтах More sharing options... Webjokerst Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Надіслати Поділитися на інших сайтах More sharing options... Alexuz Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Надіслати Поділитися на інших сайтах More sharing options... ramen Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 (змінено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Змінено 17 серпня 2021 користувачем ramen Надіслати Поділитися на інших сайтах More sharing options... Shureg Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencartforum.com/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Змінено 18 серпня 2021 користувачем AlektroNik Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Змінено 18 серпня 2021 користувачем zhu4koff 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 9 10 Вперед Сторінка 5 з 22 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 27 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.3.7 - Модифицированный OpenCart Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Синхронізація OLX.ua та Opencart Автор: sinco Обмеження доступу по IP (fipp) Автор: mirek Розширений функціонал бонусів Автор: IHOR1989 Мультимовні відгуки для товарів Автор: Flint2000 Paddle PRO - Модуль оплати для Opencart Автор: vsevolodkarpykov × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
mpn2005 Опубліковано: 10 серпня 2021 Share Опубліковано: 10 серпня 2021 7 часов назад, buslikdrev сказал: У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. 3 Надіслати Поділитися на інших сайтах More sharing options... Basbia Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 (змінено) Я так понял ocstore сыровата ещё, надо ещё допиливать?? Змінено 11 серпня 2021 користувачем Basbia Надіслати Поділитися на інших сайтах More sharing options... Webjokerst Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? {{ h3 }} ? Надіслати Поділитися на інших сайтах More sharing options... buslikdrev Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 15 часов назад, mpn2005 сказал: Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Спойлер $cookie_status_path = DIR_SESSION . $this->config->get('session_prefix') . md5($this->request->server['REMOTE_ADDR']); if (!isset($this->request->cookie['cookie_status'])) { setcookie('cookie_status', true, 0); if (!is_file($cookie_status_path)) { file_put_contents($cookie_status_path, false); } else { $this->cookie_status = false; return false; } } else { if (is_file($cookie_status_path)) { @unlink($cookie_status_path); } } Надіслати Поділитися на інших сайтах More sharing options... SergeTkach Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 2 часа назад, Webjokerst сказал: В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? Это где? Можете показать снимок, а то у меня такого нету. Надіслати Поділитися на інших сайтах More sharing options... Webjokerst Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Надіслати Поділитися на інших сайтах More sharing options... Alexuz Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Надіслати Поділитися на інших сайтах More sharing options... ramen Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 (змінено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Змінено 17 серпня 2021 користувачем ramen Надіслати Поділитися на інших сайтах More sharing options... Shureg Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencartforum.com/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Змінено 18 серпня 2021 користувачем AlektroNik Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Змінено 18 серпня 2021 користувачем zhu4koff 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 9 10 Вперед Сторінка 5 з 22 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 27 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.3.7 - Модифицированный OpenCart Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Синхронізація OLX.ua та Opencart Автор: sinco Обмеження доступу по IP (fipp) Автор: mirek Розширений функціонал бонусів Автор: IHOR1989 Мультимовні відгуки для товарів Автор: Flint2000 Paddle PRO - Модуль оплати для Opencart Автор: vsevolodkarpykov × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Basbia Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 (змінено) Я так понял ocstore сыровата ещё, надо ещё допиливать?? Змінено 11 серпня 2021 користувачем Basbia Надіслати Поділитися на інших сайтах More sharing options...
Webjokerst Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? {{ h3 }} ? Надіслати Поділитися на інших сайтах More sharing options...
buslikdrev Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 15 часов назад, mpn2005 сказал: Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Спойлер $cookie_status_path = DIR_SESSION . $this->config->get('session_prefix') . md5($this->request->server['REMOTE_ADDR']); if (!isset($this->request->cookie['cookie_status'])) { setcookie('cookie_status', true, 0); if (!is_file($cookie_status_path)) { file_put_contents($cookie_status_path, false); } else { $this->cookie_status = false; return false; } } else { if (is_file($cookie_status_path)) { @unlink($cookie_status_path); } } Надіслати Поділитися на інших сайтах More sharing options... SergeTkach Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 2 часа назад, Webjokerst сказал: В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? Это где? Можете показать снимок, а то у меня такого нету. Надіслати Поділитися на інших сайтах More sharing options... Webjokerst Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Надіслати Поділитися на інших сайтах More sharing options... Alexuz Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Надіслати Поділитися на інших сайтах More sharing options... ramen Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 (змінено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Змінено 17 серпня 2021 користувачем ramen Надіслати Поділитися на інших сайтах More sharing options... Shureg Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencartforum.com/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Змінено 18 серпня 2021 користувачем AlektroNik Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Змінено 18 серпня 2021 користувачем zhu4koff 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 9 10 Вперед Сторінка 5 з 22 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 27 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.3.7 - Модифицированный OpenCart Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Синхронізація OLX.ua та Opencart Автор: sinco Обмеження доступу по IP (fipp) Автор: mirek Розширений функціонал бонусів Автор: IHOR1989 Мультимовні відгуки для товарів Автор: Flint2000 Paddle PRO - Модуль оплати для Opencart Автор: vsevolodkarpykov × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
SergeTkach Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 2 часа назад, Webjokerst сказал: В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? Это где? Можете показать снимок, а то у меня такого нету. Надіслати Поділитися на інших сайтах More sharing options... Webjokerst Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Надіслати Поділитися на інших сайтах More sharing options... Alexuz Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Надіслати Поділитися на інших сайтах More sharing options... ramen Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 (змінено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Змінено 17 серпня 2021 користувачем ramen Надіслати Поділитися на інших сайтах More sharing options... Shureg Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencartforum.com/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Змінено 18 серпня 2021 користувачем AlektroNik Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Змінено 18 серпня 2021 користувачем zhu4koff 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 9 10 Вперед Сторінка 5 з 22 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 27 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.3.7 - Модифицированный OpenCart Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Синхронізація OLX.ua та Opencart Автор: sinco Обмеження доступу по IP (fipp) Автор: mirek Розширений функціонал бонусів Автор: IHOR1989 Мультимовні відгуки для товарів Автор: Flint2000 Paddle PRO - Модуль оплати для Opencart Автор: vsevolodkarpykov
Webjokerst Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Надіслати Поділитися на інших сайтах More sharing options...
mpn2005 Опубліковано: 11 серпня 2021 Share Опубліковано: 11 серпня 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Надіслати Поділитися на інших сайтах More sharing options... kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Надіслати Поділитися на інших сайтах More sharing options... Alexuz Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Надіслати Поділитися на інших сайтах More sharing options... ramen Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 (змінено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Змінено 17 серпня 2021 користувачем ramen Надіслати Поділитися на інших сайтах More sharing options... Shureg Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencartforum.com/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Змінено 18 серпня 2021 користувачем AlektroNik Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Змінено 18 серпня 2021 користувачем zhu4koff 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 9 10 Вперед Сторінка 5 з 22 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 27 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.3.7 - Модифицированный OpenCart
kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Надіслати Поділитися на інших сайтах More sharing options...
AlektroNik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Надіслати Поділитися на інших сайтах More sharing options...
kamrik Опубліковано: 12 серпня 2021 Share Опубліковано: 12 серпня 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Надіслати Поділитися на інших сайтах More sharing options...
Alexuz Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Надіслати Поділитися на інших сайтах More sharing options...
zhu4koff Опубліковано: 16 серпня 2021 Share Опубліковано: 16 серпня 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Надіслати Поділитися на інших сайтах More sharing options...
ramen Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 (змінено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Змінено 17 серпня 2021 користувачем ramen Надіслати Поділитися на інших сайтах More sharing options...
Shureg Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Надіслати Поділитися на інших сайтах More sharing options...
AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Надіслати Поділитися на інших сайтах More sharing options...
AlektroNik Опубліковано: 17 серпня 2021 Share Опубліковано: 17 серпня 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencartforum.com/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Надіслати Поділитися на інших сайтах More sharing options...
mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Надіслати Поділитися на інших сайтах More sharing options... mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Змінено 18 серпня 2021 користувачем AlektroNik Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Змінено 18 серпня 2021 користувачем zhu4koff 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 9 10 Вперед Сторінка 5 з 22 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 27 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
mpn2005 Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Надіслати Поділитися на інших сайтах More sharing options... AlektroNik Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Змінено 18 серпня 2021 користувачем AlektroNik Надіслати Поділитися на інших сайтах More sharing options... zhu4koff Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Змінено 18 серпня 2021 користувачем zhu4koff 1 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 9 10 Вперед Сторінка 5 з 22 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 27
AlektroNik Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Змінено 18 серпня 2021 користувачем AlektroNik Надіслати Поділитися на інших сайтах More sharing options...
zhu4koff Опубліковано: 18 серпня 2021 Share Опубліковано: 18 серпня 2021 (змінено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Змінено 18 серпня 2021 користувачем zhu4koff 1 Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts