Сохранение данных неаутентифицированного пользователя?
В общем, есть нечто похожее на интернет-магазин, в виде сайта, адаптированного под моб. девайсы.
Пользователь может "шариться" по каталогу, добавлять товары в корзину, после чего жмет кнопку "сделать заказ", вводит свой дом. адрес и заказ доставляется. Собственно, само сохранение в БД всех данных и происходит на этапе нажатия кнопки "сделать заказ".
Казалось бы, всё хорошо, у администратора заказ отобразился. Однако, у самого пользователя тоже есть вкладка "Мои заказы", где он может посмотреть в каком статусе его заказ (в обработке, готовится, доставляется, доставлен). Сейчас пользователь ничего посмотреть не может, т.к заказ в БД к пользователю никак не подсоединяется.
Вопрос: Как это моно сделать с минимумом костылей и говнокода?
Если работа только с мобильными устройствами, можете смело использовать localStorage. При сохранении заказа генерируйте какой-нибудь токен, который возвращайте в ответе на запрос сохранения вместе с идентификатором заказа. Токен и идентификатор сохраняйте вместе с данными заказа в localStorage. В дальнейшем при необходимости выводите данные заказов из localStorage. Идентификация (в данном случае корректности браузера, а не клиента) производится путем проверки соответствия токена идентификатору заказа. Правильнее это делать путем запроса на backend. Для пользователя все будет абсолютно прозрачно.
Хранить информацию о заказе в Cookie. Вы должны понять, что это как оперативная память компьютера - данные хранятся на стороне пользователя, но хранилище временное и если он зайдет с другого устройства или удалит cookie то пропадет и его связь с заказом.
Самое простое решение просить только Email. На него отправите информацию о заказе и ссылку для отслеживания статуса. Можно даже не требовать пароль для просмотра статуса. Генерируйте уникальные ссылки для разных заказов. Это самый простой вариант, на мой взгляд.
Заказ же пишется в базу?
1. После сохранения в базу пишем юзеру куку.
2. Уникальный идентификатор будет адрес заказа, к примеру с удаленными пробелами. (тут же можно сделать форму заполнения адреса более строгой, что б более точно идентифицировать юзера)
Да, пока в голове именно такой вариант, только в качестве уникального идентификатора именно уникальный идентификатор, что-то вроде uniquid().
Хотелось бы услышать еще вариантов
Вы ему данные, какие то на e-mail все равно же отправляете?
С уточнениями заказа, по крайней мере, не делать того - было бы глупо.
Дк вот, у Вас все равно есть какой то номер заказа.
На сайте делаете отдельную форму, в ней одно поле, что то по типу "Проверить статус заказа". Человек вводит номер заказа, на что Вы ему можете выдать, ну например, статус заказа.
Все говорят про куки. В куки можно поставить номер заказа и выводить его под полем ввода номера заказа, что то по типу с подписью: "Ваш последний заказа"
Такое решение универсально, даже если человек почистил куки или сидит с другого компьютера или браузера - у него все рано будет возможность узнать состояние дел.
Правильнее будет использовать localStorage или что-то на основе cookie. В таком случае пользователю будут доступны его заказы, пока он не почистит историю)
Покажите ему временный код клиента, пример: 2424-3335-4353
(где первые 8 - логон, последние 4 цифры - PIN)
Напишите, что действителен код - месяц.
и
поле для ввода почты ниже...
Пусть сам выберет!