Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL कैसे मूल्य समाप्त करने के लिए?

आपकी resetkey के आगे कॉलम में एक DATETIME रखें कॉलम कहा जाता है, हो सकता है, expires

फिर, जब भी आप कोई नई रीसेट कुंजी डालें, तो समय सीमा समाप्त होने पर भी एक मान डालें:

INSERT INTO forgot (resetkey, expires) VALUES (whatever, NOW() + INTERVAL 48 HOUR)

तालिका से कोई भी रीसेट कुंजी पढ़ने से ठीक पहले, यह करें:

DELETE FROM forgot WHERE expires < NOW()

तब आप कभी भी समय सीमा समाप्त कुंजी नहीं देखेंगे; यदि उनकी समय सीमा समाप्त हो गई है तो वे हमेशा मिटा दिए जाएंगे।

अब, आप उपयोगकर्ता द्वारा सुसज्जित रीसेट कुंजी की तलाश के साथ कुछ करना चुन सकते हैं। यदि यह समाप्त हो गया है तो आप उपयोगकर्ता को इसकी घोषणा कर सकते हैं:"आपकी रीसेट कुंजी समाप्त हो गई है।" लेकिन यह एक बुरा विचार है ... सुरक्षा के लिए आपको उपयोगकर्ताओं को यह समझने में मदद नहीं करनी चाहिए कि रीसेट कुंजी जैसा सुरक्षा टोकन अमान्य क्यों है। आपको बस इतना कहना चाहिए "कि रीसेट कुंजी सही नहीं है।"

क्या यह इस संभावना को खुला छोड़ देता है कि समाप्त हो चुके टोकन वाली कुछ पंक्तियाँ तालिका में बनी रहेंगी? हां। लेकिन आपके ऐप के लिए वास्तव में उन्हें पढ़ना और उनका उपयोग करना संभव नहीं होगा यदि आप किसी भी टोकन का उपयोग करने से पहले समाप्त हो चुके लोगों को मिटा देने की प्रक्रिया का पालन करते हैं। यदि आपके पास समाप्त हो चुके टोकन को तालिका में रखने से बचने का कोई कारण था, भले ही वे बेकार हों, तो आप DELETE चलाने के लिए एक ईवेंट या किसी अन्य प्रकार की नियमित रूप से शेड्यूल की गई नौकरी सेट कर सकते हैं। मैंने जिस कथन का उल्लेख किया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO और MySQL IN/NOT IN प्रश्नों के लिए उचित प्रारूप

  2. एक सरणी का उपयोग कर MySQL क्वेरी

  3. पदावनत MySql फ़ंक्शंस

  4. शामिल होने के परिणामों के आधार पर ऑर्डर का चयन करें (भेजे गए अंतिम संदेश पर बातचीत को क्रमबद्ध करें)

  5. Laravel वाक्पटु आवरण पर ध्यान न दें