जेएसक्यूएल इंजेक्शन का उपयोग करने के निर्देश, काली लिनक्स में एसक्यूएल इंजेक्शन खोजने और उसका दोहन करने के लिए एक बहुक्रियाशील उपकरण। PHP और MySQL Inurl में मल्टी-लेवल मेनू, php का अपना मेनू गेम आईडी
कोई भी वेबसाइट नेविगेशन के बिना पूरी नहीं होती या, जैसा कि वे इसे "साइट मेनू" भी कहते हैं। तो, साइट मेनू एक पेड़ के रूप में एकल-स्तरीय या बहु-स्तरीय हो सकता है। यदि एकल-स्तरीय मेनू के कार्यान्वयन के संदर्भ में कोई विशेष कठिनाइयाँ नहीं हैं, तो बहु-स्तरीय मेनू बनाते समय आपको सावधानी से सोचने की आवश्यकता है।
इस कार्य में सबसे महत्वपूर्ण बात हमारे बहु-स्तरीय मेनू के लिए डेटाबेस डिज़ाइन करना है। आइए तीन फ़ील्ड वाली एक श्रेणियाँ तालिका बनाएँ पहचान, शीर्षक, माता-पिताकहाँ:
- पहचान- पहचानकर्ता
- शीर्षक- मेनू नाम
- माता-पिता- डिफ़ॉल्ट श्रेणी अभिभावक 0
फ़ील्ड मेनू को ब्रांच करने के लिए ज़िम्मेदार है माता-पिताअगर जनक = 0, तो यह श्रेणी मूल श्रेणी है। मूल श्रेणी में वंशजों को जोड़ने के लिए, आपको मूल फ़ील्ड में निर्दिष्ट करना होगा पहचानसही अभिभावक. उदाहरण के लिए:
श्रेणियों के साथ तालिकाएँ
जैसा कि तालिका से देखा जा सकता है, मूल श्रेणी कारेंदो वंशज हैं - यह है माजदाऔर होंडाफ़ील्ड द्वारा संबंधित माता-पिता. और श्रेणी मोटरसाइकिलेंदो वंशज हैं कावासाकीऔर हार्ले. वहीं, नाव श्रेणी का कोई वंशज नहीं है। मुझे आशा है कि आप समझ गए होंगे कि श्रेणियों को कैसे लिंक किया जाए।
आगे हम शब्दों से अभ्यास की ओर बढ़ते हैं। आइए एक श्रेणियाँ तालिका बनाएँ।
यदि `श्रेणियां` मौजूद नहीं हैं तो तालिका बनाएं (`id` int(10) अहस्ताक्षरित शून्य नहीं AUTO_INCREMENT, `title` varchar(255) शून्य नहीं, `parent` int(10) अहस्ताक्षरित शून्य नहीं, प्राथमिक कुंजी (`id`)) इंजन=MyISAM डिफ़ॉल्ट चारसेट=utf8 AUTO_INCREMENT=20; -- -- तालिका `श्रेणियाँ` से डेटा डंप - `श्रेणियाँ` (`आईडी`, `शीर्षक`, `मूल`) मान (1, "कारें", 0), (2, "मोटरसाइकिल", 0) में डालें ) , (3, "माज़्दा", 1), (4, "होंडा", 1), (5, "कावासाकी", 2), (6, "हार्ले", 2), (7, "माज़्दा 3", 3 ), (8, "माज़्दा 6", 3), (9, "सेडान", 7), (10, "हैचबैक", 7), (11, "नाव", 0), (12, "लिफ्टबैक" , 8), (13, "क्रॉसओवर", 8), (14, "व्हाइट", 13), (15, "रेड", 13), (16, "ब्लैक", 13), (17, "ग्रीन" , 13), (18, "माज़्दा सीएक्स", 3), (19, "माज़्दा एमएक्स", 3);कार्य एल्गोरिथ्म में निम्नलिखित शामिल हैं:
डेटाबेस से कनेक्शन बनाएं
क्वेरी ("सेट नाम" utf8 ""); /* * ऐसा करने का यह "आधिकारिक" ऑब्जेक्ट-ओरिएंटेड तरीका है * हालाँकि $connect_error PHP संस्करण 5.2.9 और 5.3.0 तक काम नहीं करता था। */ यदि ($mysqli->connect_error) (die("कनेक्शन त्रुटि (" . $mysqli->connect_errno .") " . $mysqli->connect_error); ) /* * यदि आपको संस्करणों के साथ अनुकूलता सुनिश्चित करने की आवश्यकता है 5.2 .9 से पहले, * इस कोड का उपयोग करना बेहतर है */ यदि (mysqli_connect_error()) (die("कनेक्शन त्रुटि (" . mysqli_connect_errno() .") " . mysqli_connect_error()); )श्रेणियाँ तालिका से डेटा प्राप्त करने के लिए एक फ़ंक्शन लिखना
//डेटाबेस से हमारे मेनू की सरणी को एक सरणी फ़ंक्शन getCat($mysqli)( $sql = "SELECT * FROM `categories`" के रूप में प्राप्त करें; $res = $mysqli->query($sql); // एक बनाएं सरणी जहां सरणी की कुंजी मेनू आईडी है $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) रिटर्न $ बिल्ली; )हमें इस तरह एक सरणी मिलती है, जहां सरणी कुंजी श्रेणी आईडी है।
टॉमी लैक्रोइक्स से ठोस लकड़ी का निर्माण कार्य
//टॉमी लैक्रोइक्स फ़ंक्शन से एक सरणी से एक पेड़ बनाने के लिए फ़ंक्शन getTree($डेटासेट) ( $tree = array(); foreach ($id => &$node के रूप में डेटासेट) ( //यदि कोई अनुलग्नक नहीं है यदि ( !$node["parent"])( $tree[$id] = &$node; )else( //यदि बच्चे हैं, तो सरणी $dataset[$node["parent"]]["childs के माध्यम से पुनरावृत्त करें "][$id] = &$ नोड; ) ) वापसी $tree; )हमें एक पेड़ के रूप में एक सरणी मिलती है
संपूर्ण स्क्रिप्ट
क्वेरी ("सेट नाम" utf8 ""); /* * ऐसा करने का यह "आधिकारिक" ऑब्जेक्ट-ओरिएंटेड तरीका है * हालाँकि $connect_error PHP संस्करण 5.2.9 और 5.3.0 तक काम नहीं करता था। */ यदि ($mysqli->connect_error) (die("कनेक्शन त्रुटि (" . $mysqli->connect_errno .") " . $mysqli->connect_error); ) /* * यदि आपको संस्करणों के साथ संगतता सुनिश्चित करने की आवश्यकता है 5.2 .9 से पहले, * इस कोड का उपयोग करना बेहतर है */ यदि (mysqli_connect_error()) (die("कनेक्शन त्रुटि (" . mysqli_connect_errno() .") " . mysqli_connect_error()); ) // सरणी प्राप्त करें एक सरणी फ़ंक्शन के रूप में डेटाबेस से हमारे मेनू का getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); // एक सरणी बनाएं जहां सरणी कुंजी मेनू आईडी है $cat = array(); जबकि ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat; ) //Function for टॉमी लैक्रोइक्स फ़ंक्शन getTree($डेटासेट) ( $tree = array(); foreach ($id => &$node के रूप में डेटासेट) से एक सरणी से एक पेड़ का निर्माण ( //यदि कोई अनुलग्नक नहीं है यदि (!$नोड[ "parent"])( $tree[$id] = &$node; )else( //यदि वंशज हैं, तो सरणी $dataset[$node["parent"]]["childs"][$ id] = &$node; ) ) return $tree; ) //डेटा के साथ एक तैयार सरणी प्राप्त करें $cat = getCat($mysqli); // एक ट्री मेनू बनाएं $tree = getTree($cat); //ट्री फ़ंक्शन के रूप में मेनू प्रदर्शित करने के लिए टेम्पलेट tplMenu($श्रेणी)( $menu = "- ". showCat($श्रेणी["बच्चों"])।"
- ".$cat_menu।"
कार्य का परिणाम
व्यवस्थापक पैनल के लिए PHP + MySQL में बहु-स्तरीय मेनू
यदि आप इस मेनू का उपयोग अपनी साइट के व्यवस्थापक पैनल में करना चाहते हैं, तो आपको कुछ कार्यों को फिर से लिखना होगा tplMenu(), शोकैट().
".$श्रेणी["शीर्षक"]।""; )अन्यथा ($मेनू = " "; ) if(isset($category["childs"]))( $i = 1; for($j = 0; $j< $i; $j++){ $str .= "→"; } $i++; $menu .= showCat($category["childs"], $str); } return $menu; } /** * Рекурсивно считываем наш шаблон **/ function showCat($data, $str){ $string = ""; $str = $str; foreach($data as $item){ $string .= tplMenu($item, $str); } return $string; } //Получаем HTML разметку $cat_menu = showCat($tree, ""); //Выводим на экран echo ""; ?>
कार्य का परिणाम
कारें चुनें → माज़दा →→ माज़दा 3 →→→ सेडान →→→ हैचबैक →→ माज़दा 6 →→→ लिफ्टबैक →→→ क्रॉसओवर →→→→ सफेद →→→→ लाल → →→→ काला →→→→ हरा →→ माज़्दा सीएक्स →→ माज़्दा एमएक्स → होंडा मोटरसाइकिलें → कावासाकी → हार्ले बोट्सडाउनलोड की गई फ़ाइल को डबल क्लिक करके चलाएँ (आपके पास एक वर्चुअल मशीन होनी चाहिए)।
3. SQL इंजेक्शन के लिए किसी साइट की जाँच करते समय गुमनामी
काली लिनक्स में टोर और प्रिवोक्सी की स्थापना
[अनुभाग विकासाधीन]
विंडोज़ पर टोर और प्रिवोक्सी की स्थापना
[अनुभाग विकासाधीन]
jSQL इंजेक्शन में प्रॉक्सी सेटिंग्स
[अनुभाग विकासाधीन]
4. jSQL इंजेक्शन के साथ SQL इंजेक्शन के लिए साइट की जाँच करना
प्रोग्राम के साथ काम करना बेहद सरल है। बस वेबसाइट का पता दर्ज करें और ENTER दबाएँ।
निम्नलिखित स्क्रीनशॉट से पता चलता है कि साइट तीन प्रकार के SQL इंजेक्शनों के प्रति असुरक्षित है (उनके बारे में जानकारी निचले दाएं कोने में इंगित की गई है)। इंजेक्शन के नाम पर क्लिक करके आप उपयोग की जाने वाली विधि को बदल सकते हैं:
साथ ही, मौजूदा डेटाबेस हमें पहले ही प्रदर्शित किए जा चुके हैं।
आप प्रत्येक तालिका की सामग्री देख सकते हैं:
आमतौर पर, तालिकाओं के बारे में सबसे दिलचस्प बात व्यवस्थापक क्रेडेंशियल है।
यदि आप भाग्यशाली हैं और आपको व्यवस्थापक का डेटा मिल जाता है, तो खुशी मनाना जल्दबाजी होगी। आपको अभी भी व्यवस्थापक पैनल ढूंढना होगा जहां यह डेटा दर्ज करना है।
5. jSQL इंजेक्शन के साथ व्यवस्थापक पैनल खोजें
ऐसा करने के लिए अगले टैब पर जाएं। यहां हमारा स्वागत संभावित पतों की एक सूची के साथ किया जाता है। आप जांचने के लिए एक या अधिक पेज चुन सकते हैं:
सुविधा इस तथ्य में निहित है कि आपको अन्य कार्यक्रमों का उपयोग करने की आवश्यकता नहीं है।
दुर्भाग्य से, ऐसे बहुत से लापरवाह प्रोग्रामर नहीं हैं जो स्पष्ट टेक्स्ट में पासवर्ड संग्रहीत करते हैं। अक्सर पासवर्ड लाइन में हमें कुछ ऐसा दिखाई देता है
8743b52063cd84097a65d1633f5c74f5
यह एक हैश है. आप क्रूर बल का उपयोग करके इसे डिक्रिप्ट कर सकते हैं। और... jSQL इंजेक्शन में एक अंतर्निहित ब्रूट फोर्सर है।
6. jSQL इंजेक्शन का उपयोग करके क्रूर बल हैश
निस्संदेह सुविधा यह है कि आपको अन्य कार्यक्रमों की तलाश करने की आवश्यकता नहीं है। कई सर्वाधिक लोकप्रिय हैश के लिए समर्थन उपलब्ध है.
यह सर्वोत्तम विकल्प नहीं है. हैश को डिकोड करने में गुरु बनने के लिए, रूसी में पुस्तक "" की अनुशंसा की जाती है।
लेकिन, निश्चित रूप से, जब कोई अन्य कार्यक्रम हाथ में नहीं है या अध्ययन करने का समय नहीं है, तो अंतर्निहित ब्रूट फोर्स फ़ंक्शन के साथ जेएसक्यूएल इंजेक्शन बहुत काम आएगा।
सेटिंग्स हैं: आप यह निर्धारित कर सकते हैं कि पासवर्ड में कौन से अक्षर शामिल हैं, पासवर्ड की लंबाई सीमा।
7. SQL इंजेक्शन का पता लगाने के बाद फ़ाइल संचालन
डेटाबेस के साथ संचालन के अलावा - उन्हें पढ़ना और संशोधित करना, यदि SQL इंजेक्शन का पता लगाया जाता है, तो निम्नलिखित फ़ाइल संचालन किए जा सकते हैं:
- सर्वर पर फ़ाइलें पढ़ना
- सर्वर पर नई फ़ाइलें अपलोड करना
- सर्वर पर शेल अपलोड करना
और यह सब jSQL इंजेक्शन में लागू किया गया है!
प्रतिबंध हैं - SQL सर्वर में फ़ाइल विशेषाधिकार होने चाहिए। स्मार्ट सिस्टम प्रशासकों ने उन्हें अक्षम कर दिया है और वे फ़ाइल सिस्टम तक पहुंच प्राप्त नहीं कर पाएंगे।
फ़ाइल विशेषाधिकारों की उपस्थिति की जाँच करना काफी सरल है। किसी एक टैब पर जाएं (फ़ाइलें पढ़ना, एक शेल बनाना, एक नई फ़ाइल अपलोड करना) और निर्दिष्ट कार्यों में से एक को निष्पादित करने का प्रयास करें।
एक और बहुत महत्वपूर्ण नोट - हमें उस फ़ाइल का सटीक पूर्ण पथ जानना होगा जिसके साथ हम काम करेंगे - अन्यथा कुछ भी काम नहीं करेगा।
निम्नलिखित स्क्रीनशॉट देखें:
किसी फ़ाइल पर काम करने के किसी भी प्रयास के लिए, हमें निम्नलिखित प्रतिक्रिया प्राप्त होती है: कोई फ़ाइल विशेषाधिकार नहीं(कोई फ़ाइल विशेषाधिकार नहीं). और यहां कुछ नहीं किया जा सकता.
यदि इसके बजाय आपके पास कोई अन्य त्रुटि है:
[निर्देशिका_नाम] में लिखने में समस्या
इसका मतलब यह है कि आपने वह पूर्ण पथ ग़लत निर्दिष्ट किया है जहाँ आप फ़ाइल लिखना चाहते हैं।
पूर्ण पथ का अनुमान लगाने के लिए, आपको कम से कम उस ऑपरेटिंग सिस्टम को जानना होगा जिस पर सर्वर चल रहा है। ऐसा करने के लिए, नेटवर्क टैब पर स्विच करें।
ऐसा रिकॉर्ड (पंक्ति Win64) हमें यह मानने का कारण देता है कि हम विंडोज़ ओएस के साथ काम कर रहे हैं:
कीप-अलाइव: टाइमआउट=5, अधिकतम=99 सर्वर: अपाचे/2.4.17 (Win64) PHP/7.0.0RC6 कनेक्शन: कीप-अलाइव विधि: HTTP/1.1 200 ठीक सामग्री-लंबाई: 353 दिनांक: शुक्रवार, 11 दिसंबर 2015 11:48:31 जीएमटी एक्स-पावर्ड-बाय: पीएचपी/7.0.0आरसी6 सामग्री-प्रकार: टेक्स्ट/एचटीएमएल; वर्णसेट=यूटीएफ-8
यहां हमारे पास कुछ यूनिक्स (*बीएसडी, लिनक्स) हैं:
स्थानांतरण-एन्कोडिंग: खंडित दिनांक: शुक्र, 11 दिसंबर 2015 11:57:02 जीएमटी विधि: HTTP/1.1 200 ठीक रखें-जीवित: समय समाप्त = 3, अधिकतम = 100 कनेक्शन: जीवित रखें सामग्री-प्रकार: टेक्स्ट/एचटीएमएल एक्स- संचालित-द्वारा: PHP/5.3.29 सर्वर: अपाचे/2.2.31 (यूनिक्स)
और यहाँ हमारे पास CentOS है:
विधि: HTTP/1.1 200 ठीक समाप्ति: गुरु, 19 नवंबर 1981 08:52:00 GMT सेट-कुकी: PHPSESSID=9p60gtunrv7g41iurr814h9rd0; पथ=/ कनेक्शन: जीवित रखें t1.hoster.ru कैश-कंट्रोल: नो-स्टोर, नो-कैश, अवश्य-पुनर्वैधीकरण, पोस्ट-चेक = 0, प्री-चेक = 0 प्राग्मा: नो-कैश दिनांक: शुक्र, 11 दिसंबर 2015 12:08:54 GMT स्थानांतरण-एन्कोडिंग: खंडित सामग्री-प्रकार: टेक्स्ट/एचटीएमएल; वर्णसेट=विंडोज़-1251
विंडोज़ पर, साइटों के लिए एक विशिष्ट फ़ोल्डर है सी:\सर्वर\डेटा\htdocs\. लेकिन, वास्तव में, अगर किसी ने विंडोज़ पर सर्वर बनाने के बारे में "सोचा" है, तो, बहुत संभावना है, इस व्यक्ति ने विशेषाधिकारों के बारे में कुछ भी नहीं सुना है। इसलिए, आपको सीधे C:/Windows/ निर्देशिका से प्रयास शुरू करना चाहिए:
जैसा कि आप देख सकते हैं, पहली बार में सब कुछ ठीक रहा।
लेकिन jSQL इंजेक्शन शेल स्वयं मेरे मन में संदेह पैदा करते हैं। यदि आपके पास फ़ाइल विशेषाधिकार हैं, तो आप वेब इंटरफ़ेस के साथ आसानी से कुछ अपलोड कर सकते हैं।
8. SQL इंजेक्शन के लिए साइटों की थोक जाँच
और यहां तक कि यह फ़ंक्शन jSQL इंजेक्शन में भी उपलब्ध है। सब कुछ बेहद सरल है - साइटों की एक सूची डाउनलोड करें (आप एक फ़ाइल से आयात कर सकते हैं), उन लोगों का चयन करें जिन्हें आप जांचना चाहते हैं और ऑपरेशन शुरू करने के लिए उपयुक्त बटन पर क्लिक करें।
jSQL इंजेक्शन से निष्कर्ष
jSQL इंजेक्शन खोज करने और फिर वेबसाइटों पर पाए जाने वाले SQL इंजेक्शन का उपयोग करने के लिए एक अच्छा, शक्तिशाली उपकरण है। इसके निस्संदेह फायदे: उपयोग में आसानी, अंतर्निहित संबंधित कार्य। वेबसाइटों का विश्लेषण करते समय jSQL इंजेक्शन एक शुरुआती का सबसे अच्छा दोस्त हो सकता है।
कमियों के बीच, मैं डेटाबेस को संपादित करने की असंभवता पर ध्यान दूंगा (कम से कम मुझे यह कार्यक्षमता नहीं मिली)। सभी जीयूआई उपकरणों की तरह, इस कार्यक्रम के नुकसानों में से एक को स्क्रिप्ट में उपयोग करने में असमर्थता के लिए जिम्मेदार ठहराया जा सकता है। फिर भी, इस कार्यक्रम में कुछ स्वचालन भी संभव है - बड़े पैमाने पर साइट जाँच के अंतर्निहित फ़ंक्शन के लिए धन्यवाद।
स्थापित नमूना और प्रमाणपत्र. किसी भी संकाय और पाठ्यक्रम पर विशेष छूट के लिए!
पिछले ब्लॉग लेख में, मैंने वर्डप्रेस के नवीनतम संस्करण के दिलचस्प नवाचारों के बारे में लिखा था - निर्माण और प्रबंधन के लिए एक विशेष तंत्र। अब आम उपयोगकर्ताओं के लिए अलग-अलग जटिलता के मेनू बनाना अधिक सुविधाजनक और आसान हो गया है, जिसमें न केवल पेज या ब्लॉग श्रेणियां शामिल हो सकती हैं, बल्कि किसी भी यूआरएल के लिंक भी हो सकते हैं। टेम्पलेट में मेनू प्रदर्शित करने के लिए, एक विशेष फ़ंक्शन wp_nav_menu का उपयोग किया जाता है - मैं आज आपको इसके बारे में बताऊंगा।
यदि वर्डप्रेस एडमिन में कोई मेनू अनुभाग नहीं है, तो आप function.php फ़ाइल में विशेष कोड जोड़कर इसे सक्रिय कर सकते हैं
यहां सबसे पहले हमारे द्वारा बनाए गए मेनू का नाम है। यह सामान्य स्थिति में विगेट्स के बिना एक फ़ंक्शन का उपयोग है; आपको वहां उनके साथ थोड़ा अलग तरीके से काम करने की आवश्यकता होगी। हालाँकि, wp_nav_menu फ़ंक्शन को तर्कों के बिना आउटपुट किया जा सकता है, जिसके परिणामस्वरूप विभिन्न स्थितियों को "देखा" जाएगा - सबसे पहले, मेनू नाम से एक मिलान, यदि कम से कम एक मेनू आइटम इसके लिए निर्दिष्ट है, अन्यथा एक गैर-रिक्त मेनू बस प्रदर्शित किया जाएगा, आदि। लेकिन फिर, मैं आपको सलाह देता हूं कि आप केवल ऊपर दिए गए कोड का उपयोग करें और यह पता न लगाएं कि बिना तर्क के फ़ंक्शन को क्या आउटपुट देना चाहिए। इसका सिंटैक्स इस प्रकार है:
निम्नलिखित मापदंडों का उपयोग यहां किया जाता है:
$मेनू- मेनू के लिए चयनित पहचानकर्ता - आईडी, स्लग या मेनू नाम।
$कंटेनर- इस सेटिंग का उपयोग करके UL मेनू डिफ़ॉल्ट रूप से DIV कंटेनर में "लिपटा" जाता है।
$container_class- कंटेनर के वर्ग को इंगित करता है, डिफ़ॉल्ट रूप से इसका मान मेनू-(मेनू स्लग)-कंटेनर है, अर्थात, हमारे मामले में, उदाहरण के लिए, एक वर्ग मेनू-प्रथम-कंटेनर होगा।
$container_id— आप कंटेनर में एक आईडी जोड़ सकते हैं, जो डिफ़ॉल्ट रूप से निर्दिष्ट नहीं है।
$मेनू_वर्ग- UL मेनू तत्व के लिए वर्ग, इसका मान मेनू है।
$menu_id- उल तत्व के लिए आईडी, मेनू के लिए डिफ़ॉल्ट-(स्लग)
$गूंज— यदि आप मेनू प्रदर्शित नहीं करना चाहते हैं, लेकिन फ़ंक्शन का मान लौटाना चाहते हैं, तो इस सेटिंग के लिए मान 0 का उपयोग करें।
$फ़ॉलबैक_सीबी— यदि मेनू मौजूद नहीं है, तो wp_page_menu फ़ंक्शन को कॉल किया जाता है।
$पहले- लिंक ए से पहले प्रदर्शित होने वाले टेक्स्ट को सेट करता है।
$लिंक_पहले- लिंक टेक्स्ट से पहले वाक्यांश प्रदर्शित करता है, निर्दिष्ट नहीं है।
$लिंक_बाद- लिंक टेक्स्ट के बाद प्रदर्शित, वह भी खाली।
$गहराई- मेनू प्रदर्शित करने के लिए पदानुक्रम स्तरों की संख्या निर्धारित करता है; डिफ़ॉल्ट मान 0 संपूर्ण मेनू प्रदर्शित करता है।
$वॉकर- किसी प्रकार की समझ से बाहर कस्टम "वॉकर ऑब्जेक्ट", जिसकी संभवतः उन्नत डेवलपर्स को अधिक आवश्यकता है।
$थीम_स्थान- थीम स्थान जहां मेनू का उपयोग किया जाएगा उसे रजिस्टर_एनएवी_मेनू() के माध्यम से सक्रिय किया जाना चाहिए ताकि उपयोगकर्ता इसे चुनने में सक्षम हो सके। विजेट्स के साथ काम करते समय, जाहिरा तौर पर, किसी प्रकार की पूरी तरह से स्पष्ट सेटिंग भी नहीं होती है।
Wp_nav_menu फ़ंक्शन का उपयोग करने के उदाहरण
कोड में दिया गया सबसे सरल कोड है:
मेनू से DIV कंटेनर को हटाया जा रहा है
"")); ?>
सिद्धांत रूप में, वर्डप्रेस 3.0 मेनू बनाने और प्रबंधित करने में कुछ भी जटिल नहीं है। डेवलपर्स ने कार्य प्रक्रिया को काफी सरल बना दिया है और इस नेविगेशन तत्व की क्षमताओं का विस्तार किया है। समाधान का उपयोग अक्सर विभिन्न प्रकार के टेम्पलेट कार्यों में किया जाता है, उदाहरण के लिए, मोबाइल और डेस्कटॉप संस्करणों के लिए बनाते समय। थोड़ी देर बाद मैं इस विषय पर कुछ और अंश जोड़ूंगा।
पी.एस. रक्षक। एसईओ पर वेबमास्टरों के लिए एक दिलचस्प और उपयोगी ब्लॉग, जहां आपको एसईओ के बारे में अपने सवालों के जवाब मिलेंगे।
Aweb कंपनी ने लंबे समय से इंटरनेट पर वेबसाइट प्रमोशन, ऑप्टिमाइज़ेशन और सर्च इंजन प्रमोशन के क्षेत्र में खुद को बहुत अच्छी तरह से स्थापित किया है।
क्योंकि यह मेनू.php मॉड्यूल की सामग्री को उजागर करता है। नीचे हम PHP में अपना स्वयं का मेनू विकास प्रस्तुत करेंगे, जो नोटपैड में स्क्रैच से लिखा गया था।
यह कोड उन गतिशील साइटों के लिए विशेष रूप से उपयोगी होगा जिनमें कस्टम इंजन हैं। मैं दो कोड विकल्प पेश करूंगा जिनमें मामूली अंतर हैं (अंतरों को बाद में समझाया जाएगा)।
आरंभ करने के लिए, मैं उस साइट की अनुमानित संरचना दूंगा जिसके लिए यह मेनू उपयुक्त है। साइट संरचना इस तरह दिखनी चाहिए (क्लासिक दृश्य):
/index.html /razdel_1/ /razdel_1/articles_1.html /razdel_1/articles_2.html ... /razdel_2/ /razdel_2/articles_1.html /razdel_2/articles_2.html ... ... ... /razdel_N/articles_2 .html
साइट में अनुभागों के लिए उपखंड भी हो सकते हैं:
/razdel_1/podzaderl_1/ /razdel_1/podzaderl_1/articles_1.html /razdel_1/podzaderl_1/articles_2.html ... /razdel_1/podzaderl_2/articles_1.html /razdel_1/podzaderl_2/articles_2.html
यह संरचना केवल मामूली अंतर के साथ हमारे मेनू के लिए भी काम करेगी।
मैं php में मेनू के लिए एक अलग फ़ाइल बनाने का सुझाव देता हूँ। उदाहरण के लिए, ऐसी फ़ाइल के लिए मेनू.php एक अच्छा नाम होगा। मेनू को लागू करने के लिए, इसे तुरंत अधिक या कम सुंदर बनाने के लिए सीएसएस में एक मेनू शैली भी प्रदान की जाती है। स्वाभाविक रूप से, यह शैली केवल संदर्भ के लिए दी गई है, क्योंकि साइटों के डिज़ाइन बहुत अलग हैं।
CSS में मेनू स्टाइलिंग के लिए कोड:
.मेनू (ऊंचाई:42पीएक्स; पैडिंग:0 0 0 16पीएक्स; बैकग्राउंड:यूआरएल(इमेज/स्पेसर.पीएनजी) रिपीट;) .मेनू ली (डिस्प्ले:ब्लॉक; फ्लोट:लेफ्ट;) .मेनू ली.एक्टिव (बैकग्राउंड: #00011 ; ) .मेनू ए (रंग:#एफएफएफ; डिस्प्ले:ब्लॉक; लाइन-ऊंचाई:42पीएक्स; टेक्स्ट-सजावट:कोई नहीं; पैडिंग:0 14पीएक्स; ) .मेनू ए:होवर (बैकग्राउंड:यूआरएल(इमेजेज/स्पेसर.पीएनजी) रिपीट ; )
अब, आइए PHP में मेनू लागू करने के पहले विकल्प को देखें, जो थोड़ा सरल है।
PHP में मेनू कोड का पहला संस्करण
\n"; के लिए ($i=0;$i": " "; प्रतिध्वनि " ".$array_menu[$i]["नाम"]।" \n"; ) प्रतिध्वनि ""; ?>
मेनू को दो भागों में विभाजित किया जा सकता है। पहले में $array_menu सूचना सरणी शामिल है, जिसमें अनुभागों के लिंक के साथ हमारे अनुभागों के नाम शामिल हैं। इस डेटा को mySQL डेटाबेस में दर्ज करने का विकल्प है, लेकिन इसमें कोई विशेष बिंदु नहीं है, क्योंकि नमूना बहुत छोटा है, इसलिए इससे काम की गति पर कोई असर नहीं पड़ेगा।
दूसरे भाग में फॉर लूप के माध्यम से मेनू का आउटपुट शामिल है। चक्र साइट पते की तुलना $array_menu सरणी के पते से करता है। यदि कोई मेल है, तो हम एक विशेष सक्रिय वर्ग के साथ अगला मेनू अनुभाग प्रदर्शित करते हैं:
साइट पर मेनू प्रदर्शित होने पर सरणी में क्रम संरक्षित किया जाएगा। अर्थात्, सरणी को उसी क्रम में भरना होगा जिसमें मेनू प्रदर्शित होना चाहिए।
टिप्पणी:
यदि अनुभाग शीर्षकों के यूआरएल (पते) इस तरह दिखते हैं:
/खंड 1
या इस तरह
/razdel_1/nazvanie_razdela.html
तो फिर आपको array_menu में सटीक मिलान लिखना होगा:
$array_menu[$i]["url"]='/razdel_1'
या दूसरे मामले के लिए:
$array_menu[$i]["url"]='/razdel_1/nazvanie_razdela.html';
पहला मेनू विकल्प कैसे काम करता है?
यदि आप अनुभाग शीर्षलेख पते पर हैं तो यह केवल मेनू को हाइलाइट करता है। उदाहरण के लिए, यदि पृष्ठ का पता /razdel_1/articles_1.html है, तो मेनू किसी भी तरह से हाइलाइट नहीं किया जाएगा।
कोड का दूसरा संस्करण पहले का एक संशोधित संस्करण है और अनुभागों में स्थित लेखों में भी मेनू को हाइलाइट करने की क्षमता प्रदान करता है।
PHP में मेनू कोड का दूसरा संस्करण
"; के लिए ($i=0;$i": " "; प्रतिध्वनि ""।$array_menu[$i]["शीर्षक"]।" "; ) अन्य ( इको ($यूआरएल) == ($array_menu[$i]["यूआरएल"]) ? "": " "; प्रतिध्वनि ""।$array_menu[$i]["शीर्षक"]।" "; ) ) प्रतिध्वनि ""; ?>
यदि आप इस प्रश्न के उत्तर में रुचि रखते हैं कि वेबसाइट मेनू कैसे बनाएं, तो आप सही पते पर आए हैं।
हम PHP में एक गतिशील मेनू बनाने पर विचार करेंगे, जो विशेष रूप से प्रोग्रामिंग डमी के साथ-साथ उन लोगों के लिए लिखा गया है जो अभी भी टैंक में हैं।
पाठ 3. किसी वेबसाइट के लिए php में मेनू को गतिशील बनाना - नौसिखियों के लिए
आइए अपनी वेबसाइट का भविष्य का लेआउट बनाएं। ऐसा करने के लिए, हम फ़ोटोशॉप में एक अति सुंदर वेबसाइट बनाएंगे और उसे टुकड़ों में काटेंगे। आइए कल्पना करें कि शीर्ष लेख, लोगो, मेनू और पाद लेख शब्दों में नहीं लिखे गए हैं, जैसा कि इस उदाहरण में है, लेकिन ये साइट के सुंदर और रंगीन ढंग से डिज़ाइन किए गए तत्व हैं।
आइए उदाहरण के लिए तीन पेज बनाएं और उन्हें सेक्शन 1, सेक्शन 2, सेक्शन 3 नाम दें
यह टेक्स्ट अलग-अलग पेजों के लिए अलग-अलग होगा, लेकिन हम इससे परेशान नहीं होंगे और इसे सभी पेजों पर वैसे ही छोड़ देंगे।
आइए PHP में एक वेबसाइट बनाना शुरू करें।
1. हेडर, लोगो, मेनू, फ़ुटर ब्लॉक को php या html एक्सटेंशन के साथ अलग-अलग फ़ाइलों में चुनें
हेडर.एचटीएमएल
लोगो.एचटीएमएल
मेनू.एचटीएमएल
footer.html
आइए इस टेक्स्ट के साथ एक फ़ाइल जोड़ें ताकि हम इसे सभी पेजों पर देख सकें। चलो उसे बुलाते हैं text.html
टिप्पणी। अब से, मैं आगे का रिकॉर्ड सीधे फ़ाइल में रखूँगा। text.html
2. आइए PHP में अपनी वेबसाइट के लिए एक टेम्पलेट बनाएं।
ऐसा करने के लिए, हम एक सरल कार्य करेंगे - वास्तविक फ़ाइल को सहेजें, लेकिन php एक्सटेंशन के साथ और सभी टेक्स्ट सामग्री को मिटा दें। यह पेशेवर नहीं हो सकता है, लेकिन यह समझ में आता है, लेकिन हम बाद में सब कुछ जटिल कर देंगे। अब मुख्य बात लेआउट के सिद्धांत को समझना है।
3. अब हमें template.html फ़ाइल की आवश्यकता नहीं है.
उनके लिए धन्यवाद, हमें पता है कि हमारी साइट कैसी दिखेगी।
4. हमारा टेम्प्लेट template.php फ़ाइल है
अब हम include कमांड का उपयोग करके सभी साइट तत्वों को इसमें सम्मिलित करेंगे।
5. आइए तीन पेज बनाएं, जैसा कि हम शुरू में बनाने जा रहे थे।
खंड 1, चलो कॉल करो 1.php
धारा 2, चलो कॉल करो 2.php
धारा 3, चलो कॉल करो 3.php
ऐसा करने के लिए, आप सबसे सरल कमांड का उपयोग कर सकते हैं के रूप रक्षित करें...
मैं छोटों को समझाता हूँ: फ़ाइल खोलें टेम्पलेट.php, फिर प्रेस के रूप रक्षित करें...और इसे नाम के नीचे सेव करें 1.php, प्रक्रिया को दोहराएं और साइट पृष्ठों को क्रमिक रूप से सहेजें 2.php, 3.php
हमें एक ही डिज़ाइन वाले तीन पेज मिले। बस इसे किसी फ़ाइल के स्थान पर चिपकाएँ text.htmlदूसरा, विभिन्न चित्रों या कुछ HTML कोड, स्क्रिप्ट के साथ पूरक और प्रत्येक पृष्ठ की सामग्री अद्वितीय होगी।
ध्यान!
यदि फ़ाइल नहीं बनाई गई है Index.phpमुख्य पृष्ठ के लिए, फिर ब्राउज़र में, साइट का पता टाइप करने पर, हम साइट को नहीं देखेंगे, बल्कि केवल निर्देशिका संरचना (फ़ोल्डर की सूची) देखेंगे।
आप डेनवर में देख सकते हैं और स्वयं देख सकते हैं। आइए स्थिति को ठीक करें - एक फ़ाइल बनाएं Index.phpऔर चलिए बिना किसी देरी के कॉल करते हैं घर. साथ ही, चलिए एक फ़ाइल बनाते हैं text-home.htmlऔर कमांड का उपयोग कर रहे हैं शामिल करनाइसे साइट के नव निर्मित मुख्य पृष्ठ पर डालें।
6. php में वेबसाइट कैसे देखें?
हम यह नहीं देखेंगे कि क्या हुआ। यह अब html एक्सटेंशन वाला टेम्प्लेट नहीं है।
लेकिन कोई समस्या भी नहीं. हमें अपनी ज़रूरत है, अर्थात्। आपके कंप्यूटर पर स्थानीय सर्वर. ऐसा करने के लिए, हम डेनवर इंस्टॉल करेंगे और ऑनलाइन हुए बिना ब्राउज़र में अपने काम का परिणाम देखेंगे।
अब यह आदेश है. मैंने साइट का पता टाइप किया और वह सब कुछ देखा जो डिज़ाइन के साथ सामान्य रूप में बनाया गया था।
अब आइए साइट के PHP मेनू को देखें।
1. फ़ाइल मेनू.एचटीएमएल खोलें और साइट पर अनुभाग 1, 2 और 3 को लिंक में बदलें। PHP में लिंक अलग-अलग तरीकों से बनाए जाते हैं।
हमारा काम यह सीखना है कि PHP में बनाई गई साइट को कैसे महसूस किया जाए। इसलिए, हम नियमित स्थैतिक साइट अनुभाग 1, आदि की तरह लिंक बनाएंगे।
मुझे मैक्रोमीडिया ड्रीमवीवर में यह लिंक निर्माण प्रक्रिया बेहद पसंद है। फसल काटने का समय है ठीक हैऔर कॉफ़ी पियें.
2. यदि विज़िटर इस पृष्ठ पर है तो मेनू में किसी लिंक को निष्क्रिय कैसे करें।
विज़िटर के लिए यह जानकर साइट पर नेविगेट करना अधिक सुविधाजनक होगा कि वह किस पृष्ठ पर है।
यदि आपने सभी चरणों का बिंदुवार सख्ती से पालन किया है, तो आप देखेंगे कि मेनू में सभी लिंक हमेशा सक्रिय हैं। इसे कैसे जोड़ेंगे?
सबसे पहले, आइए इसकी परिभाषा याद रखें कि यह क्या है सशर्त बयान
- यह तब होता है जब शर्तों के आधार पर कुछ कार्रवाई की जाती है या नहीं की जाती है।
आइए निम्नलिखित कार्य करें:
- हमें ज़रूरत होगी चरऔर एक सशर्त ऑपरेटर:
यदि ($मास्टर == "मुख्य")// यह स्थिति। यदि इसे निष्पादित किया जाता है, तो मेनू के इस स्थान पर, इको कमांड का उपयोग करके, साधारण HTML टैग डाले जाते हैं जो शिलालेख "होम" प्रदर्शित करते हैं।
प्रतिध्वनि"
घर
";अन्य// का अर्थ है "अन्यथा" - यदि शर्त पूरी नहीं हुई तो क्या होगा। इस मामले में, यदि शर्त पूरी नहीं होती है, तो शिलालेख "होम" मुख्य पृष्ठ पर ले जाने वाला एक लिंक होगा।
प्रतिध्वनि"
घर
";- हम शर्त लेकर आए, लेकिन ऐसा चर की जाँच करें – तुम्हें यह पूछने की जरूरत है.
ऐसा करने के लिए, हम सभी पृष्ठों पर निम्नलिखित कोड ब्लॉक रखेंगे:
$मास्टर = "मुख्य";
$मास्टर = "धारा 1";
$मास्टर = "धारा 2";
$मास्टर = "धारा 3";
जैसा कि आप देख सकते हैं, प्रत्येक पृष्ठ का अपना कोड होता है।
तो, PHP मेनू बनाने के लिए हमारे व्यावहारिक चरण इस प्रकार होंगे:
1) फ़ाइल खोलें Index.php
और कोड पेस्ट करें
$मास्टर = "मुख्य";
उस स्थान पर जहां आप कोड डालते हैं जो साइट मेनू को ही प्रदर्शित करता है "menu.html" शामिल करें;
?>
2) फ़ाइल खोलें मेनू.एचटीएमएलऔर मुख्य पृष्ठ पर एक साधारण HTML लिंक के बजाय शर्त के साथ कोड डालें।
हम ब्राउज़र में देखते हैं और प्रशंसा करते हैं! यदि हम मुख्य पृष्ठ पर जाते हैं, तो लिंक अब सक्रिय नहीं है!
3) अंक 1 और 2 को पृष्ठों के साथ दोहराएँ 1.php, 2.php, 3.php
दोहराव 1:
1) फ़ाइल 1.php खोलें और उस कोड से पहले डालें जो किसी दिए गए वेरिएबल के साथ एक मेनू ब्लॉक प्रदर्शित करता है
$मास्टर = "धारा 1";
2) मेनू.एचटीएमएल फ़ाइल खोलें और एक साधारण लिंक के बजाय शर्त के साथ कोड डालें खंड 1, निम्नलिखित परिवर्तन कर रहा हूँ:
यदि ($मास्टर == "धारा 1")// यह स्थिति। यदि इसे निष्पादित किया जाता है, तो मेनू के इस स्थान पर, इको कमांड का उपयोग करके, साधारण HTML टैग डाले जाते हैं जो शिलालेख "धारा 1" प्रदर्शित करते हैं।
प्रतिध्वनि"
खंड 1
";अन्य// का अर्थ है "अन्यथा" - यदि शर्त पूरी नहीं हुई तो क्या होगा। इस मामले में, यदि शर्त पूरी नहीं होती है, तो शिलालेख "धारा 1" मुख्य पृष्ठ पर ले जाने वाला एक लिंक होगा।
प्रतिध्वनि"
खंड 1
";फिर हुआ चमत्कार! अब अगर हम पेज पर हैं खंड 1, मेनू में लिंक सक्रिय नहीं है।
दोहराव सीखने की जननी है! या टैंक में मौजूद लोगों के लिए! दोबारा
पुनरावृत्ति 2
1) खुला फ़ाइल 2.phpऔर कोड पेस्ट करें.
$मास्टर = "धारा 2";
2) Menu.html फ़ाइल को दोबारा खोलें और शर्त के साथ कोड पेस्ट करें
यदि ($मास्टर == "धारा 2")// यह स्थिति। यदि इसे निष्पादित किया जाता है, तो मेनू के इस स्थान पर, इको कमांड का उपयोग करके, साधारण HTML टैग डाले जाते हैं जो शिलालेख "धारा 2" प्रदर्शित करते हैं।
प्रतिध्वनि"
धारा 2
";अन्य// का अर्थ है "अन्यथा" - यदि शर्त पूरी नहीं हुई तो क्या होगा। इस मामले में, यदि शर्त पूरी नहीं होती है, तो शिलालेख "धारा 2" मुख्य पृष्ठ पर ले जाने वाला एक लिंक होगा।
प्रतिध्वनि"
धारा 2
";पुनरावृत्ति 3
1) प्रारंभिक फ़ाइल 3.phpऔर वेरिएबल सेट करें.
$मास्टर = "धारा 3";
2) Menu.html फ़ाइल में हम एक लिंक के बजाय एक शर्त के साथ कोड डालते हैं धारा 3, परिवर्तन हैं:
यदि ($मास्टर == "धारा 3")// यह स्थिति। यदि इसे निष्पादित किया जाता है, तो मेनू के इस स्थान पर, इको कमांड का उपयोग करके, साधारण HTML टैग डाले जाते हैं जो शिलालेख "धारा 3" प्रदर्शित करते हैं।
प्रतिध्वनि"
धारा 3
";अन्य// का अर्थ है "अन्यथा" - यदि शर्त पूरी नहीं हुई तो क्या होगा। इस मामले में, यदि शर्त पूरी नहीं होती है, तो शिलालेख "धारा 3" मुख्य पृष्ठ तक ले जाने वाला एक लिंक होगा।
प्रतिध्वनि"
धारा 3
";जमीनी स्तर: इस प्रकार के मेनू में लिंक के बजाय
घर
खंड 1
धारा 2
धारा 3
PHP के बारे में यह पाठ साइट आगंतुकों के कई अनुरोधों के जवाब में लिखा गया था और यह सीखने के लिए एक व्यावहारिक मार्गदर्शिका है कि PHP में किसी साइट के लिए डायनामिक मेनू कैसे बनाया जाए।
अगले वेबमास्टर की चीट शीट आपको बताएगी कि PHP में प्रत्येक पृष्ठ के लिए अद्वितीय शीर्षक, विवरण और कीवर्ड कैसे बनाएं।
आप सभी साइट टेम्पलेट और php मेनू फ़ाइलों के साथ संग्रह डाउनलोड कर सकते हैं। प्रोग्रामिंग में नए लोगों के लिए अनुशंसित।
यदि आप गंभीरता से PHP का अध्ययन करने के लिए तैयार हैं, तो पोपोव से बेहतर वीडियो पाठ्यक्रम ढूंढना मुश्किल है। उनके पास काफी अनुभव और अच्छी शैली है।'
]]> ]]>