Определите, была ли загружена страница из истории или из сканирования QR-кода

Вот ситуация. Я пытаюсь реализовать систему в ресторане, где каждый стол имеет свой уникальный QR-код. QR-код фиксируется и печатается на столе. Мое приложение в основном представляет собой веб-страницу, а QR-код — это просто адрес веб-страницы с зашифрованным параметром, который идентифицирует таблицу.

Эта система уже защищена (до определенной степени) от шутников, позволяя получать заказы только с IP-адреса соединения Wi-Fi. Таким образом, вам нужно как минимум подключиться к Wi-Fi ресторана, чтобы использовать эту страницу. Не защищает от людей вне здания, но это другой вопрос.

Проблема возникает, если пользователь приходит сегодня, сканирует код для таблицы 3 и размещает заказ. Если пользователь придет позже и сядет за стол 5, я не знаю, как остановить его от загрузки ранее отсканированной ссылки (для стола 3) и сделать заказ на стол 3.

Постоянно меняющиеся QR-коды с отметками времени решат проблему, но это невозможно, поскольку QR-коды фиксированы.

Есть ли способ, чтобы страница «узнала», что она была загружена из сканирования QR-кода или была ли она загружена из истории просмотров? Мы говорим о страницах, загруженных на смартфон, так что я думаю, что это усложняет ситуацию.

Любая помощь или указатели будут очень признательны! :)


person Osprey    schedule 01.06.2013    source источник


Ответы (1)


Короче говоря, нет. Обычно нет заголовка «refer», который сообщает вам, что страница была загружена из закладки или извлечена из истории сканера, а не отсканирована напрямую.

Наличие постоянно меняющегося QR-кода не невозможно (с использованием eInk или небольшого дисплея), но это не решает проблему.

Вот как бы я это исправил.

Пользователь сканирует код — example.com/table3 — первое, что он видит, — это карта с выделенной на ней таблицей 3.

Текст гласит: «Если вы не за столом 3, отсканируйте код на вашем столе. Если да, нажмите здесь, чтобы заказать». Или что-то вроде того.

Объясните пользователю, что если он сидит не за тем столом, его еду получит кто-то другой!

person Terence Eden    schedule 10.06.2013
comment
Спасибо. Проблема в том, что шутники специально заказывают еду для других столов. Поскольку в настоящее время в настройке не предусмотрены платежи с заказами, им почти нечего терять. Однако я нашел другой способ обойти проблему. Я установил QR-код так, чтобы он указывал на несуществующую страницу, которая затем (посредством обработки ошибки 404) перенаправляется на другую страницу, а также передает динамическую отметку времени (строку запроса). Именно эта вторая страница хранится в истории браузера, и, поскольку она содержит зашифрованную отметку времени, я могу использовать ее, чтобы узнать, как давно был отсканирован QR-код. Не идеально, но сносно. - person Osprey; 11.06.2013