Mga tagubilin para sa paggamit ng jSQL Injection, isang multifunctional na tool para sa paghahanap at pagsasamantala ng mga SQL injection sa Kali Linux. Multi-level na menu sa PHP at MySQL Inurl php sariling menu game id

Walang website na kumpleto nang walang nabigasyon o, bilang tinatawag din nila ito, isang "menu ng site." Kaya, ang menu ng site ay maaaring single-level o multi-level sa anyo ng isang puno. Kung walang mga partikular na paghihirap sa mga tuntunin ng pagpapatupad na may isang solong antas na menu, pagkatapos ay kapag lumilikha ng isang multi-level na menu kailangan mong mag-isip nang mabuti.

Ang pinakamahalagang bagay sa gawaing ito ay ang disenyo ng database para sa aming multi-level na menu. Gumawa tayo ng talahanayan ng Mga Kategorya na may tatlong field id, pamagat, magulang saan:

  • ID- identifier
  • Pamagat- Pangalan ng menu
  • Magulang- Default na magulang ng kategorya 0

Ang field ay may pananagutan sa pagsasanga ng menu Magulang Kung Magulang = 0, pagkatapos ang kategoryang ito ay ang pangunahing kategorya. Upang magdagdag ng mga inapo sa kategorya ng magulang, kailangan mong tukuyin sa field ng magulang ID ang tamang magulang. Halimbawa:

Mga talahanayan na may mga kategorya

Tulad ng makikita mula sa talahanayan, ang kategorya ng magulang Mga sasakyan may dalawang inapo - ito ay Mazda At Honda nauugnay sa larangan Magulang. At ang kategorya Mga motorsiklo dalawang inapo ay Kawasaki At Harley. Kasabay nito, ang kategoryang Bangka ay walang mga inapo. Sana maintindihan mo kung paano mag-link ng mga kategorya.

Susunod na lumipat kami mula sa mga salita patungo sa pagsasanay. Gumawa tayo ng talahanayan ng Mga Kategorya.

GUMAWA NG TALAAN KUNG WALANG `categories` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `parent` int(10) unsigned NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ; -- -- Data dump mula sa talahanayan `categories` -- INSERT INTO `categories` (`id`, `title`, `parent`) VALUES (1, "Mga Kotse", 0), (2, "Mga Motorsiklo", 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, "Mga Bangka", 0), (12, "Liftback" , 8), (13, "Crossover", 8), (14, "White", 13), (15, "Red", 13), (16, "Black", 13), (17, "Green" , 13), (18, "Mazda CX", 3), (19, "Mazda MX", 3);

Ang algorithm ng trabaho ay binubuo ng mga sumusunod:

Lumikha ng koneksyon sa database

query("SET NAMES "utf8""); /* * Ito ang "opisyal" na object-oriented na paraan upang gawin ito * gayunpaman ang $connect_error ay hindi gumana hanggang sa mga bersyon ng PHP 5.2.9 at 5.3.0. */ if ($mysqli->connect_error) ( die("Connection error (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Kung kailangan mong makatiyak sa compatibility sa mga bersyon bago ang 5.2 .9, * mas mabuting gamitin ang code na ito */ if (mysqli_connect_error()) ( die("Connection error (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

Pagsusulat ng isang function upang makakuha ng data mula sa talahanayan ng Mga Kategorya

//Kunin ang array ng aming menu mula sa database bilang array function getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Gumawa ng array kung saan ang susi ng array ay ang menu ID $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $ pusa;)

Nakakakuha kami ng array na ganito, kung saan ang array key ay ang category ID.

Solid wood build function mula kay Tommy Lacroix

//Function para sa pagbuo ng tree mula sa array mula sa Tommy Lacroix function getTree($dataset) ($tree = array(); foreach ($dataset as $id => &$node) ( //Kung walang mga attachment kung ( !$node[" parent"])( $tree[$id] = &$node; )else( //Kung may mga bata, ulitin ang array $dataset[$node["parent"]]["childs "][$id] = &$ node; ) ) ibalik ang $tree; )

Nakukuha namin ang isang array sa anyo ng isang puno

Buong script

query("SET NAMES "utf8""); /* * Ito ang "opisyal" na object-oriented na paraan upang gawin ito * gayunpaman ang $connect_error ay hindi gumana hanggang sa mga bersyon ng PHP 5.2.9 at 5.3.0. */ if ($mysqli->connect_error) ( die("Connection error (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Kung kailangan mong makatiyak sa compatibility sa mga bersyon bago ang 5.2 .9, * mas mabuting gamitin ang code na ito */ if (mysqli_connect_error()) ( die("Connection error (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //Kunin ang array ng aming menu mula sa database bilang isang array function getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Gumawa ng array kung saan ang array key ay ang menu ID $cat = array(); while ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat; ) //Function for pagbuo ng isang puno mula sa isang array mula sa Tommy Lacroix function getTree($dataset) ( $tree = array(); foreach ($dataset bilang $id => &$node) ( //Kung walang mga attachment kung (!$node[ "magulang"])( $tree[$id] = &$node; )else( //Kung may mga inapo, pagkatapos ay dumaan sa array $dataset[$node["parent"]]["childs"][$ id] = &$node; ) ) return $tree; ) //Kumuha ng handa na array na may data $cat = getCat($mysqli); //Gumawa ng tree menu $tree = getTree($cat); //Template para sa pagpapakita ng isang menu sa anyo ng isang function ng puno tplMenu($category)( $menu = "
  • ". $category["title"].""; if(isset($category["bata"]))( $menu .= "
      ". showCat($category["mga bata"]) ."
    "; ) $menu .="
  • "; ibalik ang $menu; ) /** * Paulit-ulit na basahin ang aming template **/ function showCat($data)( $string = ""; foreach($data bilang $item)( $string .= tplMenu($item); ) return $string; ) //Kumuha ng HTML markup $cat_menu = showCat($tree); //Display echo "
      ".$cat_menu."
    "; ?>

    Resulta ng trabaho

    Multi-level na menu sa PHP + MySQL para sa admin panel

    Kung gusto mong gamitin ang menu na ito sa admin panel ng iyong site, kailangan mong muling isulat ang ilang mga function tplMenu(), showCat().

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

    Resulta ng trabaho

    Piliin ang Mga Kotse → Mazda →→ Mazda 3 →→→ Sedan →→→ Hatchback →→ Mazda 6 →→→ Liftback →→→ Crossover →→→→ Puti →→→→ Pula → →→→ Itim →→→→ Berde →→ Mazda CX →→ Mazda MX → Honda Motorcycles → Kawasaki → Harley Boats

    Patakbuhin ang na-download na file sa pamamagitan ng pag-double click (kailangan mong magkaroon ng virtual machine).

    3. Anonymity kapag sinusuri ang isang site para sa SQL injection

    Pagse-set up ng Tor at Privoxy sa Kali Linux

    [Seksyon sa ilalim ng pagbuo]

    Pag-set up ng Tor at Privoxy sa Windows

    [Seksyon sa ilalim ng pagbuo]

    Mga setting ng proxy sa jSQL Injection

    [Seksyon sa ilalim ng pagbuo]

    4. Sinusuri ang site para sa SQL injection gamit ang jSQL Injection

    Ang pagtatrabaho sa programa ay napakasimple. Ipasok lamang ang address ng website at pindutin ang ENTER.

    Ang sumusunod na screenshot ay nagpapakita na ang site ay mahina sa tatlong uri ng SQL injection (ang impormasyon tungkol sa mga ito ay nakasaad sa kanang sulok sa ibaba). Sa pamamagitan ng pag-click sa mga pangalan ng mga iniksyon maaari mong ilipat ang paraan na ginamit:

    Gayundin, ang mga umiiral na database ay naipakita na sa amin.

    Maaari mong tingnan ang mga nilalaman ng bawat talahanayan:

    Karaniwan, ang pinaka-kagiliw-giliw na bagay tungkol sa mga talahanayan ay ang mga kredensyal ng administrator.

    Kung ikaw ay mapalad at nahanap mo ang data ng administrator, kung gayon ay masyadong maaga upang magalak. Kailangan mo pa ring hanapin ang admin panel kung saan ilalagay ang data na ito.

    5. Maghanap ng mga admin panel na may jSQL Injection

    Upang gawin ito, pumunta sa susunod na tab. Dito kami ay binabati ng isang listahan ng mga posibleng address. Maaari kang pumili ng isa o higit pang mga pahina upang suriin:

    Ang kaginhawahan ay nakasalalay sa katotohanan na hindi mo kailangang gumamit ng iba pang mga programa.

    Sa kasamaang palad, walang napakaraming mga walang ingat na programmer na nag-iimbak ng mga password sa malinaw na teksto. Medyo madalas sa linya ng password ay may nakikita kaming katulad

    8743b52063cd84097a65d1633f5c74f5

    Ito ay isang hash. Maaari mong i-decrypt ito gamit ang brute force. At... Ang jSQL Injection ay may built-in na brute forcer.

    6. Brute force hash gamit ang jSQL Injection

    Ang walang alinlangan na kaginhawahan ay hindi mo kailangang maghanap ng iba pang mga programa. Mayroong suporta para sa marami sa mga pinakasikat na hash.

    Hindi ito ang pinakamagandang opsyon. Upang maging isang guru sa pag-decode ng mga hash, inirerekomenda ang Aklat na "" sa Russian.

    Ngunit, siyempre, kapag walang ibang programa sa kamay o walang oras upang mag-aral, ang jSQL Injection kasama ang built-in na brute force na function ay magiging napaka-madaling gamitin.

    Mayroong mga setting: maaari mong itakda kung aling mga character ang kasama sa password, ang hanay ng haba ng password.

    7. Mga operasyon ng file pagkatapos makita ang mga SQL injection

    Bilang karagdagan sa mga operasyon na may mga database - binabasa at binabago ang mga ito, kung ang mga SQL injection ay nakita, ang mga sumusunod na operasyon ng file ay maaaring maisagawa:

    • nagbabasa ng mga file sa server
    • pag-upload ng mga bagong file sa server
    • pag-upload ng mga shell sa server

    At lahat ng ito ay ipinatupad sa jSQL Injection!

    May mga paghihigpit - ang SQL server ay dapat may mga pribilehiyo ng file. Ang mga tagapangasiwa ng matalinong sistema ay hindi pinagana ang mga ito at hindi makakakuha ng access sa file system.

    Ang pagkakaroon ng mga pribilehiyo ng file ay medyo simple upang suriin. Pumunta sa isa sa mga tab (pagbabasa ng mga file, paggawa ng shell, pag-upload ng bagong file) at subukang gawin ang isa sa mga tinukoy na operasyon.

    Isa pang napakahalagang tala - kailangan nating malaman ang eksaktong ganap na landas sa file kung saan tayo gagana - kung hindi, walang gagana.

    Tingnan ang sumusunod na screenshot:

    Sa anumang pagtatangkang magpatakbo sa isang file, natatanggap namin ang sumusunod na tugon: Walang pribilehiyo sa FILE(walang mga pribilehiyo ng file). At walang magagawa dito.

    Kung sa halip ay mayroon kang isa pang error:

    Problema sa pagsulat sa [directory_name]

    Nangangahulugan ito na mali mong tinukoy ang ganap na landas kung saan mo gustong isulat ang file.

    Upang mahulaan ang isang ganap na landas, kailangan mong malaman man lang ang operating system na pinapatakbo ng server. Upang gawin ito, lumipat sa tab na Network.

    Ang nasabing talaan (linya Panalo64) ay nagbibigay sa amin ng dahilan upang ipagpalagay na kami ay nakikitungo sa Windows OS:

    Keep-Alive: timeout=5, max=99 Server: Apache/2.4.17 (Win64) PHP/7.0.0RC6 Connection: Keep-Alive Paraan: HTTP/1.1 200 OK Content-Length: 353 Petsa: Biy, 11 Dis 2015 11:48:31 GMT X-Powered-By: PHP/7.0.0RC6 Content-Type: text/html; charset=UTF-8

    Narito mayroon kaming ilang Unix (*BSD, Linux):

    Transfer-Encoding: chunked Petsa: Biy, 11 Dec 2015 11:57:02 GMT Paraan: HTTP/1.1 200 OK Keep-Alive: timeout=3, max=100 Connection: keep-alive Content-Type: text/html X- Pinapatakbo-Sa pamamagitan ng: PHP/5.3.29 Server: Apache/2.2.31 (Unix)

    At narito mayroon kaming CentOS:

    Paraan: HTTP/1.1 200 OK Mag-e-expire: Huwebes, 19 Nob 1981 08:52:00 GMT Set-Cookie: PHPSESSID=9p60gtunrv7g41iurr814h9rd0; path=/ Koneksyon: keep-alive X-Cache-Lookup: MISS mula sa t1.hoster.ru:6666 Server: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.4.37 X-Cache: MISS mula t1.hoster.ru Cache-Control: walang tindahan, walang cache, dapat na muling patunayan, post-check=0, pre-check=0 Pragma: walang cache Petsa: Biy, 11 Dis 2015 12:08:54 GMT Transfer-Encoding: chunked Content-Uri: text/html; charset=WINDOWS-1251

    Sa Windows, ang karaniwang folder para sa mga site ay C:\Server\data\htdocs\. Ngunit, sa katunayan, kung ang isang tao ay "naisip" na gumawa ng isang server sa Windows, kung gayon, malamang, ang taong ito ay walang narinig tungkol sa mga pribilehiyo. Samakatuwid, dapat mong simulan ang pagsubok nang direkta mula sa C:/Windows/ direktoryo:

    Tulad ng nakikita mo, naging maayos ang lahat sa unang pagkakataon.

    Ngunit ang mga shell ng jSQL Injection mismo ay nagpapataas ng mga pagdududa sa aking isipan. Kung mayroon kang mga pribilehiyo ng file, madali kang makakapag-upload ng isang bagay gamit ang isang web interface.

    8. Bultuhang pagsusuri ng mga site para sa mga SQL injection

    At kahit na ang function na ito ay magagamit sa jSQL Injection. Ang lahat ay napaka-simple - mag-download ng isang listahan ng mga site (maaaring ma-import mula sa isang file), piliin ang mga nais mong suriin at i-click ang naaangkop na pindutan upang simulan ang operasyon.

    Konklusyon mula sa jSQL Injection

    Ang jSQL Injection ay isang mahusay, makapangyarihang tool para sa paghahanap at pagkatapos ay paggamit ng mga SQL injection na makikita sa mga website. Ang hindi mapag-aalinlanganang mga pakinabang nito: kadalian ng paggamit, mga built-in na nauugnay na function. Ang jSQL Injection ay maaaring maging matalik na kaibigan ng baguhan kapag nagsusuri ng mga website.

    Kabilang sa mga pagkukulang, mapapansin ko ang imposibilidad ng pag-edit ng mga database (hindi bababa sa hindi ko nakita ang pag-andar na ito). Tulad ng lahat ng mga tool sa GUI, ang isa sa mga disadvantages ng program na ito ay maaaring maiugnay sa kawalan ng kakayahang magamit sa mga script. Gayunpaman, posible rin ang ilang automation sa program na ito - salamat sa built-in na function ng mass site scanning.

    itinatag na sample at sertipiko. Para sa isang espesyal na diskwento sa anumang mga faculty at kurso!

    Sa artikulo sa blog bago ang huli, isinulat ko ang tungkol sa mga kagiliw-giliw na pagbabago ng pinakabagong bersyon ng WordPress - isang espesyal na mekanismo para sa paglikha at pamamahala . Ngayon ay naging mas maginhawa at mas madali para sa mga ordinaryong gumagamit na lumikha ng mga menu na may iba't ibang kumplikado, na maaaring binubuo hindi lamang ng mga pahina o mga kategorya ng blog, ngunit mayroon ding mga link sa anumang URL. Upang ipakita ang menu sa template, ginagamit ang isang espesyal na function na wp_nav_menu - sasabihin ko sa iyo ang tungkol dito ngayon.

    Kung walang seksyon ng menu sa admin ng WordPress, maaari mo itong i-activate sa pamamagitan ng pagdaragdag ng espesyal na code sa functions.php file

    Narito muna ang pangalan ng menu na aming ginawa. Ito ang paggamit ng isang function sa pangkalahatang kaso na walang mga widget; kakailanganin mong magtrabaho sa kanila nang medyo naiiba doon. Gayunpaman, ang pag-andar ng wp_nav_menu ay maaaring maging output nang walang mga argumento, bilang isang resulta kung saan ang iba't ibang mga sitwasyon ay "titingnan sa pamamagitan ng" - una, isang tugma sa pamamagitan ng pangalan ng menu, kung hindi bababa sa isang item sa menu ang tinukoy para dito, kung hindi man ay isang hindi walang laman na menu ipapakita lang, atbp. Ngunit muli, ipinapayo ko sa iyo na gamitin lamang ang code sa itaas at huwag malaman kung ano ang dapat ilabas ng function na walang mga argumento. Ang syntax nito ay ang mga sumusunod:

    Ang mga sumusunod na parameter ay ginagamit dito:

    $menu— napiling identifier para sa menu — ID, slug o pangalan ng menu.

    $lalagyan- Ang UL na menu ay “nakabalot” sa isang DIV container bilang default gamit ang setting na ito.

    $container_class— ay nagpapahiwatig ng klase ng lalagyan, bilang default ang halaga nito ay menu-(menu slug)-container, iyon ay, sa aming kaso, halimbawa, magkakaroon ng class na menu-first-container.

    $container_id— maaari kang magdagdag ng ID sa lalagyan, hindi tinukoy bilang default.

    $menu_class— klase para sa elemento ng menu ng UL, ang halaga nito ay menu.

    $menu_id— ID para sa ul element, default sa menu-(slug)

    $echo— kung ayaw mong ipakita ang menu, ngunit ibalik ang halaga ng function, gamitin ang halaga 0 para sa setting na ito.

    $fallback_cb— kung wala ang menu, tatawagin ang function na wp_page_menu.

    $bago— itinatakda ang teksto na ipinapakita bago ang link A.

    $link_before— ipinapakita ang parirala bago ang teksto ng link, hindi tinukoy.

    $link_after— ipinapakita pagkatapos ng teksto ng link, walang laman din.

    $depth— nagtatakda ng bilang ng mga antas ng hierarchy upang ipakita ang menu; ipinapakita ng default na halaga 0 ang buong menu.

    $walker- ilang uri ng hindi maintindihang custom na "walker object", malamang na mas kailangan ng mga advanced na developer.

    $theme_location— ang lokasyon ng tema kung saan gagamitin ang menu ay dapat na i-activate sa pamamagitan ng register_nav_menu() upang mapili ito ng user. Gayundin ang ilang uri ng hindi ganap na malinaw na setting, tila, kapag nagtatrabaho sa mga widget.

    Mga halimbawa ng paggamit ng wp_nav_menu function

    Ang pinakasimpleng code na ibinigay sa code ay:

    Pag-alis ng lalagyan ng DIV mula sa menu

    "")); ?>

    Sa prinsipyo, walang kumplikado sa paglikha at pamamahala ng isang menu ng WordPress 3.0. Ang mga developer ay makabuluhang pinasimple ang pamamaraan ng trabaho at pinalawak ang mga kakayahan ng elemento ng nabigasyon na ito. Ang solusyon ay kadalasang ginagamit sa iba't ibang mga gawain sa template, halimbawa, kapag lumilikha para sa mga bersyon ng mobile at desktop. Maya-maya ay magdaragdag ako ng ilang higit pang mga snippet sa paksa.

    P.S. Guard. Isang kawili-wili at kapaki-pakinabang na blog para sa mga webmaster sa SEO, kung saan makakahanap ka ng mga sagot sa iyong mga tanong tungkol sa SEO.
    Matagal nang naitatag ng kumpanya ng Aweb ang sarili sa larangan ng pag-promote ng website, pag-optimize at pag-promote ng search engine sa Internet.

    Dahil inilalantad nito ang mga nilalaman ng menu.php module. Sa ibaba ay ipapakita namin ang aming sariling pagbuo ng menu sa PHP, na isinulat mula sa simula sa isang notepad.

    Lalo na magiging kapaki-pakinabang ang code na ito para sa mga dynamic na site na may mga custom na makina. Mag-aalok ako ng dalawang mga pagpipilian sa code na may maliit na pagkakaiba (ang mga pagkakaiba ay ipapaliwanag sa ibang pagkakataon).

    Upang magsimula, magbibigay ako ng tinatayang istraktura ng site kung saan angkop ang menu na ito. Ang istraktura ng site ay dapat magmukhang ganito (classic na view):

    /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

    Ang site ay maaari ding maglaman ng mga subsection para sa mga seksyon:

    /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

    Gumagana rin ang istrukturang ito para sa aming menu na may kaunting pagkakaiba lamang.

    Iminumungkahi kong lumikha ng isang hiwalay na file para sa menu sa php. Halimbawa, ang menu.php ay magiging isang magandang pangalan para sa naturang file. Upang ipatupad ang menu, ang isang estilo ng menu sa CSS ay ibinibigay din upang agad itong gawing mas o hindi gaanong maganda. Naturally, ang istilong ito ay ibinigay para sa sanggunian lamang, dahil ang mga disenyo ng mga site ay ibang-iba.

    Code para sa pag-istilo ng menu sa CSS:

    .menu ( height:42px; padding:0 0 0 16px; background:url(images/spacer.png) repeat; ) .menu li ( display:block; float:left; ) .menu li.active ( background: #000011 ; ) .menu a ( color:#FFF; display:block; line-height:42px; text-decoration:none; padding:0 14px; ) .menu a:hover ( background:url(images/spacer.png) ulitin ;)

    Ngayon, tingnan natin ang unang opsyon para sa pagpapatupad ng isang menu sa PHP, na medyo pinasimple.

    Ang unang bersyon ng menu code sa PHP

    \n"; para sa ($i=0;$i ": "
  • "; echo" ".$array_menu[$i]["pangalan"]."
  • \n"; ) echo ""; ?>

    Ang menu ay maaaring nahahati sa dalawang bahagi. Ang una ay naglalaman ng hanay ng impormasyon ng $array_menu, na naglalaman ng mga pangalan ng aming mga seksyon na may mga link sa mga seksyon. Mayroong isang pagpipilian upang ipasok ang data na ito sa database ng mySQL, ngunit walang partikular na punto dito, dahil ang sample ay napakaliit, kaya hindi ito makakaapekto sa bilis ng trabaho.

    Ang ikalawang bahagi ay naglalaman ng output ng menu sa pamamagitan ng para sa loop. Inihahambing ng cycle ang address ng site sa address mula sa hanay ng $array_menu. Kung mayroong isang tugma, pagkatapos ay ipinapakita namin ang susunod na seksyon ng menu na may espesyal na aktibong klase:

  • , kung hindi man lang
  • . Nagbibigay-daan ito sa amin na i-highlight na may ilang kulay ang bahagi ng menu kung saan matatagpuan ang user. Sa aking opinyon, ito ay isang kinakailangang bagay para sa anumang site, upang maunawaan ng user kung saang seksyon siya naroroon.

    Ang pagkakasunud-sunod sa array ay mapapanatili kapag ang menu ay ipinapakita sa site. Iyon ay, ang array ay dapat punan sa pagkakasunud-sunod kung saan dapat ipakita ang menu.

    Tandaan:
    Kung ang mga URL (address) ng mga heading ng seksyon ay mukhang:
    /section_1
    o ganito
    /razdel_1/nazvanie_razdela.html
    pagkatapos ay kailangan mong magsulat ng eksaktong tugma sa array_menu:
    $array_menu[$i]["url"]="/razdel_1"
    o para sa pangalawang kaso:
    $array_menu[$i]["url"]="/razdel_1/nazvanie_razdela.html";

    Paano gumagana ang unang opsyon sa menu?
    Itina-highlight lamang nito ang menu kung ikaw ay nasa address ng header ng seksyon. Halimbawa, kung ang address ng page ay /razdel_1/articles_1.html, hindi maiha-highlight ang menu sa anumang paraan.

    Ang pangalawang bersyon ng code ay isang binagong bersyon ng una at nagbibigay ng kakayahang i-highlight ang mga menu kahit na sa mga artikulo na matatagpuan sa mga seksyon.

    Ang pangalawang bersyon ng menu code sa PHP

    "; para sa ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["title"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$array_menu[$i]["title"]."
  • "; ) ) echo ""; ?>

    Kung interesado ka sa sagot sa tanong kung paano lumikha ng menu ng website, nakarating ka sa tamang address.

    Titingnan natin ang paglikha ng isang dynamic na menu sa PHP, partikular na isinulat para sa mga dummies ng programming, pati na rin para sa mga nasa tangke pa rin.

    Aralin 3. Paggawa ng menu sa php para sa isang website na dynamic - para sa mga dummies

    Gawin natin ang hinaharap na layout ng aming website. Upang gawin ito, gagawa kami ng isang napakagandang website sa Photoshop at gupitin ito sa mga piraso. Isipin natin na ang header, logo, menu at footer ay hindi nakasulat sa mga salita, tulad ng sa halimbawang ito, ngunit ang mga ito ay elegante at makulay na dinisenyo na mga elemento ng site.

    Gumawa tayo ng tatlong pahina halimbawa at tawagan sila ng Seksyon 1, Seksyon 2, Seksyon 3

    Magiging iba ang tekstong ito para sa iba't ibang pahina, ngunit hindi namin ito aabalahin at iiwan ito sa lahat ng pahina.

    Simulan natin ang paggawa ng website sa PHP.

    1. Piliin ang header, logo, menu, footer block sa magkahiwalay na mga file na may extension na php o html

    header.html

    logo.html

    menu.html

    footer.html

    Magdagdag tayo ng file na may ganitong text para makita natin ito sa lahat ng page. Tawagan natin siya text.html

    Tandaan. Mula ngayon, magtatago ako ng higit pang mga talaan nang direkta sa file. text.html

    2. Gumawa tayo ng template para sa ating website sa PHP.

    Upang gawin ito, gagawa kami ng isang simpleng bagay - i-save ang totoong file, ngunit gamit ang extension ng php at burahin ang lahat ng nilalaman ng teksto. Maaaring hindi ito propesyonal, ngunit ito ay naiintindihan, ngunit gagawin naming kumplikado ang lahat sa ibang pagkakataon. Ngayon ang pangunahing bagay ay upang maunawaan ang prinsipyo ng layout.

    3. Ngayon hindi na namin kailangan ang template.html file.

    Salamat sa kanya, mayroon kaming ideya kung ano ang magiging hitsura ng aming site.

    4. Ang aming template ay template.php file

    Ilalagay na namin ngayon ang lahat ng elemento ng site dito gamit ang include command.

    5. Gumawa tayo ng tatlong pahina, gaya ng gagawin natin sa simula.

    Seksyon 1, tawagin natin 1.php

    Seksyon 2, tawagin natin 2.php

    Seksyon 3, tawagin natin 3.php

    Upang gawin ito, maaari mong gamitin ang pinakasimpleng command I-save bilang...

    Hayaan akong magpaliwanag para sa mga maliliit: buksan ang file template.php, pagkatapos ay pindutin ang I-save bilang... at i-save ito sa ilalim ng pangalan 1.php, ulitin ang pamamaraan at i-save ang mga pahina ng site nang sunud-sunod 2.php, 3.php

    Nagtapos kami ng 3 pahina na may parehong disenyo. I-paste lang ito sa halip na isang file text.html isa pa, dagdagan ng iba't ibang larawan o ilang html code, script at ang nilalaman ng bawat pahina ay magiging kakaiba.

    Pansin!

    Kung ang file ay hindi ginawa index.php para sa pangunahing pahina, pagkatapos ay sa browser, sa pamamagitan ng pag-type ng address ng site, hindi namin makikita ang site mismo, ngunit ang istraktura lamang ng direktoryo (listahan ng mga folder).

    Maaari kang tumingin sa Denver at makita para sa iyong sarili. Ayusin natin ang sitwasyon - gumawa ng file index.php at tawagan natin nang walang gulo bahay. Sa parehong oras, gumawa tayo ng isang file text-home.html at gamit ang utos isama ipasok ito sa bagong likhang pangunahing pahina ng site.

    6. Paano tingnan ang isang website sa php?

    Hindi lang natin makikita ang nangyari. Ito ay hindi na isang template na may extension ng html.

    Pero hindi rin problema. Kailangan natin ang sarili natin, i.e. lokal na server sa iyong computer. Upang gawin ito, i-install namin ang Denver at titingnan ang resulta ng aming trabaho sa isang browser nang hindi nag-o-online.

    Ngayon ay order na. Nag-type ako sa address ng site at nakita ko ang lahat ng nilikha sa isang normal na anyo na may disenyo.

    Ngayon tingnan natin ang menu ng PHP ng site.

    1. Buksan ang file menu.html at gawing mga link sa site ang mga seksyon 1, 2 at 3. Ang mga link sa PHP ay nilikha sa iba't ibang paraan.

    Ang aming gawain ay matutunan kung paano maramdaman ang site na nilikha sa PHP. Samakatuwid, gagawa kami ng mga link tulad ng sa isang regular na static na site Seksyon 1, atbp.

    Gustung-gusto ko ang proseso ng paglikha ng link na ito sa Macromedia Dreamweaver. Magkaroon ng oras upang umani OK at uminom ng kape.

    2. Paano gumawa ng isang link sa menu na hindi aktibo kung ang bisita ay nasa pahinang ito.

    Magiging mas maginhawa para sa bisita na mag-navigate sa site na alam kung aling pahina siya.

    Kung sinunod mo ang lahat ng mga hakbang nang mahigpit na tumuturo sa bawat punto, makikita mo na ang lahat ng mga link sa menu ay palaging aktibo. Paano ito ayusin?

    Una, tandaan natin ang kahulugan kung ano ito Mga pahayag na may kondisyon

    – ito ay kapag ang ilang aksyon ay isinagawa o hindi isinagawa depende sa mga kondisyon.

    Gawin natin ang sumusunod:

    • Kakailanganin natin mga variable at isa may kondisyong operator:

    kung ($master == "Main")// ganitong kondisyon. Kung ito ay naisakatuparan, pagkatapos ay sa lugar na ito ng menu, gamit ang echo command, ang mga ordinaryong HTML tag ay ipinasok na nagpapakita ng inskripsyon na "Home".

    echo"

    bahay

    ";

    iba pa// ay nangangahulugang "kung hindi man" - ano ang mangyayari kung hindi matugunan ang kundisyon. Sa kasong ito, kung ang kundisyon ay hindi natutugunan, ang inskripsiyon na "Home" ay magiging isang link na humahantong sa pangunahing pahina.

    echo"

    bahay

    ";

    • Nakarating kami sa kondisyon, ngunit kaya iyon suriin ang variablekailangan mo itong tanungin.

    Upang gawin ito, ilalagay namin ang mga sumusunod na bloke ng code sa lahat ng mga pahina:

    $master = "Pangunahing";

    $master = "Seksyon 1";

    $master = "Seksyon 2";

    $master = "Seksyon 3";

    Tulad ng nakikita mo, ang bawat pahina ay may sariling code.

    Kaya, ang aming mga praktikal na hakbang para sa paglikha ng PHP menu ay ang mga sumusunod:

    1) Buksan ang file index.php

    at i-paste ang code

    $master = "Pangunahing";

    sa lugar kung saan mo ilalagay ang code na nagpapakita mismo ng menu ng site isama ang "menu.html";
    ?>

    2) Buksan ang file menu.html at ipasok ang code na may kundisyon sa halip na isang simpleng html na link sa pangunahing pahina.

    Tumingin kami sa browser at humanga! Kung pupunta tayo sa pangunahing pahina, ang link ay hindi na aktibo!

    3) Ulitin ang mga punto 1 at 2 sa mga pahina 1.php, 2.php, 3.php

    Pag-uulit 1:

    1) Buksan ang file 1.php at ipasok bago ang code na nagpapakita ng isang bloke ng menu na may ibinigay na variable

    $master = "Seksyon 1";

    2) Buksan ang menu.html file at ipasok ang code na may kundisyon sa halip na isang simpleng link Seksyon 1, ginagawa ang mga sumusunod na pagbabago:

    kung ($master == "Seksyon 1")// ganitong kondisyon. Kung ito ay naisakatuparan, pagkatapos ay sa lugar na ito ng menu, gamit ang echo command, ang mga ordinaryong HTML tag ay ipinasok na nagpapakita ng inskripsyon na "Seksyon 1".

    echo"

    Seksyon 1

    ";

    iba pa// ay nangangahulugang "kung hindi man" - ano ang mangyayari kung hindi matugunan ang kundisyon. Sa kasong ito, kung ang kundisyon ay hindi natutugunan, ang inskripsiyon na "Seksyon 1" ay magiging isang link na humahantong sa pangunahing pahina.

    echo"

    Seksyon 1

    ";

    Nangyari na naman ang milagro! Ngayon kung tayo ay nasa pahina Seksyon 1, hindi aktibo ang link sa menu.

    Ang pag-uulit ay ang ina ng pag-aaral! O para sa mga nasa tangke! muli

    Pag-uulit 2

    1) Buksan file 2.php at i-paste ang code.

    $master = "Seksyon 2";

    2) Buksan muli ang menu.html file at i-paste ang code na may kundisyon

    kung ($master == "Seksyon 2")// ganitong kondisyon. Kung ito ay naisakatuparan, pagkatapos ay sa lugar na ito ng menu, gamit ang echo command, ang mga ordinaryong HTML tag ay ipinasok na nagpapakita ng inskripsyon na "Seksyon 2".

    echo"

    Seksyon 2

    ";

    iba pa// ay nangangahulugang "kung hindi man" - ano ang mangyayari kung hindi matugunan ang kundisyon. Sa kasong ito, kung ang kundisyon ay hindi natutugunan, ang inskripsiyon na "Seksyon 2" ay magiging isang link na humahantong sa pangunahing pahina.

    echo"

    Seksyon 2

    ";

    Pag-uulit 3

    1) Pagbubukas file 3.php at itakda ang variable.

    $master = "Seksyon 3";

    2) Sa menu.html file ipinapasok namin ang code na may kundisyon sa halip na isang link Seksyon 3, ang mga pagbabago ay:

    kung ($master == "Seksyon 3")// ganitong kondisyon. Kung ito ay naisakatuparan, pagkatapos ay sa lugar na ito ng menu, gamit ang echo command, ang mga ordinaryong HTML tag ay ipinasok na nagpapakita ng inskripsyon na "Seksyon 3".

    echo"

    Seksyon 3

    ";

    iba pa// ay nangangahulugang "kung hindi man" - ano ang mangyayari kung hindi matugunan ang kundisyon. Sa kasong ito, kung ang kundisyon ay hindi natutugunan, ang inskripsiyon na "Seksyon 3" ay magiging isang link na humahantong sa pangunahing pahina.

    echo"

    Seksyon 3

    ";

    Bottom line: sa halip na mga link sa ganitong uri ng menu

    bahay


    Seksyon 1

    Seksyon 2


    Seksyon 3

    Ang araling ito tungkol sa php ay isinulat bilang tugon sa maraming kahilingan mula sa mga bisita sa site at ito ay isang praktikal na gabay sa pag-aaral kung paano lumikha ng isang dynamic na menu para sa isang site sa php.

    Sasabihin sa iyo ng susunod na cheat sheet ng webmaster kung paano gumawa ng mga natatanging pamagat, paglalarawan at keyword para sa bawat pahina sa PHP.

    Maaari mong i-download ang archive kasama ang lahat ng template ng site at php menu file. Inirerekomenda para sa mga bago sa programming.

    Kung handa ka nang seryosong mag-aral ng PHP, mahirap makahanap ng mas magandang kurso sa video mula sa Popov. Marami siyang karanasan at magandang istilo.

    ]]> ]]>



  • 2024 | Mga computer para sa lahat - Pag-setup, pag-install, pagbawi