Довге зберігання кошика в інтернет-магазині / ~#root -i Довге зберігання кошика в інтернет-магазині / ~#root -i Довге зберігання кошика в інтернет-магазині / ~#root -i Довге зберігання кошика в інтернет-магазині / ~#root -i Довге зберігання кошика в інтернет-магазині / ~#root -i Довге зберігання кошика в інтернет-магазині / ~#root -i Довге зберігання кошика в інтернет-магазині / ~#root -i Довге зберігання кошика в інтернет-магазині / ~#root -i
  • RU
  • UA
  • EN
  • Створити інтернет-магазин
  • Документація
  • Блог
    • Unix-подібні ОС
    • Php
    • MySQL
    • JavaScript
    • Менеджери пакетів
    • Docker
    • Seo
  • Допоміжні сервіси
    • Короткі посилання
    • Oбмін переглядами YouTube
  • Вхід
  • Реєстрація
  • Головна
  • Php
  • Довге зберігання кошика в інтернет-магазині

Довге зберігання кошика в інтернет-магазині

Всі варіанти зберігання будуть правильними, але у кожного є свої плюси та мінуси, а також можливість і неможливість використання у певні моменти.

Розглянемо кожен з варіантів :

1. В основі. Зберігання даних про кошик у базі допускається за наявності унікального ідентифікатора клієнта. Часто такий спосіб використовується для авторизованих користувачів, що увійшли до свого облікового запису.

Цей спосіб має можливість зберігати кошик користувача з будь-яким інтервалом часу. Але цей спосіб не годиться, якщо користувач не авторизований.

2. У Cookie . Цей спосіб зберігання також можливий у використанні довгострокового зберігання кошика. Його плюсом є те, що кукі можна використовувати як для зареєстрованого користувача, так і для не залогіненого.

Мінус такого способу в пам'яті , яка виділена для одного осередку з кук , а саме 4кб . Але ця цифра може відрізнятись залежно від браузера – це ще один мінус.

Якщо магазин оптовий і в кошик може лягти не один десяток товарів, до того ж якщо потрібно зберігати велику кількість інформації, то цей спосіб не підійде.

Можна якось будувати "велосипед" по розподілу кук. Наприклад одна кука - одна позиція товару, а потім якось їх відловлювати і формувати цілий кошик, але це не варто .

3. У сесії . На мою думку, цей спосіб не практичний. За замовчуванням сервер тримає сесію клієнта 1440 секунд , якщо за цей час клієнт закрив браузер і не встиг оформити замовлення, то весь набраний кошик буде втрачено.

Знову ж таки, можна винаходити щось понад складне для продовження життя сесії, збільшувати її зберігання на сервері. Але це загрожує наслідками. Продовжуючи життя сесії ми обрізаємо частоту запуску збирача сміття, тим самим роблячи на сервер зберігання непотрібної інформації.

Оптимальне довгострокове зберігання кошика :

На мій досвід, найоптимальнішим способом зберігання кошика стане використання комбінації " база+cookie ". Така зв'язка працюватиме з усіма плюсами кук та бази.

1. У куках створюємо унікальний ідентифікатор з потрібним часом зберігання, наприклад місяць.

2. В основі створюємо таблицю з полями: ідентифікатора (описаний вище), id користувача (якщо був авторизований), часу останнього оновлення та самих даних про кошик.

3. Пишемо мінімальний контролер, що працює з цим все.

Я покажу наочно, як реалізовувати це на вашому сайті вирішите самі.

Допустимо така структура таблиці :

CREATE TABLE `cart_table` (
`cart_key` varchar(50) CHARACTER SET utf8 NOT NULL,
`user_id` int(11) NOT NULL,
`last_update` int(11) NOT NULL,
`cart_data` text CHARACTER SET utf8 NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Схематичний код роботи :

<?php
/**
* Функція витягує з таблиці кошика дані
*/
function getCartData () {
    /*Запускаємо initCartCookie()*/
    $key = initCartCookie();

    /*За ключом шукаємо запис cart_key*/
    /*Далі потрібна інформація з обробки*/
}

/**
* Функція записує дані в кошик
*/
function setCartData () {
    /*Запускаємо initCartCookie()*/
    $key = initCartCookie();
    
    /*За ключом шукаємо запис cart_key, якщо ні то створюємо*/
    /*Далі потрібна інфа з обробки*/
}

/**
* Якщо ідентифікатор вже є, повертаємо його, якщо ні, створюємо та повертаємо
*/
function initCartCookie() {
    if (isset($_COOKIE['cart_key']) && trim($_COOKIE['cart_key'])) {
        return strip_tags(trim($_COOKIE['cart_key']));
    } else {
        $key = base64_encode(time() . '-' . rand(10,99). '-' . rand(10,99));
        setcookie("cart_key", $key, (time()+(86400 * 30)));
        return $key;
    }
}

У результаті доведеться вигадати логіку роботи кошика при авторизації користувача, ми маємо велике зберігання даних в базі за ключом куки (унікальний ключ), ми маємо великий термін зберігання кошика. Я вважаю, що комбінація "база+кукі" є вірним варіантом зберігання кошика, але все залежить, звичайно ж, від логіки кожного сайту.

26 Січня 19
1711
0

Відгуки

Ім'я
Електронна пошта
Рейтинг
Відгук

Інші статті з категорії

25 Квітня 2022

Створити та завантажити CSV на PHP

Розглянемо можливість швидкого створення CSV файлу з автоматичним скачуванням файлу. Розглянемо формування, роздільники та header для можливості завантажити файл.

19 Червня 2019

Шаблони ImageCMS 4.10-4.12.1

Останні шаблони від ImageCMS 4.12, для завантаження потрібна авторизація.

17 Січня 2019

Ключ-ліцензія для ImageCMS 4.9-4.12.1 Pro та Pre

Створення ключа для imageCMS 4.9-4.12.1 Pro та Pre. Для отримання авторизуватися.

07 Грудня 2018

$_SERVER[DOCUMENT_ROOT] у CLI або Cron

При запуску скрипта з консолі немає DOCUMENT_ROOT в $_SERVER. Спробуємо обійти це своїми шляхами, відловити директорію файлу.

31 Жовтня 2018

Аналіз навантажених частин Php коду за допомогою xhprof

Після розробки будь-якого інструменту на PHP стає питання, наскільки створений код ресурсний і які елементи він зачіпає ще. Розглянемо установку xhprof, налаштування та розглянемо способи роботи з xhprof.

18 Липня 2018

Угруповання умов у запиті ORM Propel (condition, combine)

Розберемо можливість об'єднання умов у запиті груп у Propel. Розглянемо приклад фільтрації по полях за допомогою -> condition () і -> combine ().

14 Червня 2018

Авторизація 1С на сайті PHP_AUTH_USER на CentOS apache

Зіткнувся із проблемою авторизації 1с на сайті. Сервер чомусь не приймав від неї параметр PHP_AUTH_USER і PHP_AUTH_PW. Розглянемо докладніше рішення та обхід даних параметрів $_SERVER .

21 Травня 2018

Підключаємо не оголошену таблицю в Propel або Join Custom Table Propel

Метою статті стало приєднання (join) не оголошеної у схемі (schema.xml) таблиці у propel2. Мабуть, рідкісний випадок або просто недостатньо документації по даній Propel ORM.

Категорії

  • Unix-подібні ОС
  • Php
  • MySQL
  • JavaScript
  • Менеджери пакетів
  • Docker
  • Seo

Останні коментарі

Добрый день, Сергей. Я на более новых версиях блют...
root-i
23.02.23
Пробовал на transmart колонке. Ничего из перечисле...
Сергей
20.02.23
HenryMit, может быть
root-i
07.02.23
Неофрейдизм — это… Определение, принципы, представ...
HenryMit
07.02.23

Ділюсь інформацією у якій я вимагав допомоги та розбираючись витрачав багато часу. Якщо інформація допомогла хоча б одній людині, то цей сайт створений не дарма.

Подяка на продовження роботи сайту:
Контакти

Telegram Viber Mail

Пошук по сайту

  • Вхід
  • Реєстрація

Сайт працює на chmod -R