आउच। आपने बहुत बड़ा काम लिया है। क्या आप पूरी तरह से आश्वस्त हैं कि आप जो कुछ भी करने जा रहे हैं वह पहले से उपलब्ध किसी चीज़ से नहीं किया जा सकता है? ठीक है, अगर आप निश्चित हैं, तो पढ़ें।
सबसे पहले, आप जो करना चाहते हैं उसका सबसे कठिन हिस्सा आपकी उपयोगकर्ता पहुंच का प्रबंधन करना है। मेरी सलाह है कि आगे बढ़ने से पहले आप अपना उपयोगकर्ता प्रबंधन मॉड्यूल लिखकर शुरुआत करें।
आप जो चाहते हैं, ऐसा लगता है कि ड्रुपल या अन्य वरिष्ठ सीएमएस सिस्टम में से एक सिस्टम को बूटस्ट्रैप करने का एक शानदार तरीका होगा। ड्रूपल आपके उपयोगकर्ता प्रबंधन को बॉक्स के ठीक बाहर (या न्यूनतम समस्याओं के साथ) संभालेगा और आप अपना शेष कोड स्थिर नोड्स के रूप में लिख सकते हैं। इससे ब्लॉग, फ़ोरम, समाचार जोड़ना और मेलिंग सूचियों आदि को प्रबंधित करना भी आसान हो जाता है।
जैसा कि ऊपर टिप्पणियों में कहा गया है, आपको अपना डेटा एक साथ रखने की आवश्यकता है। ऐतिहासिक तुलनाओं के लिए भी डेटा रखना अच्छा होगा।
यदि आप मनोचिकित्सक से वापस मिलने के बाद सीएमएस का विस्तार नहीं कर रहे हैं, तो आपको कुछ इस तरह की आवश्यकता होगी:
-
डीबी तक पहुंचने और उपयोगकर्ता प्रमाणीकरण की जांच करने के लिए हेडर फ़ाइल।
-
अपना डेटा प्रदर्शित करने के लिए फ़ुटर फ़ाइल
-
अपना डेटा प्रस्तुत करने या प्राप्त करने के लिए अलग-अलग पृष्ठ फ़ाइलें।
उपयोगकर्ताओं को संभालने के लिए डेटाबेस संरचना (न्यूनतम) आईआरओ होनी चाहिए:
Person - details of individual users
username - link person to a username
email - email addresses
club - sports club details
password - passwords
logon - record of logon attempts
role - record of role of individuals in your site
permissions - list of required permissions to access areas of the site
role_permissions - default permissions for each role
person_role - link person to role
person_permissions - link person to permissions (only needed if some individuals need extra permissions not given routinely by their role)
club_person; person_email; - link people to clubs and to their email addresses.
मैचों को संभालने के लिए आपको आवश्यकता होगी:
team - team name, group and club reference
grouping - list of groups eg by age.
divisions. - list of divisions
venue - list of venues. Include GPS!!!
match - division, grouping, team1, team2, venue, date, time
result - team1 reported result, team 2 reported result, approved result (you may need to intervene!) match.
जैसा कि आप देख सकते हैं कि आपको कुछ तालिकाओं की आवश्यकता है, लेकिन आपको वास्तविक टीमों के साथ मज़ेदार चीज़ें करने की कोशिश नहीं करनी चाहिए, जब तक कि आपकी उपयोगकर्ता पहुँच ठीक से काम न कर रही हो।
मैंने आपके लिए जो स्केच किया है वह सामान्य रूप में एक डीबी है। कोई टेक्स्ट डेटा डुप्लिकेट नहीं है और डेटा पुनर्प्राप्त करना, इंडेक्स करना और प्रदर्शित करना आसान है। मुझे लगता है कि यह प्रश्न SO के लिए बहुत व्यापक है क्योंकि आपके लिए डेटाबेस तैयार करना थोड़ा सा दायरा से बाहर है लेकिन मुझे लगता है कि सामान्य प्रारूप उपयोगी है।
प्रत्येक तालिका में केवल अद्वितीय आवश्यक डेटा होना चाहिए जैसे:
Person: personid int, surname, forename, style, whenadded, whoadded, inuse
email: emailid, email, whenadded, whoadded, inuse
email_person: emailpersonid,emailid,personid, whenadded,whoadded,inuse
यह एकाधिक लोगों को एक ईमेल और एकाधिक ईमेल साझा करने की अनुमति देता है, बिना किसी टेक्स्ट डुप्लिकेशन के एक व्यक्ति पर लागू किया जा सकता है। आईडी सीरियल के बजाय INT AUTO_INCREMENT PRIMARY KEY टाइप की होनी चाहिए क्योंकि इससे बहुत सारा स्टोरेज स्पेस बचता है और आप इस एप्लिकेशन में कभी भी INT नहीं भरेंगे।
अन्य तालिकाओं को भी इसी तरह बनाया जाना चाहिए। व्हाट्सडेड और व्हेन एडेड कॉलम वैकल्पिक हैं और काफी स्टोरेज के लिए भूखे हैं लेकिन बहुत उपयोगी हो सकते हैं। उपयोग आवश्यक है इसे एक बूल पर सेट करें और आप उन्हें हटाए बिना टीमों को हटा सकते हैं - डेटा खो नहीं जाता है। ए व्हेन रिमूव्ड एंड व्होरेमूव्ड ऑडिट के लिए भी उपयोगी है।
पासवर्ड पर एक शब्द - कृपया सुनिश्चित करें कि आप इन्हें नमकीन हैश के रूप में संग्रहीत करते हैं। यदि आप ऐसा करते हैं, जब आपकी साइट हैक हो जाती है, तो किसी के पास भी वह पासवर्ड नहीं होगा जिसका उपयोग वे अपनी इंटरनेट बैंकिंग के लिए भी करते हैं। लोग अक्सर बेवकूफ होते हैं। आपको उनकी देखभाल करनी होगी।
जैसा कि मैंने कहा, थोड़ा सा दायरे से बाहर है इसलिए मैं वहां जवाब समाप्त कर दूंगा - यह आपको चौथे सामान्य फॉर्म डीबी की मूल रूपरेखा के अनुरोध के अनुसार देता है जो मजबूत और विस्तार योग्य होगा लेकिन आपको काम करने के लिए छोड़ देता है। यदि समस्या बहुत कठिन हो जाती है तो अधिक प्रश्न क्यों न पूछें।
शुभकामनाएँ।
जोड़ा गया:
DIY फ्रेमवर्क:
यदि आप मौजूदा ढांचे या सीएमएस में से किसी एक का उपयोग करना नहीं सीखना चाहते हैं, तो आपको अपना खुद का लिखना होगा। अजीब तरह से, यह वास्तव में बहुत आसान है।
हैडर.php:
<?PHP
$mysqli=new mysqli(credentials....)//connect to database and present a mysqli or pdo object.
session_start(); //open a session
//you will need to authenticate your session here - see below
?>
footer.php:
<HTML>
<HEAD>
<TITLE>
<?PHP echo $pagetitle;?>
</TITLE>
</HEAD>
<BODY>
<?PHP echo $content;?>
</BODY>
</HTML>
इनका उपयोग mypage.php द्वारा किया जाता है:
<?PHP
require("header.php");
//do some stuff that generates $content
$pagetitle="mypage.php";
require("footer.php:);
?>
इस बात पर जोर दिया जाना चाहिए कि यह न्यूनतम न्यूनतम है जिसकी आपको आवश्यकता होगी और वास्तव में बेकार है - यह सिर्फ यह दिखाने के लिए प्रस्तुत किया जाता है कि इसे कैसे शुरू किया जाना चाहिए, आदर्श कोड का उदाहरण नहीं। हालांकि यह काम करेगा।
कुंजी एक शीर्षलेख बना रही है जो आपको आवश्यक चर प्रस्तुत करता है, जैसे डीबी कनेक्शन, उपयोगकर्ता नाम, उपयोगकर्ता लॉगऑन स्थिति इत्यादि और एक पाद लेख जिसमें आप डेटा प्रस्तुत करने के लिए विवरण दर्ज कर सकते हैं। पाद लेख एकमात्र ऐसा स्थान है जहाँ आप HTML और PHP को मिलाते हैं।
अपने $_SESSION का उपयोग उन सूचनाओं को संग्रहीत करने के लिए करें जिन्हें पृष्ठों के बीच बनाए रखने की आवश्यकता है।
ये फाइलें आपकी पसंद की तरह सरल या जटिल हो सकती हैं - मैंने अपनी उम्र पहले बनाई थी जो उपयोगकर्ता और सत्र पर कई जांच करती है और स्क्रिप्ट, कस्टम सीएसएस फाइलें और ऐसे ही पाद लेख में प्रदर्शित कर सकती है। यदि आप सरल शुरुआत करते हैं और अपनी आवश्यकता के अनुसार निर्माण करते हैं तो यह करना कठिन नहीं है। SO आपकी सहायता के लिए यहां मौजूद रहेगा।
सावधानी का एक शब्द:यद्यपि आप बहुत सरल शुरुआत कर सकते हैं, आप जो करने की कोशिश कर रहे हैं उसके पास पैर हैं और हाथ से निकल जाएगा। यह सुनिश्चित करने के लिए कि आपने अनजाने में सुरक्षा खामियों को शामिल नहीं किया है, कृपया अपने कोड को तैयार करने और चलाने के बाद उसका ऑडिट करें। इन्हें शामिल करना बहुत आसान है क्योंकि आप किसी प्रोजेक्ट में शामिल होते हैं और एक त्वरित सुधार की आवश्यकता होती है और जब तक आप उनकी तलाश नहीं करते हैं, तब तक इन्हें बाद में खोजना मुश्किल हो सकता है।