jSQL Injection-ի օգտագործման հրահանգներ՝ Kali Linux-ում SQL ներարկումները գտնելու և շահագործելու բազմաֆունկցիոնալ գործիք: Բազմամակարդակ մենյու PHP-ում և MySQL Inurl php-ի սեփական մենյուի խաղի id-ում

Ոչ մի կայք ամբողջական չէ առանց նավիգացիայի կամ, ինչպես իրենք են անվանում նաև «կայքի մենյու»: Այսպիսով, կայքի ընտրացանկը կարող է լինել միամակարդակ կամ բազմամակարդակ՝ ծառի տեսքով։ Եթե ​​մեկ մակարդակի մենյուի հետ իրագործման առումով առանձնակի դժվարություններ չկան, ապա բազմաստիճան մենյու ստեղծելիս պետք է ուշադիր մտածել:

Այս առաջադրանքում ամենակարևորը մեր բազմաստիճան մենյուի տվյալների բազայի ձևավորումն է: Եկեք ստեղծենք «Կատեգորիաներ» աղյուսակը երեք դաշտերով id, կոչում, ծնողՈրտեղ:

  • ID- նույնացուցիչ
  • Կոչում- Մենյուի անվանումը
  • Ծնող- Կանխադրված կատեգորիայի ծնող 0

Դաշտը պատասխանատու է մենյուի ճյուղավորման համար ԾնողԵթե Ծնող = 0, ապա այս կատեգորիան ծնող կատեգորիան է: Ծնող կատեգորիայի հետնորդներ ավելացնելու համար դուք պետք է նշեք ծնող դաշտում IDճիշտ ծնող. Օրինակ:

Սեղաններ կատեգորիաներով

Ինչպես երևում է աղյուսակից, ծնող կատեգորիան Ավտոմեքենաներկա երկու ժառանգ - սա է MazdaԵվ Hondaառնչվում է ըստ ոլորտի Ծնող. Եվ կատեգորիան Մոտոցիկլետներերկու ժառանգ են ԿավասակիԵվ Հարլի. Միևնույն ժամանակ, Նավակներ կատեգորիան ժառանգներ չունի: Հուսով եմ, դուք հասկանում եք, թե ինչպես կապել կատեգորիաները:

Հաջորդիվ բառերից անցնում ենք պրակտիկայի: Եկեք ստեղծենք «Կատեգորիաներ» աղյուսակը:

ՍՏԵՂԾԵՔ ԱՂՅՈՒՍԱԿ, ԵԹԵ ՉԿԱ «կատեգորիաներ» («id» int(10) անստորագիր NOT NULL AUTO_INCREMENT, «title» varchar(255) NOT NULL, «parent» int(10) անստորագիր NOT NULL, PRIMARY BEY («id») ENGINE=MyISAM-ի լռելյայն շարադրանք=utf8 AUTO_INCREMENT=20 ; -- -- Տվյալների հեռացում «կատեգորիաներ» աղյուսակից -- INSERT INTO «categories» («id», «title», «parent») VALUES (1, «Cars», 0), (2, «Motorcycles», 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, «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("Connection error (" . $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[" parent"])( $tree[$id] = &$node; )else( //Եթե կան երեխաներ, ապա կրկնեք $dataset[$node["parent"]]["childs" զանգվածի միջոցով "][$id] = &$ հանգույց; ) ) վերադարձնել $tree;)

Մենք ստանում ենք զանգված՝ ծառի տեսքով

Ամբողջ սցենարը

հարցում ("SET NAMES "utf8""); /* * Սա անելու «պաշտոնական» օբյեկտի վրա հիմնված եղանակն է * սակայն $connect_error-ը չէր աշխատում մինչև PHP 5.2.9 և 5.3.0 տարբերակները: */ if ($mysqli->connect_error) ( die("Connection error (" . $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; ) վերադարձնել $cat;) //Function for Tommy Lacroix ֆունկցիայի զանգվածից ծառ կառուցելը getTree($dataset) ( $tree = array(); foreach ($dataset որպես $id => &$node) ( //Եթե չկան հավելվածներ, եթե (!$node[ "parent"])( $tree[$id] = &$node; )else( //Եթե կան ժառանգներ, ապա անցիր $dataset[$node["parent"]]["childs"][$ 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); //Display echo "
      «.$cat_menu»:
    "; ?>

    Աշխատանքի արդյունք

    Բազմաստիճան մենյու PHP + MySQL-ում ադմինիստրատորի վահանակի համար

    Եթե ​​ցանկանում եք օգտագործել այս ընտրացանկը ձեր կայքի ադմինիստրատորի վահանակում, ապա ձեզ հարկավոր է վերաշարադրել մի քանի գործառույթ. tplՄենյու (), 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 →→→ Liftback →→→ Crossover →→→→ Սպիտակ →→→→ Կարմիր → →→→ Սև →→→→ Կանաչ → Mazda CX →→ Mazda MX → Honda Motorcycles → Kawasaki → Harley Boats

    Գործարկեք ներբեռնված ֆայլը՝ կրկնակի սեղմելով (դուք պետք է ունենաք վիրտուալ մեքենա):

    3. Անանունություն SQL ներարկման համար կայքը ստուգելիս

    Tor-ի և Privoxy-ի կարգավորում Kali Linux-ում

    [Բաժին մշակման փուլում է]

    Windows-ում Tor-ի և Privoxy-ի կարգավորում

    [Բաժին մշակման փուլում է]

    Proxy-ի կարգավորումները jSQL Injection-ում

    [Բաժին մշակման փուլում է]

    4. Կայքի ստուգում SQL ներարկման համար jSQL Injection-ով

    Ծրագրի հետ աշխատելը չափազանց պարզ է. Պարզապես մուտքագրեք կայքի հասցեն և սեղմեք ENTER:

    Հետևյալ սքրինշոթը ցույց է տալիս, որ կայքը խոցելի է երեք տեսակի SQL ներարկումների նկատմամբ (դրանց մասին տեղեկատվությունը նշված է ստորին աջ անկյունում): Սեղմելով ներարկումների անունները, կարող եք փոխել օգտագործվող մեթոդը.

    Նաև մեզ արդեն ցուցադրվել են առկա տվյալների բազաները։

    Դուք կարող եք դիտել յուրաքանչյուր աղյուսակի բովանդակությունը.

    Որպես կանոն, աղյուսակների ամենահետաքրքիրը ադմինիստրատորի հավատարմագրերն են:

    Եթե ​​հաջողակ եք և գտնում եք ադմինիստրատորի տվյալները, ապա դեռ վաղ է ուրախանալ: Դուք դեռ պետք է գտնեք ադմինիստրատորի վահանակը, որտեղ մուտքագրեք այս տվյալները:

    5. Փնտրեք ադմինիստրատորի վահանակներ jSQL Injection-ով

    Դա անելու համար անցեք հաջորդ ներդիր: Այստեղ մեզ ողջունում են հնարավոր հասցեների ցանկով: Դուք կարող եք ընտրել մեկ կամ մի քանի էջ՝ ստուգելու համար.

    Հարմարավետությունը կայանում է նրանում, որ այլ ծրագրերից օգտվելու կարիք չկա:

    Ցավոք սրտի, շատ անփույթ ծրագրավորողներ չկան, ովքեր գաղտնաբառերը մաքուր տեքստով են պահում: Շատ հաճախ գաղտնաբառի տողում մենք տեսնում ենք նման բան

    8743b52063cd84097a65d1633f5c74f5

    Սա հաշ է: Դուք կարող եք այն ապակոդավորել՝ օգտագործելով կոպիտ ուժ: Եվ... jSQL Injection-ն ունի ներկառուցված brute forcer:

    6. Կոպիտ ուժային հեշեր՝ օգտագործելով jSQL Injection

    Անկասկած հարմարավետությունն այն է, որ ձեզ հարկավոր չէ այլ ծրագրեր փնտրել: Աջակցություն կա ամենահայտնի հեշերից շատերին:

    Սա լավագույն տարբերակը չէ։ Հեշերի վերծանման գուրու դառնալու համար խորհուրդ է տրվում «Գիրքը» ռուսերենով:

    Բայց, իհարկե, երբ ձեռքի տակ չկա այլ ծրագիր կամ ժամանակ չկա ուսումնասիրելու, jSQL Injection-ն իր ներկառուցված brute force ֆունկցիայով շատ օգտակար կլինի:

    Կան կարգավորումներ. կարող եք սահմանել, թե որ նիշերն են ներառված գաղտնաբառում, գաղտնաբառի երկարության միջակայքը:

    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 Բովանդակություն-Տևողություն՝ 353 Ամսաթիվ՝ Ուրբ, 11 Դեկտ. 11:48:31 GMT X-Powered-By՝ PHP/7.0.0RC6 Բովանդակության տեսակը՝ text/html; նիշերի հավաքածու=UTF-8

    Այստեղ մենք ունենք որոշ Unix (*BSD, Linux):

    Փոխանցում-կոդավորում՝ կտրված Ամսաթիվ՝ Ուրբ, 11 Դեկտ. 2015 11:57:02 GMT Մեթոդ՝ HTTP/1.1 200 OK Keep-Alive. timeout=3, max=100 Միացում՝ keep-alive Բովանդակություն-Տեսակ՝ 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 Փոխանցում-կոդավորում. բեկորային Բովանդակություն-Տեսակ՝ տեքստ/html; charset = WINDOWS-1251

    Windows-ում կայքերի համար բնորոշ թղթապանակ է C:\Server\data\htdocs\. Բայց, փաստորեն, եթե ինչ-որ մեկը «մտածել է» Windows-ում սերվեր ստեղծել, ապա, ամենայն հավանականությամբ, այս մարդը որևէ բան չի լսել արտոնությունների մասին: Հետևաբար, դուք պետք է սկսեք փորձել անմիջապես C:/Windows/ գրացուցակից.

    Ինչպես տեսնում եք, առաջին անգամ ամեն ինչ լավ է անցել։

    Բայց jSQL Injection-ի պատյաններն իրենք կասկածներ են առաջացնում իմ մտքում: Եթե ​​ունեք ֆայլի արտոնություններ, ապա հեշտությամբ կարող եք ինչ-որ բան վերբեռնել վեբ ինտերֆեյսի միջոցով:

    8. SQL ներարկումների կայքերի զանգվածային ստուգում

    Եվ նույնիսկ այս գործառույթը հասանելի է jSQL Injection-ում: Ամեն ինչ չափազանց պարզ է. ներբեռնեք կայքերի ցանկը (կարելի է ներմուծվել ֆայլից), ընտրեք դրանք, որոնք ցանկանում եք ստուգել և սեղմեք համապատասխան կոճակը՝ գործողությունը սկսելու համար:

    Եզրակացություն jSQL Injection-ից

    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 է, այսինքն՝ մեր դեպքում, օրինակ, կլինի դասի մենյու-առաջին կոնտեյներ։

    $container_id— Դուք կարող եք ID-ն ավելացնել կոնտեյների մեջ, որը լռելյայն նշված չէ:

    $menu_class— դաս UL մենյուի տարրի համար, դրա արժեքը մենյու է:

    $menu_id— ID-ն ul տարրի համար, կանխադրված է մենյու-(slug)

    $echo— եթե դուք չեք ցանկանում ցուցադրել ընտրացանկը, բայց վերադարձնել ֆունկցիայի արժեքը, այս պարամետրի համար օգտագործեք 0 արժեքը:

    $fallback_cb— եթե մենյուն գոյություն չունի, կանչվում է wp_page_menu ֆունկցիան:

    $ առաջ— սահմանում է տեքստը, որը ցուցադրվում է A հղումից առաջ:

    $link_before— ցուցադրում է արտահայտությունը հղման տեքստից առաջ՝ չնշված:

    $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 (ցուցադրում:block; float:ձախ;) .menu li.active (ֆոն՝ #000011 ;) .menu a (գույն:#FFF; ցուցադրում:block; գծի բարձրություն:42px; text-decoration:none; padding:0 14px;) .menu a:hover (background:url(images/spacer.png) կրկնել ;)

    Այժմ տեսնենք PHP-ում մենյուի ներդրման առաջին տարբերակը, որը մի փոքր պարզեցված է։

    PHP-ում մենյուի կոդի առաջին տարբերակը

    \n"; համար ($i=0;$i ": "
  • «; արձագանք» ".$array_menu[$i]["name"]."
  • \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-ում մենյուի կոդի երկրորդ տարբերակը

    «; համար ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["title"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"]) ?"
  • ": "
  • "; echo "".$array_menu[$i]["title"]."
  • ";)) արձագանք""; ?>

    Եթե ​​ձեզ հետաքրքրում է այն հարցի պատասխանը, թե ինչպես ստեղծել կայքի մենյու, ապա դուք ճիշտ հասցեով եք եկել։

    Մենք կանդրադառնանք PHP-ում դինամիկ մենյուի ստեղծմանը, որը գրված է հատուկ ծրագրավորման կեղծիքների համար, ինչպես նաև նրանց համար, ովքեր դեռ տանկի մեջ են:

    Դաս 3. Կայքի համար php-ով մենյու պատրաստելը դինամիկ - dummies-ի համար

    Եկեք ստեղծենք մեր կայքի ապագա դասավորությունը: Դա անելու համար մենք 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 ֆայլն է

    Այժմ մենք կտեղադրենք կայքի բոլոր տարրերը դրա մեջ՝ օգտագործելով include հրամանը:

    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 թեգեր, որոնք ցուցադրում են «Տուն» մակագրությունը:

    արձագանք»

    տուն

    ";

    ուրիշ// նշանակում է «այլապես» - ինչ կլինի, եթե պայմանը չկատարվի: Այս դեպքում, եթե պայմանը չկատարվի, «Տուն» մակագրությունը կլինի գլխավոր էջ տանող հղում:

    արձագանք»

    տուն

    ";

    • Մենք պայմանով հանդես եկանք, բայց այդպես ստուգել փոփոխականըդուք պետք է դա հարցնեք:

    Դա անելու համար մենք բոլոր էջերում կտեղադրենք հետևյալ կոդի բլոկները.

    $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, կատարելով հետևյալ փոփոխությունները.

    եթե ($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) Menu.html ֆայլում հղումի փոխարեն տեղադրում ենք կոդը պայմանով Բաժին 3, փոփոխություններն են.

    եթե ($master == «Բաժին 3»)// այս պայմանը. Եթե ​​այն կատարվում է, ապա մենյուի այս տեղում, օգտագործելով echo հրամանը, տեղադրվում են սովորական HTML թեգեր, որոնք ցուցադրում են «Բաժին 3» մակագրությունը:

    արձագանք»

    Բաժին 3

    ";

    ուրիշ// նշանակում է «այլապես» - ինչ կլինի, եթե պայմանը չկատարվի: Այս դեպքում, եթե պայմանը չկատարվի, «Բաժին 3» մակագրությունը կլինի գլխավոր էջ տանող հղում:

    արձագանք»

    Բաժին 3

    ";

    Ներքեւի գիծԱյս տեսակի մենյուի հղումների փոխարեն

    տուն


    Բաժին 1

    Բաժին 2


    Բաժին 3

    php-ի մասին այս դասը գրվել է ի պատասխան կայքի այցելուների բազմաթիվ հարցումների և գործնական ուղեցույց է՝ սովորելու, թե ինչպես ստեղծել կայքի համար դինամիկ մենյու php-ով:

    Հաջորդ վեբ-վարպետի խաբեության թերթիկը ձեզ կպատմի, թե ինչպես ստեղծել եզակի վերնագրեր, նկարագրություններ և հիմնաբառեր PHP-ի յուրաքանչյուր էջի համար:

    Դուք կարող եք ներբեռնել արխիվը կայքի բոլոր ձևանմուշներով և php մենյուի ֆայլերով: Առաջարկվում է նրանց համար, ովքեր նոր են ծրագրավորում:

    Եթե ​​պատրաստ եք լրջորեն ուսումնասիրել PHP-ն, ապա դժվար է ավելի լավ տեսադասընթաց գտնել Պոպովից։ Նա ունի մեծ փորձ և լավ ոճ։

    ]]> ]]>



  • 2024 | Համակարգիչներ բոլորի համար - Կարգավորում, տեղադրում, վերականգնում