У меня есть ситуация, когда мы распечатываем тиражи «дисконтных карт», где на карте напечатан уникальный код, который пользователь может обменять на скидку в интернет-магазине.
Мы создаем так много таких карточек, причем их так мало на самом деле, что я хотел бы использовать какой-либо способ идентификации действительного кода с использованием метода, а не хранить каждый отдельный код в базе данных. Мы создаем, скажем, 5000 таких кодов одновременно. Вероятно, около 5 раз в год.
В идеале я бы хотел иметь что-то вроде:
$coupons->generate(5000, 'unique_salt', 'prefix_');
Что бы генерировать 5000 "случайных" кодов, таких как:
prefix-23-3424-4324-3344 or
prefix-4H-34RE-22K3-PE3W
unique salt
и prefix_
будут сохранены в базе данных. Эти коды затем можно будет проверить с помощью prefix_
для поиска salt
и определения кода как действительного или нет.
У меня есть такая форма работы: я использую число в качестве соли, чтобы найти числа, делимые на соль, а затем переставить цифры так, чтобы они казались случайными. При наличии достаточно длинных кодов потребуется определенная работа, чтобы выяснить закономерность. Но я хотел бы думать, что есть лучший способ ... так как есть только так много чисел, которые дают большое количество кодов, которые делятся на salt
.
(Например, соль 2 даст 5000 кодов от 1 до 10000 (и будет легко увидеть шаблон) ... но соль 14000 даст ноль кодов от 1 до 10000)
Другим преимуществом этого является то, что я могу генерировать купоны по мере необходимости (например, когда мы даем людям скидку один за другим), и иметь возможность отслеживать, какие купоны используются, когда и т. Д. На основе prefix_
... и, возможно, посмотрите, как / когда раздают карты, что дает лучший возврат.
Должен ли я просто крутить свои колеса, когда я должен просто хранить каждый код в базе данных? (Или просто веселились?):)