स्टोर करने की कोई ज़रूरत नहीं है, मेरे पास ऐसी स्थिति है जहां हम "छूट कार्ड" के रन प्रिंट करते हैं जहां कार्ड पर एक अनूठा कोड मुद्रित किया जाता है जिसे उपयोगकर्ता छूट के लिए ऑनलाइन स्टोर पर रिडीम कर सकता है।एल्गोरिदम के आधार पर "कूपन कोड" का एक सेट बनाएं; कोड
हम इन कार्डों में से बहुत सारे बनाते हैं, जिनमें से बहुत से वास्तव में उपयोग किए जा रहे हैं, कि मैं किसी डेटाबेस में प्रत्येक व्यक्तिगत कोड को संग्रहीत करने के बजाय किसी विधि का उपयोग करके वैध कोड की पहचान करने के लिए कुछ प्रकार का उपयोग करना चाहता हूं। हम एक समय में इन कोडों में से 5,000 कहते हैं। साल में लगभग 5 बार।
$coupons->generate(5000, 'unique_salt', 'prefix_');
कौन सा की तरह 5000 "यादृच्छिक" कोड जेनरेट होगा::
आदर्श रूप में मैं की तरह कुछ करने में सक्षम होना चाहते हैं
prefix-23-3424-4324-3344 or
prefix-4H-34RE-22K3-PE3W
unique salt
और prefix_
डेटाबेस से बचाया जाएगा । salt
को देखने के लिए इन कोडों को prefix_
का उपयोग करके सत्यापित किया जा सकेगा और कोड को मान्य या नहीं पहचानें।
मेरे पास नमक के रूप में संख्या का उपयोग करके काम करने का एक रूप है, नमक द्वारा विभाजित संख्याओं को खोजने के लिए, और फिर अंकों को पुन: क्रमबद्ध करें ताकि यह यादृच्छिक दिखाई दे। लंबे समय तक पर्याप्त कोड के साथ, पैटर्न को समझने में कुछ काम लगेगा। लेकिन मुझे लगता है कि एक बेहतर तरीका है ... क्योंकि केवल इतनी संख्याएं हैं जो बड़ी संख्या में कोड उत्पन्न करती हैं जो salt
द्वारा विभाजित होती हैं।
(उदाहरण के लिए, 2 की एक नमक 5,000 कोड 1 और 10,000 के बीच प्राप्त होते हैं (और एक पैटर्न को देखने के लिए) आसान होगा ... लेकिन 14000 के नमक 1 और 10,000 के बीच शून्य कोड प्राप्त होते हैं)
इसका दूसरा लाभ यह है कि मैं आवश्यकतानुसार कूपन उत्पन्न कर सकता हूं (जैसे कि जब हम व्यक्तियों को एक आधार पर एक छूट देते हैं), और prefix_
के आधार पर कूपन का उपयोग कब किया जाता है, ट्रैक करने में सक्षम हो ... और संभावित रूप से देखें कि कार्ड कब पास किए जाते हैं, सबसे अच्छी वापसी क्या होती है।
क्या मैं बस अपने पहियों को कताई कर रहा हूं जब मुझे डेटाबेस में प्रत्येक कोड को संग्रहीत करना चाहिए? (या बस मज़ा आ रहा है?) :)
मैं डेटाबेस में कोड संग्रहीत करने के लिए वोट दूंगा। 5000 x 5 गुना/वर्ष अभी भी केवल 25000 कोड/वर्ष है। प्रति कोड 20-30 बाइट्स पर, आप एक पूर्ण मेगाबाइट मूल्य डेटा भी संग्रहीत नहीं कर रहे हैं। यह कोड को क्रैक करने वाले किसी व्यक्ति के मुद्दे से भी बचाता है। – dlev
आप कुछ यादृच्छिक संख्याओं और अक्षरों का उपयोग कर सकते हैं, और कोड के अंत में जोड़े गए चेक अंकों के कुछ रूप उत्पन्न करने के लिए कुछ अनुक्रमणिका में वर्णों का चयन कर सकते हैं। फिर, जब कोई कोड दर्ज किया जाता है, तो आप केवल वर्णों का चयन करते हैं, एल्गोरिदम चलाते हैं और देखते हैं कि आप अंतिम चरित्र के साथ समाप्त होते हैं या नहीं। –
@ डंकन-हाउ हाँ, मैं वास्तव में अभी अपनी वर्तमान विधि के साथ ऐसा करता हूं। मैं जेनरेट कोड में चेकसम के रूप में जो कुल जोड़ता हूं उसे पाने के लिए मैं कुछ निश्चित अंक चुनता हूं। – drewjoh