jSQL Injection-ის გამოყენების ინსტრუქცია, მრავალფუნქციური ინსტრუმენტი Kali Linux-ში SQL ინექციების პოვნისა და გამოყენებისთვის. მრავალ დონის მენიუ PHP-ში და MySQL Inurl php-ის საკუთარი მენიუს თამაშის id

არცერთი ვებსაიტი არ არის სრულყოფილი ნავიგაციის ან, როგორც მას ასევე უწოდებენ, "საიტის მენიუს" გარეშე. ასე რომ, საიტის მენიუ შეიძლება იყოს ერთ დონის ან მრავალდონიანი ხის სახით. თუ არ არსებობს განსაკუთრებული სირთულეები ერთ დონის მენიუს განხორციელების თვალსაზრისით, მაშინ მრავალ დონის მენიუს შექმნისას საჭიროა ყურადღებით იფიქროთ.

ამ ამოცანაში ყველაზე მნიშვნელოვანი არის მონაცემთა ბაზის შემუშავება ჩვენი მრავალ დონის მენიუსთვის. მოდით შევქმნათ კატეგორიების ცხრილი სამი ველით id, სათაური, მშობელისად:

  • ID- იდენტიფიკატორი
  • სათაური- მენიუს სახელი
  • მშობელი- ნაგულისხმევი კატეგორიის მშობელი 0

ველი პასუხისმგებელია მენიუს განშტოებაზე მშობელითუ მშობელი = 0, მაშინ ეს კატეგორია არის მშობელი კატეგორია. მშობელთა კატეგორიაში შთამომავლების დასამატებლად, თქვენ უნდა მიუთითოთ მშობლის ველში IDსწორი მშობელი. Მაგალითად:

ცხრილები კატეგორიებით

როგორც ცხრილიდან ჩანს, მშობლის კატეგორია მანქანებიარის ორი შთამომავალი - ეს არის მაზდადა ჰონდადარგის მიხედვით დაკავშირებული მშობელი. და კატეგორიაც მოტოციკლებიორი შთამომავალია კავასაკიდა ჰარლი. ამავდროულად, ნავების კატეგორიას არ ჰყავს შთამომავლები. იმედი მაქვს გესმით, როგორ დააკავშიროთ კატეგორიები.

შემდეგ სიტყვებიდან პრაქტიკაზე გადავდივართ. მოდით შევქმნათ კატეგორიების ცხრილი.

შექმენით ცხრილი, თუ არ არსებობს `კატეგორიები` (`id` int(10) ხელმოუწერელი NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `მშობელი` int(10) ხელმოუწერელი NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ; -- -- მონაცემთა ამოღება ცხრილიდან `კატეგორიები` -- INSERT INTO `categories` (`id`, `სათაური`, `მშობელი`) VALUES (1, "მანქანები", 0), (2, "მოტოციკლები", 0 ) , (3, "მაზდა", 1), (4, "ჰონდა", 1), (5, "კავასაკი", 2), (6, "ჰარლი", 2), (7, "მაზდა 3", 3 ), (8, "Mazda 6", 3), (9, "Sedan", 7), (10, "Hatchback", 7), (11, "Boats", 0), (12, "Liftback" , 8), (13, "კროსოვერი", 8), (14, "თეთრი", 13), (15, "წითელი", 13), (16, "შავი", 13), (17, "მწვანე" , 13), (18, "Mazda CX", 3), (19, "Mazda MX", 3);

მუშაობის ალგორითმი შედგება შემდეგი:

შექმენით კავშირი მონაცემთა ბაზასთან

შეკითხვა ("SET NAMES "utf8""); /* * ეს არის "ოფიციალური" ობიექტზე ორიენტირებული გზა ამის გასაკეთებლად * თუმცა $connect_error არ მუშაობდა PHP 5.2.9 და 5.3.0 ვერსიებამდე. */ if ($mysqli->connect_error) ( die("დაკავშირების შეცდომა (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * თუ დარწმუნებული უნდა იყოთ ვერსიებთან თავსებადობაში 5.2 .9-მდე, * უმჯობესია გამოიყენოთ ეს კოდი */ if (mysqli_connect_error()) ( die("კავშირის შეცდომა (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

ფუნქციის დაწერა კატეგორიების ცხრილიდან მონაცემების მისაღებად

//მიიღეთ ჩვენი მენიუს მასივი მონაცემთა ბაზიდან მასივის ფუნქციის სახით getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //შექმენით მასივი, სადაც მასივის გასაღები არის მენიუს ID $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) დააბრუნებს $ კატა; )

ჩვენ ვიღებთ მსგავს მასივს, სადაც მასივის გასაღები არის კატეგორიის ID.

მყარი ხის აგების ფუნქცია Tommy Lacroix-ისგან

//ფუნქცია ხის ასაგებად მასივიდან Tommy Lacroix ფუნქციიდან getTree($dataset) ( $tree = array(); foreach ($dataset როგორც $id => &$node) ( //თუ არ არის დანართები, თუ ( !$node[" მშობელი"])( $tree[$id] = &$node; )else( //თუ ბავშვები არიან, მაშინ გაიმეორეთ მასივი $dataset[$node["მშობელი"]]["childs "][$id] = &$ node; ) ) დააბრუნეთ $tree;)

ვიღებთ მასივს ხის სახით

მთელი სკრიპტი

შეკითხვა ("SET NAMES "utf8""); /* * ეს არის "ოფიციალური" ობიექტზე ორიენტირებული გზა ამის გასაკეთებლად * თუმცა $connect_error არ მუშაობდა PHP 5.2.9 და 5.3.0 ვერსიებამდე. */ if ($mysqli->connect_error) ( die("დაკავშირების შეცდომა (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * თუ დარწმუნებული უნდა იყოთ ვერსიებთან თავსებადობაში 5.2 .9-მდე, * უმჯობესია გამოიყენოთ ეს კოდი */ if (mysqli_connect_error()) ( die("დაკავშირების შეცდომა (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //მიიღე მასივი ჩვენი მენიუს მონაცემთა ბაზიდან, როგორც მასივის ფუნქცია getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //შექმენით მასივი, სადაც მასივის გასაღები არის მენიუს ID $cat = array(); ხოლო ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) დააბრუნებს $cat; ) //ფუნქცია ხის აგება მასივიდან Tommy Lacroix ფუნქციიდან getTree($dataset) ( $tree = array(); foreach ($dataset როგორც $id => &$node) ( //თუ არ არის დანართები, თუ (!$node[ "მშობელი"])( $tree[$id] = &$node; )else( //თუ შთამომავლები არიან, მაშინ გადადით მასივი $dataset[$node["მშობელი"]]["შვილები"][$ id] = &$node; ) ) დაბრუნება $tree; ) //მიიღეთ მომზადებული მასივი მონაცემებით $cat = getCat($mysqli); //ხის მენიუს შექმნა $tree = getTree($cat); //მენიუს ხის ფუნქციის სახით ჩვენების შაბლონი tplMenu($category)( $menu = "
  • ". $category["title"]."; if(isset($category["childs"]))($menu .= "
      ". showCat($category["childs"]) ."
    "; ) $menu .= "
  • "; return $menu; ) /** * წაიკითხეთ ჩვენი შაბლონი რეკურსიულად **/ ფუნქცია showCat($data)( $string = ""; foreach($data როგორც $item)( $string .= tplMenu($item); ) დააბრუნეთ $string; ) //მიიღეთ HTML მარკირება $cat_menu = showCat($tree); //Echo ჩვენება "
      ".$cat_menu."
    "; ?>

    მუშაობის შედეგი

    მრავალ დონის მენიუ PHP + MySQL-ში ადმინისტრატორის პანელისთვის

    თუ გსურთ გამოიყენოთ ეს მენიუ თქვენი საიტის ადმინისტრაციულ პანელში, მაშინ თქვენ უნდა გადაწეროთ რამდენიმე ფუნქცია. tplMenu(), showCat().

    ".$category["title"].""; )else($menu =" "; ) if(isset($კატეგორია["ბავშვები"]))($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 ""; ?>

    მუშაობის შედეგი

    აირჩიეთ მანქანები → Mazda → → Mazda 3 →→→ სედანი →→→ ჰეჩბეკი →→ Mazda 6 →→→ ლიფტბეკი →→→ კროსოვერი →→→→ თეთრი →→→→ წითელი → →→→ შავი →→→→ მწვანე → Mazda CX →→ Mazda MX → Honda Motorcycles → Kawasaki → Harley Boats

    გაუშვით გადმოწერილი ფაილი ორმაგი დაწკაპუნებით (თქვენ უნდა გქონდეთ ვირტუალური მანქანა).

    3. ანონიმურობა SQL ინექციისთვის საიტის შემოწმებისას

    Tor და Privoxy-ის დაყენება Kali Linux-ში

    [განყოფილება დამუშავების პროცესშია]

    Windows-ზე Tor-ისა და Privoxy-ის დაყენება

    [განყოფილება დამუშავების პროცესშია]

    პროქსის პარამეტრები jSQL Injection-ში

    [განყოფილება დამუშავების პროცესშია]

    4. საიტის შემოწმება SQL ინექციისთვის jSQL Injection-ით

    პროგრამასთან მუშაობა ძალიან მარტივია. უბრალოდ შეიყვანეთ ვებსაიტის მისამართი და დააჭირეთ ENTER.

    შემდეგი სკრინშოტი აჩვენებს, რომ საიტი დაუცველია სამი ტიპის SQL ინექციების მიმართ (მათ შესახებ ინფორმაცია მითითებულია ქვედა მარჯვენა კუთხეში). ინექციების სახელებზე დაწკაპუნებით შეგიძლიათ შეცვალოთ გამოყენებული მეთოდი:

    ასევე, ჩვენთან უკვე ნაჩვენებია არსებული მონაცემთა ბაზები.

    თქვენ შეგიძლიათ ნახოთ თითოეული ცხრილის შინაარსი:

    როგორც წესი, ყველაზე საინტერესო ცხრილების შესახებ არის ადმინისტრატორის რწმუნებათა სიგელები.

    თუ გაგიმართლათ და იპოვნეთ ადმინისტრატორის მონაცემები, მაშინ ძალიან ადრეა გახარება. თქვენ კვლავ უნდა იპოვოთ ადმინისტრატორის პანელი, სადაც უნდა შეიყვანოთ ეს მონაცემები.

    5. მოძებნეთ ადმინისტრაციული პანელები jSQL Injection-ით

    ამისათვის გადადით შემდეგ ჩანართზე. აქ ჩვენ მივესალმებით შესაძლო მისამართების სიას. თქვენ შეგიძლიათ აირჩიოთ ერთი ან მეტი გვერდი შესამოწმებლად:

    მოხერხებულობა მდგომარეობს იმაში, რომ თქვენ არ გჭირდებათ სხვა პროგრამების გამოყენება.

    სამწუხაროდ, არც თუ ისე ბევრი უყურადღებო პროგრამისტია, რომლებიც პაროლებს ინახავენ წმინდა ტექსტში. ხშირად პაროლის ხაზში ჩვენ ვხედავთ რაღაცას

    8743b52063cd84097a65d1633f5c74f5

    ეს არის ჰაში. მისი გაშიფვრა შეგიძლიათ უხეში ძალის გამოყენებით. და... jSQL Injection-ს აქვს ჩაშენებული უხეში ფორსერი.

    6. უხეში ძალის ჰეშები jSQL ინექციის გამოყენებით

    უდავო მოხერხებულობა ის არის, რომ თქვენ არ გჭირდებათ სხვა პროგრამების ძებნა. არსებობს მრავალი ყველაზე პოპულარული ჰეშის მხარდაჭერა.

    ეს არ არის საუკეთესო ვარიანტი. იმისათვის, რომ გახდეთ გურუ ჰეშების გაშიფვრაში, რეკომენდებულია წიგნი "" რუსულ ენაზე.

    მაგრამ, რა თქმა უნდა, როდესაც ხელთ არ არის სხვა პროგრამა ან დრო არ არის შესწავლისთვის, jSQL Injection ჩაშენებული უხეში ძალის ფუნქციით ძალიან გამოდგება.

    არსებობს პარამეტრები: შეგიძლიათ დააყენოთ რომელი სიმბოლოები შედის პაროლში, პაროლის სიგრძის დიაპაზონი.

    7. ფაილის ოპერაციები SQL ინექციების გამოვლენის შემდეგ

    მონაცემთა ბაზებთან ოპერაციების გარდა - მათი წაკითხვა და შეცვლა, თუ SQL ინექციები აღმოჩენილია, შეიძლება შესრულდეს შემდეგი ფაილური ოპერაციები:

    • სერვერზე ფაილების კითხვა
    • სერვერზე ახალი ფაილების ატვირთვა
    • ჭურვების სერვერზე ატვირთვა

    და ეს ყველაფერი დანერგილია jSQL Injection-ში!

    არსებობს შეზღუდვები - SQL სერვერს უნდა ჰქონდეს ფაილის პრივილეგიები. ჭკვიანი სისტემის ადმინისტრატორებს ისინი გამორთული აქვთ და ვერ შეძლებენ ფაილურ სისტემაზე წვდომას.

    ფაილის პრივილეგიების არსებობა საკმაოდ მარტივი შესამოწმებელია. გადადით ერთ-ერთ ჩანართზე (ფაილების კითხვა, ჭურვის შექმნა, ახალი ფაილის ატვირთვა) და შეეცადეთ შეასრულოთ ერთ-ერთი მითითებული ოპერაცია.

    კიდევ ერთი ძალიან მნიშვნელოვანი შენიშვნა - ჩვენ უნდა ვიცოდეთ ფაილის ზუსტი აბსოლუტური გზა, რომლითაც ვიმუშავებთ - წინააღმდეგ შემთხვევაში არაფერი გამოვა.

    შეხედეთ შემდეგ ეკრანის სურათს:

    ფაილზე მუშაობის ნებისმიერ მცდელობაზე, ჩვენ ვიღებთ შემდეგ პასუხს: არ არის FILE პრივილეგია(ფაილის პრივილეგიები არ არის). და აქ არაფერი შეიძლება გაკეთდეს.

    თუ ამის ნაცვლად გაქვთ სხვა შეცდომა:

    [directory_name]-ში ჩაწერის პრობლემა

    ეს ნიშნავს, რომ თქვენ არასწორად მიუთითეთ აბსოლუტური გზა, სადაც გსურთ ფაილის ჩაწერა.

    იმისათვის, რომ გამოიცნოთ აბსოლუტური გზა, თქვენ უნდა იცოდეთ მინიმუმ ოპერაციული სისტემა, რომელზეც მუშაობს სერვერი. ამისათვის გადადით ქსელის ჩანართზე.

    ასეთი ჩანაწერი (ხაზი Win64) გვაძლევს საფუძველს ვივარაუდოთ, რომ საქმე გვაქვს Windows OS-თან:

    Keep-Alive: timeout=5, max=99 სერვერი: Apache/2.4.17 (Win64) PHP/7.0.0RC6 კავშირი: Keep-Alive მეთოდი: HTTP/1.1 200 OK Content-Length: 353 თარიღი: პარასკევი, 115 დეკ. 11:48:31 GMT X-Powered-By: PHP/7.0.0RC6 კონტენტის ტიპი: text/html; charset=UTF-8

    აქ გვაქვს რამდენიმე Unix (*BSD, Linux):

    გადაცემის დაშიფვრა: დაქუცმაცებული თარიღი: პარასკევი, 11 დეკ. 2015 11:57:02 GMT მეთოდი: HTTP/1.1 200 OK Keep-Alive: timeout=3, max=100 კავშირი: keep-alive Content-Type: text/html X- უზრუნველყოფილია: PHP/5.3.29 სერვერი: Apache/2.2.31 (Unix)

    და აქ გვაქვს CentOS:

    მეთოდი: HTTP/1.1 200 OK იწურება: ხუთ, 19 ნოემბერი 1981 08:52:00 GMT Set-cookie: PHPSESSID=9p60gtunrv7g41iurr814h9rd0; path=/ კავშირი: keep-alive X-Cache-Lookup: MISS t1.hoster.ru:6666 სერვერი: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.4.37 X-Cache: MISS-დან t1.hoster.ru Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 პრაგმა: ქეშის გარეშე თარიღი: პარასკე, 11 დეკ. 2015 12:08:54 GMT გადაცემის კოდირება: ნატეხი Content-Type: text/html; charset=WINDOWS-1251

    Windows-ზე, საიტებისთვის ტიპიური საქაღალდეა C:\Server\data\htdocs\. მაგრამ, სინამდვილეში, თუ ვინმეს "უფიქრია" სერვერის გაკეთება Windows-ზე, მაშინ, სავარაუდოდ, ამ ადამიანს არაფერი სმენია პრივილეგიების შესახებ. ამიტომ, თქვენ უნდა დაიწყოთ ცდა პირდაპირ C:/Windows/ დირექტორიადან:

    როგორც ხედავთ, პირველად ყველაფერი კარგად იყო.

    მაგრამ თავად jSQL Injection ჭურვები ჩემს გონებაში ეჭვებს იწვევს. თუ თქვენ გაქვთ ფაილის პრივილეგიები, მაშინ მარტივად შეგიძლიათ ატვირთოთ რაიმე ვებ ინტერფეისით.

    8. საიტების მთლიანი შემოწმება SQL ინექციებისთვის

    და ეს ფუნქციაც კი ხელმისაწვდომია jSQL Injection-ში. ყველაფერი ძალიან მარტივია - ჩამოტვირთეთ საიტების სია (შეიძლება იმპორტირებული იყოს ფაილიდან), შეარჩიეთ ის, რისი შემოწმებაც გსურთ და დააჭირეთ შესაბამის ღილაკს ოპერაციის დასაწყებად.

    დასკვნა jSQL ინექციიდან

    jSQL Injection არის კარგი, ძლიერი ინსტრუმენტი ვებსაიტებზე ნაპოვნი SQL ინექციების მოსაძიებლად და შემდეგ გამოსაყენებლად. მისი უდავო უპირატესობები: გამოყენების სიმარტივე, ჩაშენებული დაკავშირებული ფუნქციები. jSQL Injection შეიძლება იყოს დამწყებთათვის საუკეთესო მეგობარი ვებსაიტების გაანალიზებისას.

    ნაკლოვანებებს შორის აღვნიშნავდი მონაცემთა ბაზების რედაქტირების შეუძლებლობას (ყოველ შემთხვევაში, მე ვერ ვიპოვე ეს ფუნქცია). როგორც ყველა GUI ინსტრუმენტს, ამ პროგრამის ერთ-ერთი მინუსი შეიძლება მივაწეროთ სკრიპტებში გამოყენების უუნარობას. მიუხედავად ამისა, ამ პროგრამაში ასევე შესაძლებელია გარკვეული ავტომატიზაცია - საიტის მასიური სკანირების ჩაშენებული ფუნქციის წყალობით.

    დადგენილი ნიმუში და სერტიფიკატი. სპეციალური ფასდაკლებით ნებისმიერ ფაკულტეტზე და კურსზე!

    ბოლო სტატიაში ბლოგზე დავწერე WordPress-ის უახლესი ვერსიის საინტერესო სიახლეების შესახებ - შექმნისა და მართვის სპეციალური მექანიზმი. ახლა ჩვეულებრივი მომხმარებლებისთვის ბევრად უფრო მოსახერხებელი და მარტივი გახდა სხვადასხვა სირთულის მენიუს შექმნა, რომელიც შეიძლება შედგებოდეს არა მხოლოდ გვერდებისგან ან ბლოგის კატეგორიებისგან, არამედ ჰქონდეს ბმულები ნებისმიერ URL-თან. შაბლონში მენიუს საჩვენებლად გამოიყენება სპეციალური ფუნქცია wp_nav_menu - ამის შესახებ დღეს გეტყვით.

    თუ WordPress-ის ადმინისტრატორში მენიუს განყოფილება არ არის, შეგიძლიათ გაააქტიუროთ იგი functions.php ფაილში სპეციალური კოდის დამატებით.

    აქ პირველ რიგში არის ჩვენ მიერ შექმნილი მენიუს სახელი. ეს არის ფუნქციის გამოყენება ზოგად შემთხვევაში ვიჯეტების გარეშე; თქვენ უნდა იმუშაოთ მათთან ცოტა განსხვავებულად იქ. ამასთან, wp_nav_menu ფუნქცია შეიძლება გამოვიდეს არგუმენტების გარეშე, რის შედეგადაც მოხდება სხვადასხვა სიტუაციების „გადახედვა“ - პირველ რიგში, მენიუს სახელის მიხედვით, თუ მისთვის მითითებულია მინიმუმ ერთი მენიუს ელემენტი, წინააღმდეგ შემთხვევაში, არა ცარიელი მენიუ. უბრალოდ გამოჩნდება და ა.შ. მაგრამ კიდევ ერთხელ, გირჩევთ, უბრალოდ გამოიყენოთ ზემოთ მოცემული კოდი და არ გაარკვიოთ, რა ფუნქცია უნდა გამოვიდეს არგუმენტების გარეშე. მისი სინტაქსი ასეთია:

    აქ გამოიყენება შემდეგი პარამეტრები:

    $ მენიუ- მენიუს არჩეული იდენტიფიკატორი - ID, slug ან მენიუს სახელი.

    $ კონტეინერი- UL მენიუ ნაგულისხმევად "შეფუთულია" DIV კონტეინერში ამ პარამეტრის გამოყენებით.

    $container_class— მიუთითებს კონტეინერის კლასს, ნაგულისხმევად მისი მნიშვნელობა არის menu-(menu slug)-container, ანუ ჩვენს შემთხვევაში, მაგალითად, იქნება კლასის menu-first-container.

    $container_id— შეგიძლიათ დაამატოთ ID კონტეინერში, რომელიც ნაგულისხმევად არ არის მითითებული.

    $menu_class— კლასი UL მენიუს ელემენტისთვის, მისი მნიშვნელობა არის მენიუ.

    $menu_id— ID ul ელემენტისთვის, ნაგულისხმევი მენიუ-(slug)

    $ეხო— თუ არ გსურთ მენიუს ჩვენება, მაგრამ დააბრუნეთ ფუნქციის მნიშვნელობა, გამოიყენეთ მნიშვნელობა 0 ამ პარამეტრისთვის.

    $fallback_cb— თუ მენიუ არ არსებობს, გამოიძახება wp_page_menu ფუნქცია.

    $ ადრე— ადგენს ტექსტს, რომელიც ნაჩვენებია A ბმულის წინ.

    $ბმული_ადრე— აჩვენებს ფრაზას ბმულის ტექსტის წინ, არ არის მითითებული.

    $link_after— ნაჩვენებია ბმულის ტექსტის შემდეგ, ასევე ცარიელი.

    $ სიღრმე— ადგენს იერარქიის დონეების რაოდენობას მენიუს საჩვენებლად; ნაგულისხმევი მნიშვნელობა 0 აჩვენებს მთელ მენიუს.

    $walker- ერთგვარი გაუგებარი საბაჟო „მოსიარულე ობიექტი“, ალბათ უფრო საჭირო დეველოპერებს.

    $theme_location— თემის ადგილმდებარეობა, სადაც მენიუ იქნება გამოყენებული, უნდა გააქტიურდეს register_nav_menu()-ის საშუალებით, რათა მომხმარებელმა შეძლოს მისი არჩევა. ასევე რაღაც არც თუ ისე მკაფიო პარამეტრი, როგორც ჩანს, ვიჯეტებთან მუშაობისას.

    wp_nav_menu ფუნქციის გამოყენების მაგალითები

    კოდში მოცემული უმარტივესი კოდია:

    მენიუდან DIV კონტეინერის ამოღება

    "")); ?>

    პრინციპში, არაფერია რთული WordPress 3.0 მენიუს შექმნასა და მართვაში. დეველოპერებმა მნიშვნელოვნად გაამარტივეს სამუშაო პროცედურა და გააფართოვეს ამ ნავიგაციის ელემენტის შესაძლებლობები. გამოსავალი ხშირად გამოიყენება შაბლონის სხვადასხვა ამოცანებში, მაგალითად, მობილური და დესკტოპის ვერსიებისთვის შექმნისას. ცოტა მოგვიანებით დავამატებ კიდევ რამდენიმე ფრაგმენტს ამ თემაზე.

    P.S. მცველი. ვებმასტერებისთვის საინტერესო და სასარგებლო ბლოგი SEO-ზე, სადაც იპოვით პასუხებს თქვენს შეკითხვებზე SEO-ს შესახებ.
    Aweb კომპანიამ დიდი ხანია ძალიან კარგად დაიმკვიდრა თავი ვებსაიტების პოპულარიზაციის, ოპტიმიზაციისა და საძიებო სისტემების ინტერნეტში პოპულარიზაციის სფეროში.

    რადგან ის ასახავს menu.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.htmlarticles_2

    ეს სტრუქტურა ასევე იმუშავებს ჩვენი მენიუსთვის მხოლოდ მცირე განსხვავებებით.

    მე გთავაზობთ მენიუს ცალკე ფაილის შექმნას php-ში. მაგალითად, menu.php შესანიშნავი სახელი იქნება ასეთი ფაილისთვის. მენიუს განსახორციელებლად, მენიუს სტილი CSS-შიც არის მოწოდებული, რათა დაუყოვნებლივ გახადოს იგი მეტ-ნაკლებად ლამაზი. ბუნებრივია, ეს სტილი მოცემულია მხოლოდ მითითებისთვის, რადგან საიტების დიზაინი ძალიან განსხვავებულია.

    მენიუს სტილის კოდი CSS-ში:

    .menu ( სიმაღლე:42px; padding:0 0 0 16px; background:url(images/spacer.png) გამეორება; ) .menu li ( display:block; float:left; ) .menu li.active (ფონი: #000011 ; ) .menu a ( ფერი:#FFF; ჩვენება:ბლოკი; ხაზის სიმაღლე:42px; ტექსტის დეკორაცია:არცერთი; padding:0 14px; ) .menu a:hover ( background:url(images/spacer.png) გამეორება ;)

    ახლა მოდით შევხედოთ PHP-ში მენიუს დანერგვის პირველ ვარიანტს, რომელიც ოდნავ გამარტივებულია.

    მენიუს კოდის პირველი ვერსია PHP-ში

    \n"; ($i=0;$i ": "
  • "; ექო" ".$array_menu[$i]["სახელი"]."
  • \n";) ექო""; ?>

    მენიუ შეიძლება დაიყოს ორ ნაწილად. პირველი შეიცავს $array_menu ინფორმაციის მასივს, რომელიც შეიცავს ჩვენი სექციების სახელებს სექციების ბმულებით. არსებობს ამ მონაცემების mySQL მონაცემთა ბაზაში შეყვანის შესაძლებლობა, მაგრამ ამაში განსაკუთრებული აზრი არ არის, რადგან ნიმუში ძალიან მცირეა, ასე რომ ეს არ იმოქმედებს მუშაობის სიჩქარეზე.

    მეორე ნაწილი შეიცავს მენიუს გამომავალს for loop-ის მეშვეობით. ციკლი ადარებს საიტის მისამართს $array_menu მასივის მისამართს. თუ არის დამთხვევა, მაშინ ჩვენ ვაჩვენებთ მენიუს შემდეგ განყოფილებას სპეციალური აქტიური კლასით:

  • თორემ უბრალოდ
  • . ეს საშუალებას გვაძლევს გარკვეული ფერით გამოვყოთ მენიუს ის ნაწილი, რომელშიც მომხმარებელი იმყოფება. ჩემი აზრით, ეს აუცილებელია ნებისმიერი საიტისთვის, რათა მომხმარებელმა გაიგოს რომელ განყოფილებაშია.

    მასივის წესრიგი შენარჩუნდება, როდესაც მენიუ გამოჩნდება საიტზე. ანუ, მასივი უნდა იყოს შევსებული იმ თანმიმდევრობით, რომლითაც მენიუ უნდა იყოს ნაჩვენები.

    Შენიშვნა:
    თუ განყოფილების სათაურების URL-ები (მისამართები) ასე გამოიყურება:
    /განყოფილება_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-ში

    "; for ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["სათაური"]."
  • "; ) else (echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$array_menu[$i]["სათაური"]."
  • ";)) ექო""; ?>

    თუ გაინტერესებთ პასუხი კითხვაზე, თუ როგორ უნდა შექმნათ ვებსაიტის მენიუ, მაშინ თქვენ მიხვედით სწორ მისამართზე.

    ჩვენ განვიხილავთ PHP-ში დინამიური მენიუს შექმნას, რომელიც დაწერილია სპეციალურად პროგრამირების დუმებისთვის, ასევე მათთვის, ვინც ჯერ კიდევ სატანკოშია.

    გაკვეთილი 3. მენიუს გაკეთება php-ში ვებსაიტის დინამიურისთვის - დუმებისთვის

    მოდით შევქმნათ ჩვენი ვებსაიტის მომავალი განლაგება. ამისათვის ჩვენ დავხატავთ სუპერ ლამაზ ვებსაიტს Photoshop-ში და დავჭრით მას ნაჭრებად. წარმოვიდგინოთ, რომ სათაური, ლოგო, მენიუ და ქვედა კოლონტიტული სიტყვებით არ არის დაწერილი, როგორც ამ მაგალითში, მაგრამ ეს არის საიტის ელეგანტურად და ფერად შემუშავებული ელემენტები.

    მაგალითად, შევქმნათ სამი გვერდი და ვუწოდოთ მათ სექცია 1, სექცია 2, სექცია 3

    ეს ტექსტი განსხვავებული იქნება სხვადასხვა გვერდისთვის, მაგრამ ჩვენ არ შევაწუხებთ მას და დავტოვებთ მას ისე, როგორც არის ყველა გვერდზე.

    დავიწყოთ ვებსაიტის შექმნა PHP-ში.

    1. აირჩიეთ სათაური, ლოგო, მენიუ, ქვედა კოლონტიტული ბლოკები ცალკეულ ფაილებად php ან html გაფართოებით

    header.html

    logo.html

    menu.html

    footer.html

    მოდით დავამატოთ ფაილი ამ ტექსტით, რათა ყველა გვერდზე დავინახოთ. მოდით დავურეკოთ მას text.html

    Შენიშვნა. ამიერიდან შემდგომ ჩანაწერებს პირდაპირ ფაილში ვინახავ. text.html

    2. შევქმნათ შაბლონი ჩვენი ვებსაიტისთვის PHP-ში.

    ამისათვის ჩვენ გავაკეთებთ მარტივ რამეს - შეინახეთ რეალური ფაილი, მაგრამ php გაფართოებით და წაშალეთ მთელი ტექსტის შინაარსი. შეიძლება პროფესიონალური არ იყოს, მაგრამ გასაგებია, მაგრამ ყველაფერს მოგვიანებით გავართულებთ. ახლა მთავარია გავიგოთ განლაგების პრინციპი.

    3. ახლა ჩვენ არ გვჭირდება template.html ფაილი.

    მისი წყალობით, ჩვენ გვაქვს წარმოდგენა, როგორი იქნება ჩვენი საიტი.

    4. ჩვენი შაბლონი არის template.php ფაილი

    ჩვენ ახლა ჩავსვათ მასში საიტის ყველა ელემენტი ჩათვლით ბრძანების გამოყენებით.

    5. შევქმნათ სამი გვერდი, როგორც თავიდან ვაპირებდით.

    ნაწილი 1, დავურეკოთ 1.php

    განყოფილება 2, დავურეკოთ 2.php

    ნაწილი 3, დავურეკოთ 3.php

    ამისათვის შეგიძლიათ გამოიყენოთ უმარტივესი ბრძანება შეინახე როგორც...

    ნება მომეცით ავუხსნა პატარებს: გახსენით ფაილი template.php, შემდეგ დააჭირეთ შეინახე როგორც...და შეინახეთ სახელით 1.phpგაიმეორეთ პროცედურა და შეინახეთ საიტის გვერდები თანმიმდევრულად 2.php, 3.php

    ჩვენ მივიღეთ 3 გვერდი იგივე დიზაინით. უბრალოდ ჩასვით ის ფაილის ნაცვლად text.htmlსხვა, დამატება სხვადასხვა სურათებით ან ზოგიერთი html კოდით, სკრიპტებით და თითოეული გვერდის შინაარსი უნიკალური იქნება.

    ყურადღება!

    თუ ფაილი არ არის შექმნილი index.phpმთავარი გვერდისთვის, შემდეგ ბრაუზერში, საიტის მისამართის აკრეფით, ჩვენ არ დავინახავთ თავად საიტს, არამედ მხოლოდ დირექტორიას სტრუქტურას (საქაღალდეების სიას).

    შეგიძლიათ დენვერში შეხედოთ და თავად დარწმუნდეთ. მოდით გამოვასწოროთ სიტუაცია - შევქმნათ ფაილი index.phpდა მოდით დაურეკოთ მეტის გარეშე სახლში. ამავდროულად შევქმნათ ფაილი text-home.htmlდა ბრძანების გამოყენებით მოიცავსჩადეთ იგი საიტის ახლად შექმნილ მთავარ გვერდზე.

    6. როგორ ვნახო ვებგვერდი php-ში?

    ჩვენ უბრალოდ ვერ დავინახავთ რა მოხდა. ეს აღარ არის შაბლონი html გაფართოებით.

    მაგრამ არც არის პრობლემა. ჩვენ გვჭირდება ჩვენი, ე.ი. ლოკალური სერვერი თქვენს კომპიუტერში. ამისათვის ჩვენ დავაინსტალირებთ Denver-ს და შევხედავთ ჩვენი მუშაობის შედეგს ბრაუზერში ინტერნეტის გარეშე.

    ახლა ეს არის ბრძანება. დავწერე საიტის მისამართი და ვნახე ყველაფერი რაც ახლახან შეიქმნა ნორმალური სახით დიზაინით.

    ახლა ავიღოთ საიტის PHP მენიუ.

    1. გახსენით file menu.html და გადააქციეთ 1, 2 და 3 განყოფილებები ბმულებად საიტზე. PHP-ში ბმულები იქმნება სხვადასხვა გზით.

    ჩვენი ამოცანაა ვისწავლოთ როგორ ვიგრძნოთ PHP-ში შექმნილი საიტი. ამიტომ, ჩვენ გავაკეთებთ ბმულებს, როგორც ჩვეულებრივ სტატიკურ საიტზე, განყოფილება 1 და ა.შ.

    მე აბსოლუტურად მიყვარს ეს ბმულის შექმნის პროცესი Macromedia Dreamweaver-ში. გქონდეთ მოსავლის დრო კარგიდა დალიე ყავა.

    2. როგორ გავხადოთ ბმული მენიუში უმოქმედო, თუ ვიზიტორი ამ გვერდზეა.

    ვიზიტორისთვის უფრო მოსახერხებელი იქნება საიტზე ნავიგაცია იმის ცოდნა, თუ რომელ გვერდზეა.

    თუ მკაცრად დაიცავით ყველა ნაბიჯი წერტილი-პუნქტით, ნახავთ, რომ მენიუში ყველა ბმული ყოველთვის აქტიურია. როგორ გავასწორო?

    პირველ რიგში, გავიხსენოთ მისი განმარტება პირობითი განცხადებები

    – ეს ის შემთხვევაა, როდესაც გარკვეული ქმედება სრულდება ან არ სრულდება პირობებიდან გამომდინარე.

    მოდით გავაკეთოთ შემდეგი:

    • დაგვჭირდება ცვლადებიდა ერთი პირობითი ოპერატორი:

    თუ ($master == "მთავარი")// ეს მდგომარეობა. თუ ის შესრულებულია, მაშინ მენიუს ამ ადგილას, echo ბრძანების გამოყენებით, ჩასმულია ჩვეულებრივი HTML ტეგები, რომლებიც აჩვენებს წარწერას "Home".

    ექო"

    სახლში

    ";

    სხვა// ნიშნავს „სხვაგვარად“ - რა მოხდება, თუ პირობა არ დაკმაყოფილდება. ამ შემთხვევაში, თუ პირობა არ არის დაკმაყოფილებული, წარწერა "მთავარი" იქნება ბმული, რომელიც მიდის მთავარ გვერდზე.

    ექო"

    სახლში

    ";

    • ჩვენ გამოვედით პირობით, მაგრამ ასე შეამოწმეთ ცვლადითქვენ უნდა გკითხოთ.

    ამისათვის ჩვენ განვათავსებთ შემდეგ კოდის ბლოკებს ყველა გვერდზე:

    $master = "მთავარი";

    $master = "სექცია 1";

    $master = "ნაწილი 2";

    $master = "სექცია 3";

    როგორც ხედავთ, თითოეულ გვერდს აქვს საკუთარი კოდი.

    ასე რომ, ჩვენი პრაქტიკული ნაბიჯები PHP მენიუს შესაქმნელად შემდეგი იქნება:

    1) გახსენით ფაილი index.php

    და ჩასვით კოდი

    $master = "მთავარი";

    იმ ადგილას, სადაც ჩასვით კოდი, რომელიც აჩვენებს თავად საიტის მენიუს მოიცავს "menu.html";
    ?>

    2) გახსენით ფაილი menu.htmlდა ჩადეთ კოდი ძირითადი გვერდის მარტივი html ბმულის ნაცვლად.

    ჩვენ ვუყურებთ ბრაუზერს და აღფრთოვანებული ვართ! მთავარ გვერდზე რომ გადავალთ, ბმული აღარ არის აქტიური!

    3) გაიმეორეთ 1 და 2 პუნქტები გვერდებთან ერთად 1.php, 2.php, 3.php

    გამეორება 1:

    1) გახსენით ფაილი 1.php და ჩადეთ კოდის წინ, რომელიც აჩვენებს მენიუს ბლოკს მოცემული ცვლადით

    $master = "სექცია 1";

    2) გახსენით menu.html ფაილი და ჩასვით კოდი პირობით, მარტივი ბმულის ნაცვლად ნაწილი 1, შეიტანეთ შემდეგი ცვლილებები:

    if ($master == "სექცია 1")// ეს მდგომარეობა. თუ ის შესრულებულია, მაშინ მენიუს ამ ადგილას, echo ბრძანების გამოყენებით, ჩასმულია ჩვეულებრივი HTML ტეგები, რომლებიც აჩვენებს წარწერას "სექცია 1".

    ექო"

    ნაწილი 1

    ";

    სხვა// ნიშნავს „სხვაგვარად“ - რა მოხდება, თუ პირობა არ დაკმაყოფილდება. ამ შემთხვევაში, თუ პირობა არ არის დაკმაყოფილებული, წარწერა „სექცია 1“ იქნება ბმული, რომელიც მიდის მთავარ გვერდზე.

    ექო"

    ნაწილი 1

    ";

    სასწაული ისევ მოხდა! ახლა თუ ჩვენ გვერდზე ვართ ნაწილი 1, მენიუში ბმული არ არის აქტიური.

    გამეორება სწავლის დედაა! ან ტანკში მყოფთათვის! ისევ

    გამეორება 2

    1) გახსენით ფაილი 2.phpდა ჩასვით კოდი.

    $master = "ნაწილი 2";

    2) კვლავ გახსენით menu.html ფაილი და ჩასვით კოდი პირობით

    თუ ($master == "სექცია 2")// ეს მდგომარეობა. თუ ის შესრულებულია, მაშინ მენიუს ამ ადგილას, echo ბრძანების გამოყენებით, ჩასმულია ჩვეულებრივი HTML ტეგები, რომლებიც აჩვენებს წარწერას "სექცია 2".

    ექო"

    განყოფილება 2

    ";

    სხვა// ნიშნავს „სხვაგვარად“ - რა მოხდება, თუ პირობა არ დაკმაყოფილდება. ამ შემთხვევაში, თუ პირობა არ არის დაკმაყოფილებული, წარწერა „მე-2 სექცია“ იქნება ბმული, რომელიც მიდის მთავარ გვერდზე.

    ექო"

    განყოფილება 2

    ";

    გამეორება 3

    1) გახსნა ფაილი 3.phpდა დააყენეთ ცვლადი.

    $master = "სექცია 3";

    2) მენიუ.html ფაილში ბმულის ნაცვლად კოდს ვსვამთ პირობით ნაწილი 3, ცვლილებებია:

    if ($master == "სექცია 3")// ეს მდგომარეობა. თუ ის შესრულებულია, მაშინ მენიუს ამ ადგილას, echo ბრძანების გამოყენებით, ჩასმულია ჩვეულებრივი HTML ტეგები, რომლებიც აჩვენებს წარწერას "სექცია 3".

    ექო"

    ნაწილი 3

    ";

    სხვა// ნიშნავს „სხვაგვარად“ - რა მოხდება, თუ პირობა არ დაკმაყოფილდება. ამ შემთხვევაში, თუ პირობა არ არის დაკმაყოფილებული, წარწერა „მე-3 სექცია“ იქნება ბმული, რომელიც მიდის მთავარ გვერდზე.

    ექო"

    ნაწილი 3

    ";

    ქვედა ხაზი: ამ ტიპის მენიუში ბმულების ნაცვლად

    სახლში


    ნაწილი 1

    განყოფილება 2


    ნაწილი 3

    ეს გაკვეთილი php-ის შესახებ დაიწერა საიტის ვიზიტორების მრავალი მოთხოვნის საპასუხოდ და არის პრაქტიკული გზამკვლევი იმისათვის, რომ ისწავლოთ როგორ შექმნათ დინამიური მენიუ საიტისთვის php-ში.

    შემდეგი ვებმასტერის მოტყუების ფურცელი გეტყვით, თუ როგორ უნდა შექმნათ უნიკალური სათაურები, აღწერილობები და საკვანძო სიტყვები PHP-ში თითოეული გვერდისთვის.

    თქვენ შეგიძლიათ ჩამოტვირთოთ არქივი საიტის ყველა შაბლონით და php მენიუს ფაილებით. რეკომენდირებულია მათთვის, ვინც პროგრამირებას იწყებს.

    თუ მზად ხართ სერიოზულად შეისწავლოთ PHP, მაშინ ძნელია იპოვოთ უკეთესი ვიდეო კურსი პოპოვისგან. მას აქვს დიდი გამოცდილება და კარგი სტილი.

    ]]> ]]>



  • 2024 | კომპიუტერები ყველასთვის - დაყენება, ინსტალაცია, აღდგენა