Kali Linuxda SQL in'ektsiyalarini topish va ulardan foydalanish uchun ko'p funksiyali vosita bo'lgan jSQL Injection-dan foydalanish bo'yicha ko'rsatmalar. PHP va MySQL Inurl php-dagi ko'p darajali menyu o'z menyusi o'yin identifikatori

Hech bir veb-sayt navigatsiyasiz yoki ular buni "sayt menyusi" deb atashadi. Shunday qilib, sayt menyusi daraxt shaklida bir darajali yoki ko'p darajali bo'lishi mumkin. Agar bitta darajali menyu bilan amalga oshirishda alohida qiyinchiliklar bo'lmasa, unda ko'p darajali menyu yaratishda siz diqqat bilan o'ylashingiz kerak.

Bu vazifada eng muhim narsa ko'p darajali menyumiz uchun ma'lumotlar bazasini loyihalashdir. Keling, uchta maydondan iborat Categories jadvalini yarataylik id, sarlavha, ota-ona Qayerda:

  • ID- identifikator
  • Sarlavha- Menyu nomi
  • Ota-ona- Odatiy toifa ota-onasi 0

Maydon menyuni tarmoqlash uchun javobgardir Ota-ona Agar Ota-ona = 0, keyin bu toifa ota-toifa hisoblanadi. Asosiy toifaga avlodlarni qo'shish uchun ota-ona maydonida ko'rsatishingiz kerak ID to'g'ri ota-ona. Masalan:

Kategoriyalar bilan jadvallar

Jadvaldan ko'rinib turibdiki, ota-ona toifasi Avtomobillar ikkita avlod bor - bu Mazda Va Honda sohaga oid Ota-ona. Va kategoriya Mototsikllar ikki avlod Kavasaki Va Xarli. Shu bilan birga, Qayiqlar toifasining avlodlari yo'q. Umid qilamanki, siz toifalarni qanday bog'lashni tushunasiz.

Keyin so'zlardan amaliyotga o'tamiz. Keling, Kategoriyalar jadvalini yarataylik.

AGAR MAVJUD BO'LSA JADVAL YARATING `kategoriyalar` (`id` int(10) unsigned NO NULL AUTO_INCREMENT, `title` varchar(255) NO NULL, `parent` int(10) unsigned NO NULL, BIRINCHI KEY (`id`)) ENGINE=MyISAM SUVGA CHARSE =utf8 AUTO_INCREMENT=20 ; -- -- “Kategoriyalar” jadvalidan maʼlumotlar yigʻish -- INSERT INTO “toifalar” (ʻidʼ, ʻnomʼ, ʻota-onaʼ) VALUES (1, “Avtomobillar”, 0), (2, “Mototsikllar”, 0 ) , (3, "Mazda", 1), (4, "Honda", 1), (5, "Kawasaki", 2), (6, "Harley", 2), (7, "Mazda 3", 3 ), (8, "Mazda 6", 3), (9, "Sedan", 7), (10, "Xetchbek", 7), (11, "Qayiqlar", 0), (12, "Liftback" , 8), (13, "Krossover", 8), (14, "Oq", 13), (15, "Qizil", 13), (16, "Qora", 13), (17, "Yashil" , 13), (18, "Mazda CX", 3), (19, "Mazda MX", 3);

Ish algoritmi quyidagilardan iborat:

Ma'lumotlar bazasiga ulanishni yarating

query("NOMLARNI SET "utf8""); /* * Buni amalga oshirishning "rasmiy" ob'ektga yo'naltirilgan usuli * ammo $connect_error PHP 5.2.9 va 5.3.0 versiyalarigacha ishlamadi. */ if ($mysqli->connect_error) ( die("Ulanish xatosi (" . $mysqli->connect_errno. ") " . $mysqli->connect_error); ) /* * Agar versiyalar bilan mos kelishiga ishonchingiz komil bo'lsa 5.2 .9 dan oldin * bu kodni ishlatish yaxshiroqdir */ if (mysqli_connect_error()) ( die("Ulanish xatosi (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

Kategoriyalar jadvalidan ma'lumotlarni olish funksiyasini yozish

//Ma’lumotlar bazasidan menyumiz massivini massiv funksiyasi sifatida oling getCat($mysqli)( $sql = “SELECT * FROM `categories`”; $res = $mysqli->query($sql); //Yaratish massiv, bu erda massivning kaliti menyu identifikatori $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $ mushuk;)

Biz shunday massivni olamiz, bu yerda massiv kaliti toifa identifikatori hisoblanadi.

Tommy Lacroix-dan qattiq yog'och qurish funktsiyasi

//Tommy Lacroix-dan massivdan daraxt qurish funksiyasi getTree($dataset) ( $tree = array(); foreach ($id => &$tugun) ( //Qoʻshimchalar boʻlmasa, agar ( !$node[" parent"])( $tree[$id] = &$node; )else( //Agar bolalar boʻlsa, $dataset[$node["parent"]]["childs massivini takrorlang. "][$id] = &$ tugun; ) ) $tree; ni qaytaring)

Biz daraxt ko'rinishidagi massivni olamiz

To'liq skript

query("NOMLARNI SET "utf8""); /* * Buni amalga oshirishning "rasmiy" ob'ektga yo'naltirilgan usuli * ammo $connect_error PHP 5.2.9 va 5.3.0 versiyalarigacha ishlamadi. */ if ($mysqli->connect_error) ( die("Ulanish xatosi (" . $mysqli->connect_errno. ") " . $mysqli->connect_error); ) /* * Agar versiyalar bilan mos kelishiga ishonchingiz komil bo'lsa 5.2 .9 dan oldin, * bu kodni ishlatgan ma'qul */ if (mysqli_connect_error()) ( die("Ulanish xatosi (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //Masivni oling getCat($mysqli)($sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Massiv kaliti joylashgan massivni yarating. menyu identifikatori $cat = array(); while ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat; ) //Funktsiya uchun Tommy Lacroix funksiyasidan massivdan daraxt qurish getTree($dataset) ( $tree = array(); foreach ($id => &$tugun) ( //Agar qo‘shimchalar bo‘lmasa, agar (!$tugun[) "ota-ona"])( $tree[$id] = &$node; )else( //Agar avlodlar boʻlsa, $dataset[$node["parent"]]["childs"][$ massividan oʻting. id] = &$tugun; ) ) return $tree; ) //ma'lumotlar bilan tayyorlangan massivni oling $cat = getCat($mysqli); //Daraxt menyusini yaratish $tree = getTree($cat); //Menyuni daraxt funksiyasi koʻrinishida koʻrsatish uchun shablon tplMenu($category)( $menu = "
  • ". $category["title"].""; if(isset($category["childs"]))( $menu .= "
      ". showCat($category["childs"]) ."
    "; ) $menu .= "
  • "; return $menu; ) /** * Shablonimizni rekursiv o'qing **/ function showCat($data)( $string = ""; foreach($ma'lumotlar $item sifatida)( $string .= tplMenu($item); ) return $string; ) //HTML belgisini oling $cat_menu = showCat($tree); //Echo ko'rsatish "
      ".$cat_menu."
    "; ?>

    Ish natijasi

    Administrator paneli uchun PHP + MySQL-da ko'p darajali menyu

    Agar siz ushbu menyudan saytingizning administrator panelida foydalanmoqchi bo'lsangiz, u holda bir nechta funksiyalarni qayta yozishingiz kerak. tplMenu(), showCat().

    ".$category["title"].""; )else( $menu = " "; ) 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 ""; ?>

    Ish natijasi

    Avtomobillar → Mazda →→ Mazda 3 →→→ Sedan →→→ Xetchbek →→ Mazda 6 →→→ Liftback →→→ Krossover →→→→ Oq →→→ Qizil → →→→ Qora →→→→ Yashil →→ Mazda CX → → Mazda MX → Honda Mototsikllari → Kawasaki → Harley Boats

    Yuklab olingan faylni ikki marta bosish orqali ishga tushiring (sizda virtual mashina bo'lishi kerak).

    3. SQL in'ektsiyasi uchun saytni tekshirishda anonimlik

    Kali Linux-da Tor va Privoxy-ni sozlash

    [Bo'lim ishlab chiqilmoqda]

    Windows-da Tor va Privoxy-ni sozlash

    [Bo'lim ishlab chiqilmoqda]

    jSQL Injection-da proksi sozlamalari

    [Bo'lim ishlab chiqilmoqda]

    4. JSQL Injection bilan SQL in'ektsiyasi uchun saytni tekshirish

    Dastur bilan ishlash juda oddiy. Shunchaki veb-sayt manzilini kiriting va ENTER tugmasini bosing.

    Quyidagi skrinshotda sayt uchta turdagi SQL in'ektsiyalariga nisbatan zaif ekanligini ko'rsatadi (ular haqida ma'lumot pastki o'ng burchakda ko'rsatilgan). In'ektsiya nomlarini bosish orqali siz ishlatiladigan usulni o'zgartirishingiz mumkin:

    Bundan tashqari, mavjud ma'lumotlar bazalari allaqachon bizga ko'rsatilgan.

    Har bir jadvalning mazmunini ko'rishingiz mumkin:

    Odatda, jadvallar haqida eng qiziqarli narsa administrator hisob ma'lumotlaridir.

    Agar omadingiz bo'lsa va administrator ma'lumotlarini topsangiz, quvonishga hali erta. Ushbu ma'lumotlarni kiritish uchun siz hali ham administrator panelini topishingiz kerak.

    5. jSQL Injection yordamida administrator panellarini qidiring

    Buni amalga oshirish uchun keyingi yorliqga o'ting. Bu erda bizni mumkin bo'lgan manzillar ro'yxati kutib oladi. Tekshirish uchun bir yoki bir nechta sahifani tanlashingiz mumkin:

    Qulaylik shundaki, boshqa dasturlardan foydalanish shart emas.

    Afsuski, parollarni aniq matnda saqlaydigan beparvo dasturchilar unchalik ko'p emas. Ko'pincha parol qatorida biz shunga o'xshash narsalarni ko'ramiz

    8743b52063cd84097a65d1633f5c74f5

    Bu hash. Siz qo'pol kuch yordamida uni parolini hal qilishingiz mumkin. Va... jSQL Injection o'rnatilgan qo'pol kuchga ega.

    6. JSQL Injection yordamida qo'pol kuch xeshlari

    Shubhasiz qulaylik shundaki, siz boshqa dasturlarni qidirishingiz shart emas. Ko'pgina eng mashhur xeshlarni qo'llab-quvvatlash mavjud.

    Bu eng yaxshi variant emas. Xeshlarni dekodlash bo'yicha guru bo'lish uchun rus tilidagi "" kitobi tavsiya etiladi.

    Ammo, albatta, boshqa dastur bo'lmaganda yoki o'rganishga vaqt bo'lmasa, jSQL Injection o'rnatilgan qo'pol kuch funktsiyasi bilan juda foydali bo'ladi.

    Sozlamalar mavjud: parolga qaysi belgilar kiritilganligini, parol uzunligi oralig'ini belgilashingiz mumkin.

    7. SQL inyeksiyalarini aniqlagandan keyin fayl operatsiyalari

    Ma'lumotlar bazalari bilan operatsiyalardan tashqari - ularni o'qish va o'zgartirish, agar SQL in'ektsiyalari aniqlansa, quyidagi fayl operatsiyalarini bajarish mumkin:

    • serverdagi fayllarni o'qish
    • serverga yangi fayllarni yuklash
    • qobiqlarni serverga yuklash

    Va bularning barchasi jSQL Injection-da amalga oshiriladi!

    Cheklovlar mavjud - SQL server fayl huquqlariga ega bo'lishi kerak. Aqlli tizim ma'murlari ularni o'chirib qo'ygan va fayl tizimiga kirish imkoniga ega bo'lmaydi.

    Fayl huquqlarining mavjudligini tekshirish juda oddiy. Yorliqlardan biriga o'ting (fayllarni o'qish, qobiq yaratish, yangi faylni yuklash) va belgilangan operatsiyalardan birini bajarishga harakat qiling.

    Yana bir muhim eslatma - biz ishlaydigan faylga aniq mutlaq yo'lni bilishimiz kerak - aks holda hech narsa ishlamaydi.

    Quyidagi skrinshotga qarang:

    Fayl bilan ishlashga urinish uchun biz quyidagi javobni olamiz: FILE imtiyozi yo'q(fayl imtiyozlari yo'q). Va bu erda hech narsa qilish mumkin emas.

    Buning o'rniga sizda boshqa xato bo'lsa:

    [katalog_nomi] ga yozishda muammo

    Bu siz faylni yozmoqchi bo'lgan mutlaq yo'lni noto'g'ri ko'rsatganingizni anglatadi.

    Mutlaq yo'lni taxmin qilish uchun siz hech bo'lmaganda server ishlayotgan operatsion tizimni bilishingiz kerak. Buning uchun "Tarmoq" yorlig'iga o'ting.

    Bunday rekord (chiziq Win64) biz Windows OS bilan ishlaymiz deb taxmin qilishimizga asos beradi:

    Keep-Alive: timeout=5, max=99 Server: Apache/2.4.17 (Win64) PHP/7.0.0RC6 Ulanish: Keep-Alive usuli: HTTP/1.1 200 OK Kontent uzunligi: 353 Sana: Juma, 11-dekabr 2015-yil 11:48:31 GMT X-Powered-By: PHP/7.0.0RC6 Kontent turi: matn/html; charset=UTF-8

    Mana bizda Unix (*BSD, Linux) mavjud:

    Transfer-kodlash: parchalangan sana: 2015-yil 11-dekabr 11:57:02 GMT usuli: HTTP/1.1 200 OK Jonli saqlash: vaqt tugashi=3, maks=100 Ulanish: tirik qolish Kontent turi: matn/html X- Muallif: PHP/5.3.29 Server: Apache/2.2.31 (Unix)

    Va bizda CentOS mavjud:

    Usul: HTTP/1.1 200 OK Muddati tugaydi: 1981 yil 19-noyabr, payshanba, 08:52:00 GMT oʻrnatilgan cookie: PHPSESSID=9p60gtunrv7g41iurr814h9rd0; path=/ Ulanish: keep-alive X-Cache-Lookup: MISS from t1.hoster.ru:6666 Server: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.4.37 X-Kesh: MISS dan t1.hoster.ru Kesh-nazorat: do'kon yo'q, kesh yo'q, qayta tekshirish kerak, tekshirishdan keyingi=0, oldindan tekshirish=0 Pragma: kesh yo'q Sana: 2015 yil 11 dekabr, 12:08:54 GMT Transfer-kodlash: bo'laklangan tarkib turi: matn/html; charset=WINDOWS-1251

    Windows-da saytlar uchun odatiy papka mavjud C:\Server\data\htdocs\. Ammo, aslida, agar kimdir Windows-da server yaratish haqida "o'ylagan" bo'lsa, demak, bu odam imtiyozlar haqida hech narsa eshitmagan. Shuning uchun siz to'g'ridan-to'g'ri C:/Windows/ katalogidan urinib ko'rishingiz kerak:

    Ko'rib turganingizdek, birinchi marta hamma narsa yaxshi bo'ldi.

    Ammo jSQL Injection qobiqlarining o'zi mening miyamda shubhalarni keltirib chiqaradi. Agar sizda fayl huquqlari bo'lsa, veb-interfeys yordamida biror narsani osongina yuklashingiz mumkin.

    8. SQL in'ektsiyalari uchun saytlarni ommaviy tekshirish

    Va hatto bu funksiya jSQL Injection-da mavjud. Hammasi juda oddiy - saytlar ro'yxatini yuklab oling (fayldan import qilinishi mumkin), tekshirmoqchi bo'lganlarni tanlang va operatsiyani boshlash uchun tegishli tugmani bosing.

    jSQL Injection dan xulosa

    jSQL Injection - bu veb-saytlarda topilgan SQL in'ektsiyalarini qidirish va undan keyin foydalanish uchun yaxshi, kuchli vosita. Uning shubhasiz afzalliklari: foydalanish qulayligi, o'rnatilgan tegishli funktsiyalar. jSQL Injection veb-saytlarni tahlil qilishda yangi boshlanuvchilar uchun eng yaxshi do'st bo'lishi mumkin.

    Kamchiliklar orasida men ma'lumotlar bazalarini tahrirlashning iloji yo'qligini ta'kidlagan bo'lardim (hech bo'lmaganda men bu funktsiyani topmadim). Barcha GUI vositalarida bo'lgani kabi, ushbu dasturning kamchiliklaridan biri uning skriptlarda ishlata olmasligi bilan bog'liq bo'lishi mumkin. Shunga qaramay, ushbu dasturda ba'zi avtomatlashtirish ham mumkin - o'rnatilgan saytni ommaviy skanerlash funktsiyasi tufayli.

    belgilangan namuna va sertifikat. Har qanday fakultet va kurslarga maxsus chegirma uchun!

    Oxirgi blog maqolasida men WordPressning so'nggi versiyasining qiziqarli yangiliklari haqida yozgan edim - yaratish va boshqarish uchun maxsus mexanizm . Endi oddiy foydalanuvchilar uchun nafaqat sahifalar yoki blog toifalaridan iborat bo'lishi mumkin bo'lgan, balki har qanday URL manziliga havolalar bo'lishi mumkin bo'lgan turli xil murakkablikdagi menyularni yaratish ancha qulay va osonroq bo'ldi. Shablondagi menyuni ko'rsatish uchun maxsus wp_nav_menu funksiyasidan foydalaniladi - bu haqda bugun aytib beraman.

    Agar WordPress administratorida menyu bo'limi bo'lmasa, uni functions.php fayliga maxsus kod qo'shish orqali faollashtirishingiz mumkin.

    Bu erda birinchi navbatda biz yaratgan menyuning nomi. Bu funksiyadan umumiy holatda vidjetlarsiz foydalanish; u yerda ular bilan biroz boshqacha ishlashingiz kerak bo‘ladi. Biroq, wp_nav_menu funktsiyasi argumentlarsiz chiqarilishi mumkin, buning natijasida turli vaziyatlar "ko'rib chiqiladi" - birinchi navbatda, menyu nomi bo'yicha mos keladi, agar u uchun kamida bitta menyu bandi ko'rsatilgan bo'lsa, aks holda bo'sh bo'lmagan menyu oddiygina ko'rsatiladi va hokazo. Ammo yana, men sizga yuqoridagi kodni ishlatishingizni maslahat beraman va argumentsiz funktsiya nima chiqishi kerakligini tushunmang. Uning sintaksisi quyidagicha:

    Bu erda quyidagi parametrlar qo'llaniladi:

    $menyu— menyu uchun tanlangan identifikator — ID, slug yoki menyu nomi.

    $konteyner- UL menyusi sukut bo'yicha ushbu parametr yordamida DIV konteyneriga "o'ralgan".

    $container_class— konteyner sinfini bildiradi, sukut bo'yicha uning qiymati menyu-(menyu slug)-konteyner, ya'ni bizning holatlarimizda, masalan, sinf menyusi-birinchi konteyner bo'ladi.

    $container_id— konteynerga sukut boʻyicha koʻrsatilmagan ID qoʻshishingiz mumkin.

    $menu_class— UL menyu elementi uchun sinf, uning qiymati menyu.

    $menu_id— ul elementi identifikatori, sukut boʻyicha menyu-(slug)

    $echo— agar siz menyuni ko'rsatishni xohlamasangiz, lekin funksiya qiymatini qaytarsangiz, ushbu sozlama uchun 0 qiymatidan foydalaning.

    $fallback_cb— agar menyu mavjud bo'lmasa, wp_page_menu funksiyasi chaqiriladi.

    $oldin— A havolasidan oldin ko'rsatiladigan matnni o'rnatadi.

    $link_before— havola matnidan oldingi iborani ko'rsatadi, ko'rsatilmagan.

    $link_after— havola matnidan keyin ko'rsatiladi, shuningdek bo'sh.

    $chuqurlik— menyuni ko'rsatish uchun ierarxiya darajalari sonini o'rnatadi; standart qiymat 0 butun menyuni ko'rsatadi.

    $walker- qandaydir tushunarsiz odatiy "yuruvchi ob'ekt", ehtimol ilg'or ishlab chiquvchilarga ko'proq kerak.

    $theme_location— foydalanuvchi tanlay olishi uchun menyudan foydalaniladigan mavzuni register_nav_menu() orqali faollashtirish kerak. Bundan tashqari, vidjetlar bilan ishlashda, ehtimol, mutlaqo aniq bo'lmagan sozlamalar.

    wp_nav_menu funksiyasidan foydalanishga misollar

    Kodda berilgan eng oddiy kod:

    Menyudan DIV konteynerini olib tashlash

    "")); ?>

    Printsipial jihatdan WordPress 3.0 menyusini yaratish va boshqarishda hech qanday murakkab narsa yo'q. Ishlab chiquvchilar ish tartibini sezilarli darajada soddalashtirdilar va ushbu navigatsiya elementining imkoniyatlarini kengaytirdilar. Yechim ko'pincha turli xil shablon vazifalarida, masalan, mobil va ish stoli versiyalarini yaratishda qo'llaniladi. Birozdan keyin men mavzu bo'yicha yana bir nechta parcha qo'shaman.

    P.S. Qo'riqchi. SEO bo'yicha veb-ustalar uchun qiziqarli va foydali blog, u erda siz SEO haqidagi savollaringizga javob topasiz.
    Aweb kompaniyasi uzoq vaqtdan beri veb-saytlarni reklama qilish, optimallashtirish va Internetda qidiruv tizimini ilgari surish sohasida o'zini juda yaxshi ko'rsatdi.

    Chunki u menu.php modulining mazmunini ochib beradi. Quyida biz PHP-da noldan bloknotda yozilgan o'z menyuimizni ishlab chiqishimizni taqdim etamiz.

    Ushbu kod, ayniqsa, maxsus dvigatellari bo'lgan dinamik saytlar uchun foydali bo'ladi. Men kichik farqlarga ega bo'lgan ikkita kod variantini taklif qilaman (farqlar keyinroq tushuntiriladi).

    Boshlash uchun men ushbu menyu mos keladigan saytning taxminiy tuzilishini beraman. Sayt tuzilishi quyidagicha ko'rinishi kerak (klassik ko'rinish):

    /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

    Saytda shuningdek bo'limlar uchun bo'limlar bo'lishi mumkin:

    /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

    Ushbu tuzilma, shuningdek, kichik farqlar bilan bizning menyumiz uchun ham ishlaydi.

    Men php da menyu uchun alohida fayl yaratishni taklif qilaman. Misol uchun, menu.php bunday fayl uchun ajoyib nom bo'ladi. Menyuni amalga oshirish uchun CSS-dagi menyu uslubi uni darhol ko'proq yoki kamroq chiroyli qilish uchun taqdim etiladi. Tabiiyki, bu uslub faqat ma'lumot uchun berilgan, chunki saytlarning dizaynlari juda boshqacha.

    CSS-da menyu uslubini yaratish uchun kod:

    .menu (balandlik:42px; toʻldirish:0 0 0 16px; fon:url(images/spacer.png) takrorlash; ) .menu li (displey:blok; float:chap; ) .menu li.active ( fon: #000011 ; ) .menyu a (rang:#FFF; displey:blok; chiziq balandligi:42px; matn dekoratsiyasi:yo‘q; to‘ldirish:0 14px; ) .menyu a:hover (fon:url(images/spacer.png) takrorlash ;)

    Endi PHPda menyuni amalga oshirishning birinchi variantini ko'rib chiqamiz, bu biroz soddalashtirilgan.

    PHP da menyu kodining birinchi versiyasi

    \n"; uchun ($i=0;$i ": "
  • "; aks-sado " ".$array_menu[$i]["name"]."
  • \n"; ) echo ""; ?>

    Menyuni ikki qismga bo'lish mumkin. Birinchisi $array_menu ma'lumotlar massivini o'z ichiga oladi, unda bo'limlarga havolalar bilan bo'limlarimizning nomlari mavjud. Ushbu ma'lumotlarni mySQL ma'lumotlar bazasiga kiritish imkoniyati mavjud, ammo bunda alohida nuqta yo'q, chunki namuna juda kichik, shuning uchun bu ish tezligiga ta'sir qilmaydi.

    Ikkinchi qism menyuning for tsikli orqali chiqishini o'z ichiga oladi. Tsikl sayt manzilini $array_menu massividagi manzil bilan taqqoslaydi. Agar mos keladigan bo'lsa, biz keyingi menyu bo'limini maxsus faol sinf bilan ko'rsatamiz:

  • , aks holda faqat
  • . Bu bizga menyuning foydalanuvchi joylashgan qismini qandaydir rang bilan ajratib ko'rsatish imkonini beradi. Menimcha, bu har qanday sayt uchun zarur narsa, shuning uchun foydalanuvchi qaysi bo'limda ekanligini tushunishi mumkin.

    Saytda menyu ko'rsatilganda massivdagi tartib saqlanib qoladi. Ya'ni, massiv menyu ko'rsatilishi kerak bo'lgan tartibda to'ldirilishi kerak.

    Eslatma:
    Agar bo'lim sarlavhalarining URL manzillari (manzillari) quyidagicha ko'rinsa:
    /bo'lim_1
    yoki shunga o'xshash
    /razdel_1/nazvanie_razdela.html
    keyin array_menu da aniq moslikni yozishingiz kerak:
    $array_menu[$i]["url"]="/razdel_1"
    yoki ikkinchi holat uchun:
    $array_menu[$i]["url"]="/razdel_1/nazvanie_razdela.html";

    Birinchi menyu opsiyasi qanday ishlaydi?
    Agar siz bo'lim sarlavhasi manzilida bo'lsangiz, u faqat menyuni ta'kidlaydi. Misol uchun, agar sahifa manzili /razdel_1/articles_1.html bo'lsa, u holda menyu hech qanday tarzda ta'kidlanmaydi.

    Kodning ikkinchi versiyasi birinchisining o'zgartirilgan versiyasi bo'lib, hatto bo'limlarda joylashgan maqolalarda ham menyularni ajratib ko'rsatish imkoniyatini beradi.

    PHP da menyu kodining ikkinchi versiyasi

    "; uchun ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["title"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$array_menu[$i]["title"]."
  • ";))) aks-sado ""; ?>

    Agar siz veb-sayt menyusini qanday yaratish kerakligi haqidagi savolga javob bilan qiziqsangiz, unda siz to'g'ri manzilga keldingiz.

    Biz PHP-da dummilarni dasturlash uchun, shuningdek, hali ham tankda bo'lganlar uchun yozilgan dinamik menyuni yaratishni ko'rib chiqamiz.

    Dars 3. Veb-sayt dinamiki uchun php-da menyu yaratish - qo'g'irchoqlar uchun

    Keling, veb-saytimizning kelajakdagi tartibini yarataylik. Buning uchun biz Photoshop-da juda chiroyli veb-sayt chizamiz va uni qismlarga ajratamiz. Tasavvur qilaylik, sarlavha, logotip, menyu va altbilgi ushbu misoldagi kabi so'z bilan yozilmagan, lekin bular saytning nafis va rang-barang tarzda yaratilgan elementlari.

    Masalan, uchta sahifa yaratamiz va ularni 1-bo'lim, 2-bo'lim, 3-bo'lim deb nomlaymiz

    Bu matn turli sahifalar uchun har xil bo'ladi, lekin biz u bilan bezovtalanmaymiz va uni barcha sahifalarda bo'lgani kabi qoldiramiz.

    PHP da veb-sayt yaratishni boshlaylik.

    1. php yoki html kengaytmali alohida fayllarga sarlavha, logotip, menyu, altbilgi bloklarini tanlang.

    header.html

    logo.html

    menu.html

    footer.html

    Keling, ushbu matnli faylni barcha sahifalarda ko'rishimiz uchun qo'shamiz. Keling, unga qo'ng'iroq qilaylik text.html

    Eslatma. Bundan buyon men keyingi yozuvlarni to'g'ridan-to'g'ri faylda saqlayman. text.html

    2. PHP da veb-saytimizga shablon yaratamiz.

    Buning uchun biz oddiy ishni qilamiz - haqiqiy faylni saqlang, lekin php kengaytmasi bilan va barcha matn tarkibini o'chirib tashlang. Bu professional bo'lmasligi mumkin, ammo tushunarli, ammo keyinroq hamma narsani murakkablashtiramiz. Endi asosiy narsa tartib tamoyilini tushunishdir.

    3. Endi bizga template.html fayli kerak emas.

    Unga rahmat, bizning saytimiz qanday ko'rinishi haqida tasavvurga egamiz.

    4. Bizning shablonimiz template.php faylidir

    Endi biz include buyrug'i yordamida unga barcha sayt elementlarini kiritamiz.

    5. Keling, boshida qilganimizdek, uchta sahifa yarataylik.

    1-qism, qo'ng'iroq qilaylik 1.php

    2-qism, qo'ng'iroq qilaylik 2.php

    3-qism, qo'ng'iroq qilaylik 3.php

    Buning uchun siz eng oddiy buyruqdan foydalanishingiz mumkin sifatida saqlash...

    Kichkintoylar uchun tushuntiraman: faylni oching template.php, keyin bosing sifatida saqlash... va uni nomi ostida saqlang 1.php, protsedurani takrorlang va sayt sahifalarini ketma-ket saqlang 2.php, 3.php

    Biz bir xil dizayndagi 3 sahifani tugatdik. Faqat fayl o'rniga uni joylashtiring text.html boshqasi, turli xil rasmlar yoki ba'zi html kodlari, skriptlar va har bir sahifaning mazmuni bilan to'ldirish noyob bo'ladi.

    Diqqat!

    Agar fayl yaratilmagan bo'lsa index.php asosiy sahifa uchun, keyin brauzerda, sayt manzilini kiritish orqali biz saytning o'zini emas, balki faqat katalog tuzilishini (papkalar ro'yxati) ko'ramiz.

    Siz Denverga qarashingiz va o'zingiz ko'rishingiz mumkin. Keling, vaziyatni tuzatamiz - fayl yarating index.php va keling, qo'ng'iroq qilaylik uy. Shu bilan birga, fayl yarataylik text-home.html va buyruq yordamida o'z ichiga oladi uni saytning yangi yaratilgan asosiy sahifasiga joylashtiring.

    6. php da veb-saytni qanday ko'rish mumkin?

    Biz shunchaki nima bo'lganini ko'rmaymiz. Bu endi html kengaytmali shablon emas.

    Lekin muammo ham emas. Bizga o'zimizniki kerak, ya'ni. kompyuteringizda mahalliy server. Buning uchun biz Denverni o'rnatamiz va Internetga kirmasdan brauzerda ishimiz natijasini ko'rib chiqamiz.

    Endi bu tartib. Men sayt manzilini yozdim va oddiy shaklda dizayn bilan yaratilgan hamma narsani ko'rdim.

    Endi saytning PHP menyusini ko'rib chiqamiz.

    1. menu.html faylini oching va 1, 2 va 3-qismlarni saytdagi havolalarga aylantiring. PHP da havolalar turli usullar bilan yaratiladi.

    Bizning vazifamiz PHP da yaratilgan saytni qanday his qilishni o'rganishdir. Shuning uchun biz oddiy statik saytdagi kabi havolalar qilamiz 1-bo'lim va hokazo.

    Menga Macromedia Dreamweaver-da havola yaratish jarayoni juda yoqadi. O'rim-yig'imga vaqt toping KELISHDIKMI va qahva iching.

    2. Agar tashrifchi ushbu sahifada bo'lsa, menyudagi havolani qanday qilib nofaol qilish kerak.

    Tashrifchi qaysi sahifada ekanligini bilib, saytni kezish uchun qulayroq bo'ladi.

    Agar siz barcha bosqichlarni qat'iy ravishda nuqtama-nuqta bajargan bo'lsangiz, menyudagi barcha havolalar doimo faol ekanligini ko'rasiz. Uni qanday tuzatish kerak?

    Birinchidan, nima ekanligini ta'rifini eslaylik Shartli gaplar

    - bu shartlarga qarab ba'zi harakatlarning bajarilishi yoki bajarilmasligi.

    Keling, quyidagilarni bajaramiz:

    • Bizga kerak bo'ladi o'zgaruvchilar va bitta shartli operator:

    agar ($master == "Asosiy")// bu holat. Agar u bajarilgan bo'lsa, menyuning ushbu joyiga echo buyrug'i yordamida "Uy" yozuvini ko'rsatadigan oddiy HTML teglari qo'yiladi.

    aks-sado "

    uy

    ";

    boshqa// "aks holda" degan ma'noni anglatadi - shart bajarilmasa nima bo'ladi. Bunday holda, agar shart bajarilmasa, "Uy" yozuvi asosiy sahifaga olib boradigan havola bo'ladi.

    aks-sado "

    uy

    ";

    • Biz shart bilan keldik, lekin shunday o'zgaruvchini tekshiringso'rashingiz kerak.

    Buning uchun biz barcha sahifalarga quyidagi kod bloklarini joylashtiramiz:

    $master = "Asosiy";

    $master = "1-bo'lim";

    $master = "2-bo'lim";

    $master = "3-bo'lim";

    Ko'rib turganingizdek, har bir sahifaning o'z kodi mavjud.

    Shunday qilib, PHP menyusini yaratish bo'yicha amaliy qadamlarimiz quyidagicha bo'ladi:

    1) Faylni oching index.php

    va kodni joylashtiring

    $master = "Asosiy";

    sayt menyusining o'zini ko'rsatadigan kodni kiritadigan joyga "menu.html" ni o'z ichiga oladi;
    ?>

    2) Faylni oching menu.html va asosiy sahifaga oddiy html havolasi o'rniga shart bilan kodni kiriting.

    Biz brauzerga qaraymiz va qoyil qolamiz! Agar biz asosiy sahifaga kirsak, havola endi faol emas!

    3) 1 va 2-bandlarni sahifalar bilan takrorlang 1.php, 2.php, 3.php

    1-takrorlash:

    1) 1.php faylini oching va berilgan oʻzgaruvchiga ega menyu blokini koʻrsatadigan kod oldiga kiriting

    $master = "1-bo'lim";

    2) menu.html faylini oching va oddiy havola oʻrniga shartli kodni kiriting 1-qism, quyidagi o'zgarishlar kiritiladi:

    agar ($master == "1-bo'lim")// bu holat. Agar u bajarilgan bo'lsa, menyuning ushbu joyiga echo buyrug'i yordamida "1-bo'lim" yozuvini aks ettiruvchi oddiy HTML teglari qo'yiladi.

    aks-sado "

    1-qism

    ";

    boshqa// "aks holda" degan ma'noni anglatadi - shart bajarilmasa nima bo'ladi. Bunday holda, agar shart bajarilmasa, "1-bo'lim" yozuvi asosiy sahifaga olib boradigan havola bo'ladi.

    aks-sado "

    1-qism

    ";

    Mo''jiza yana sodir bo'ldi! Endi biz sahifada bo'lsak 1-qism, menyudagi havola faol emas.

    Takrorlash - o'rganishning onasi! Yoki tankdagilar uchun! Yana bir marta

    Takrorlash 2

    1) Ochiq fayl 2.php va kodni joylashtiring.

    $master = "2-bo'lim";

    2) Menyu.html faylini yana oching va shart bilan kodni joylashtiring

    agar ($master == "2-bo'lim")// bu holat. Agar u bajarilgan bo'lsa, u holda menyuning ushbu joyiga echo buyrug'i yordamida "2-bo'lim" yozuvini aks ettiruvchi oddiy HTML teglari qo'yiladi.

    aks-sado "

    2-qism

    ";

    boshqa// "aks holda" degan ma'noni anglatadi - shart bajarilmasa nima bo'ladi. Bunday holda, agar shart bajarilmasa, "2-bo'lim" yozuvi asosiy sahifaga olib boradigan havola bo'ladi.

    aks-sado "

    2-qism

    ";

    Takrorlash 3

    1) Ochilish fayl 3.php va o'zgaruvchini o'rnating.

    $master = "3-bo'lim";

    2) Menyu.html faylida biz havola o'rniga shartli kodni kiritamiz 3-qism, o'zgarishlar quyidagilar:

    agar ($master == "3-bo'lim")// bu holat. Agar u bajarilgan bo'lsa, u holda menyuning ushbu joyiga echo buyrug'i yordamida "3-bo'lim" yozuvini aks ettiruvchi oddiy HTML teglari qo'yiladi.

    aks-sado "

    3-qism

    ";

    boshqa// "aks holda" degan ma'noni anglatadi - shart bajarilmasa nima bo'ladi. Bunday holda, agar shart bajarilmasa, "3-bo'lim" yozuvi asosiy sahifaga olib boradigan havola bo'ladi.

    aks-sado "

    3-qism

    ";

    Pastki chiziq: ushbu turdagi menyudagi havolalar o'rniga

    uy


    1-qism

    2-qism


    3-qism

    Php haqidagi ushbu dars saytga tashrif buyuruvchilarning koʻplab soʻrovlariga javoban yozilgan boʻlib, php da sayt uchun dinamik menyu yaratishni oʻrganish boʻyicha amaliy qoʻllanma hisoblanadi.

    Keyingi webmasterning cheat varag'i sizga PHP-da har bir sahifa uchun noyob sarlavhalar, tavsiflar va kalit so'zlarni qanday qilish kerakligini aytib beradi.

    Arxivni barcha sayt shablonlari va PHP menyu fayllari bilan yuklab olishingiz mumkin. Dasturlashni yangi boshlaganlar uchun tavsiya etiladi.

    Agar siz PHP-ni jiddiy o'rganishga tayyor bo'lsangiz, Popovdan yaxshiroq video kursni topish qiyin. U katta tajriba va yaxshi uslubga ega.

    ]]> ]]>



  • 2024 | Hamma uchun kompyuterlar - O'rnatish, o'rnatish, tiklash