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

PHP में बिट मैनिपुलेशन और MySQL पुनर्प्राप्ति

क्या आपने अपनी अनुमतियों को एक पूर्णांक के रूप में संग्रहीत करने पर विचार किया है, प्रत्येक अनुमति के साथ एक बाइनरी मान (यानी, 1,2,4,8,16), और आप उनकी सभी अनुमतियों को एक साथ जोड़ते हैं। फिर आप जांच सकते हैं कि उनके पास &ऑपरेटर का उपयोग करके दी गई अनुमति है या नहीं

इस तरह:

if ($accessLevel & $userPermissions) 

यह आपको बाइनरी नंबर स्टोर करने की तुलना में अधिक उपयोगी सिस्टम देता है

टिप्पणियों में अनुरोध के अनुसार, थोड़ी और जानकारी।

आप अपनी अनुमतियों को संग्रहीत करने के लिए एक पूर्णांक फ़ील्ड रखने के लिए अपनी उपयोगकर्ता तालिका सेट अप करेंगे। आपके प्रत्येक अनुमति स्तर में बाइनरी मल्टीपल (यहां सही शब्द नहीं पता) होगा जो बाइनरी बिट के मान से मेल खाता है। उदाहरण के लिए:

Read - 1
Edit - 2
Create - 4
Delete - 8

और इसी तरह, जितने की आवश्यकता है। उपयोगकर्ता अनुमति स्तर बनाने के लिए, आप या मान एक साथ। आइए मान लें कि उपरोक्त स्तर एक वर्ग में स्थिर मूल्यों के रूप में संग्रहीत हैं, आप इसे इस तरह बनाएंगे:

$newUser->Permissions = Permissions::Read | Permissions::Create;

जो आपको एक ऐसा उपयोगकर्ता देता है जो पढ़ और बना सकता है, लेकिन संपादित या हटा नहीं सकता।

यह जांचने के लिए कि किसी उपयोगकर्ता के पास कोई क्रिया करने की अनुमति है या नहीं, आप AND:

. का उपयोग करते हैं
if ($newUser->Permissions & Permissions::Read) {
    echo 'You can do this!';
}  else {
    echo 'You can't this!';
}

यह आपको एक साधारण डेटाबेस फ़ील्ड देता है, जो उतना ही विस्तार योग्य है जितना आपको वास्तविक रूप से आवश्यकता होगी, और चेक और परिवर्तनों का उपयोग करने में आसान है। आपको किस स्तर के अनुकूलन की आवश्यकता हो सकती है, इसके आधार पर आप किसी अन्य तालिका आदि में अनुमति स्तरों को संग्रहीत करने पर भी विचार कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql हाल ही की उपयोगकर्ता टिप्पणियाँ खोजें

  2. MySQL परिवर्तन तालिका पहले से मौजूद फ़ील्ड से पहले या बाद में फ़ील्ड जोड़ें

  3. Laravel 4 पूरी RAW क्वेरी नहीं चला सकता

  4. php pdo mysql से केवल एक मान प्राप्त करें; मान जो चर के बराबर है

  5. MySQL में यूनिकोड (हेक्साडेसिमल) कैरेक्टर लिटरल