Inurl php oyunun kendi menü kimliği. PHP ve MySQL'de çok düzeyli menü. Bir şekilde görüntülenen sayfayla ilgili öğeler için

  • 20.06.2020

İndirilen dosyayı çift tıklayarak çalıştırın (bir sanal makineniz olması gerekir).

3. Siteyi SQL enjeksiyonları için kontrol ederken anonimlik

Kali Linux'ta Tor ve Privoxy Kurulumu

[Geliştirilmekte olan bölüm]

Windows'ta Tor ve Privoxy Kurulumu

[Geliştirilmekte olan bölüm]

jSQL Enjeksiyon proxy ayarları

[Geliştirilmekte olan bölüm]

4. Siteyi jSQL Injection ile SQL enjeksiyonu için kontrol etme

Programla çalışmak son derece basittir. Sadece site adresini girin ve ENTER'a basın.

Aşağıdaki ekran görüntüsü, sitenin aynı anda üç tür SQL enjeksiyonuna karşı savunmasız olduğunu göstermektedir (bunlarla ilgili bilgiler sağ alt köşede belirtilmiştir). Enjeksiyonların adlarına tıklayarak kullanılan yöntemi değiştirebilirsiniz:

Ayrıca, mevcut veritabanlarını zaten görüntüledik.

Her tablonun içeriğini görebilirsiniz:

Genellikle tabloların en ilginç kısmı yönetici kimlik bilgileridir.

Şanslıysanız ve yöneticinin verilerini bulduysanız, sevinmek için çok erken. Ayrıca, bu verileri nereye gireceğinizi yönetici panelini bulmanız gerekir.

5. jSQL Injection ile yöneticileri arayın

Bunu yapmak için bir sonraki sekmeye gidin. Burada olası adreslerin bir listesiyle karşılaşıyoruz. Kontrol etmek için bir veya daha fazla sayfa seçebilirsiniz:

Kolaylık, başka programları kullanmanıza gerek olmamasıdır.

Ne yazık ki, parolaları düz metin olarak saklayan çok fazla dikkatsiz programcı yoktur. Oldukça sık olarak parola dizisinde şöyle bir şey görürüz:

8743b52063cd84097a65d1633f5c74f5

Bu bir hash. Kaba kuvvetle şifresini çözebilirsiniz. Ve… jSQL Injection'ın yerleşik bir kaba kuvvet aracı vardır.

6. jSQL Injection ile kaba zorlama karmaları

Kuşkusuz kolaylık, başka programlar aramanıza gerek olmamasıdır. En popüler karmaların çoğu için destek var.

Bu en iyi seçenek değil. Karmaların deşifre edilmesinde guru olmak için Rusça "" kitabı önerilir.

Ancak, elbette, elinizde başka bir program olmadığında veya öğrenecek zaman olmadığında, yerleşik bir kaba kuvvet işlevine sahip jSQL Injection kullanışlı olacaktır.

Ayarlar vardır: Şifreye hangi karakterlerin dahil edileceğini, şifre uzunluk aralığını ayarlayabilirsiniz.

7. SQL enjeksiyon tespiti sonrası dosya işlemleri

Veritabanlarıyla yapılan işlemlere ek olarak - bunları okuma ve değiştirme, SQL enjeksiyonları tespit edilirse aşağıdaki dosya işlemleri gerçekleştirilebilir:

  • sunucudaki dosyaları okuma
  • sunucuya yeni dosya yükleme
  • sunucuya kabuk yükleme

Ve tüm bunlar jSQL Injection'da uygulanmaktadır!

Sınırlamalar vardır - SQL sunucusunun dosya ayrıcalıklarına sahip olması gerekir. Makul sistem yöneticileri ile devre dışı bırakılırlar ve dosya sistemine erişim sağlanamaz.

Dosya ayrıcalıklarının varlığını kontrol etmek yeterince kolaydır. Sekmelerden birine gidin (dosya okuma, kabuk oluşturma, yeni dosya yükleme) ve belirtilen işlemlerden birini gerçekleştirmeye çalışın.

Bir diğer çok önemli not - birlikte çalışacağımız dosyanın tam yolunu bilmemiz gerekiyor - aksi takdirde hiçbir şey işe yaramaz.

Aşağıdaki ekran görüntüsüne bakın:

Bir dosya üzerinde herhangi bir işlem yapma girişimi şu şekilde yanıtlanır: DOSYA ayrıcalığı yok(dosya ayrıcalığı yok). Ve burada hiçbir şey yapılamaz.

Bunun yerine başka bir hatanız varsa:

[dizin_adı] içine yazma sorunu

Bu, dosyayı yazmak istediğiniz mutlak yolu yanlış belirttiğiniz anlamına gelir.

Mutlak bir yol varsaymak için, en azından sunucunun üzerinde çalıştığı işletim sistemini bilmek gerekir. Bunu yapmak için Ağ sekmesine geçin.

Böyle bir giriş (dize Win64) bize Windows işletim sistemi ile uğraştığımızı varsaymamız için neden veriyor:

Canlı Tut: zaman aşımı=5, max=99 Sunucu: Apache/2.4.17 (Win64) PHP/7.0.0RC6 Bağlantı: Canlı Tut Yöntemi: HTTP/1.1 200 Tamam İçerik Uzunluğu: 353 Tarih: Cum, 11 Aralık 2015 11:48:31 GMT X-Powered-By: PHP/7.0.0RC6 İçerik-Türü: metin/html; karakter kümesi=UTF-8

Burada biraz Unix (*BSD, Linux) var:

Aktarım Kodlaması: yığınlanmış Tarih: Cum, 11 Aralık 2015 11:57:02 GMT Yöntem: HTTP/1.1 200 Tamam Canlı Tut: zaman aşımı=3, maks=100 Bağlantı: canlı tut İçerik Türü: metin/html X- Destekleyen: PHP/5.3.29 Sunucu: Apache/2.2.31 (Unix)

Ve burada CentOS var:

Metod: HTTP/1.1 200 Tamam Sona Erme: Per, 19 Kasım 1981 08:52:00 GMT Set-Cookie: PHPSESSID=9p60gtunrv7g41iurr814h9rd0; yol=/ Bağlantı: canlı tutma X-Cache-Lookup: t1.hoster.ru:6666'dan MISS Sunucu: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.4.37 X-Cache: MISS from t1.hoster.ru Önbellek Kontrolü: mağaza yok, önbellek yok, yeniden doğrulama gerekir, kontrol sonrası=0, ön kontrol=0 Pragma: önbellek yok Tarih: Cum, 11 Aralık 2015 12:08:54 GMT Aktarım-Kodlama: parçalı İçerik-Türü: metin/html; karakter kümesi=WINDOWS-1251

Windows'ta tipik bir site klasörü C:\Sunucu\veri\htdocs\. Ancak, aslında, birisi Windows'ta bir sunucu yapmayı "düşündüyse", o zaman, büyük olasılıkla, bu kişi ayrıcalıklar hakkında hiçbir şey duymamıştır. Bu nedenle, doğrudan C: / Windows / dizininden denemeye başlamalısınız:

Gördüğünüz gibi, her şey ilk seferinde mükemmel gitti.

Ancak jSQL Enjeksiyon kabuklarının kendileri şüphelerimi artırıyor. Dosya ayrıcalıklarınız varsa, web arayüzü ile bir şeyler yükleyebilirsiniz.

8. SQL enjeksiyonları için toplu kontrol siteleri

Ve hatta jSQL Injection bile bu özelliğe sahiptir. Her şey son derece basit - bir site listesi yükleyin (bir dosyadan içe aktarılabilir), kontrol etmek istediklerinizi seçin ve işlemi başlatmak için uygun düğmeyi tıklayın.

jSQL Enjeksiyonu ile çıktı

jSQL Injection, sitelerde bulunan SQL enjeksiyonlarını bulmak ve kullanmak için iyi ve güçlü bir araçtır. Şüphesiz avantajları: kullanım kolaylığı, yerleşik ilgili işlevler. jSQL Injection, web sitelerini analiz ederken yeni başlayanların en iyi arkadaşı olabilir.

Eksiklikler arasında, veritabanlarını düzenlemenin imkansızlığına dikkat çekerdim (en azından bu işlevi bulamadım). Grafik arayüzlü tüm araçlarda olduğu gibi, bu programın dezavantajları, komut dosyalarında kullanılamamasına bağlanabilir. Bununla birlikte, yerleşik toplu site kontrol işlevi sayesinde bu programda da bazı otomasyonlar mümkündür.

kurulan örnek ve sertifika. Tüm fakülte ve kurslara özel indirim!

Navigasyon olmadan tek bir site tamamlanmaz veya "site menüsü" olarak da adlandırılır. Yani site menüsü bir ağaç şeklinde tek seviyeli ve çok seviyeli olabilir. Tek seviyeli bir menü ile uygulama açısından belirli bir zorluk yoksa, çok seviyeli bir menü oluştururken dikkatlice düşünmeniz gerekir.

Bu görevdeki en önemli şey, çok seviyeli menümüz için bir veritabanı tasarlamaktır. Üç alanlı bir Kategoriler tablosu oluşturalım İD, Başlık, ebeveyn nerede:

  • İD- tanımlayıcı
  • Başlık- Menü adı
  • ebeveyn- Varsayılan kategori üst öğesi 0

Menünün dallanmasından alan sorumludur ebeveyn Eğer ebeveyn = 0, bu kategori üst kategoridir. Ebeveyn kategorisine çocuk eklemek için ebeveyn alanında belirtmeniz gerekmektedir. İD istenen ebeveyn. Örneğin:

Kategori içeren tablolar

Tablodan da görüleceği üzere ana kategori Arabalar iki torun var Mazda Ve Honda alana göre ilgili ebeveyn. ve kategori motosikletler iki yavru kawasaki Ve harley. Aynı zamanda, Tekneler kategorisinin torunları yoktur. Umarım kategorileri nasıl bağlayacağınızı anlamışsınızdır.

Ardından, kelimelerden uygulamaya geçiyoruz. Kategoriler tablosunu oluşturalım.

CREATE TABLE IF EXISTS `categories` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `parent` int(10) unsigned NOT NULL, PRIMARY KEY (`id`)) MOTOR=MyISAM VARSAYILAN CHARSET=utf8 AUTO_INCREMENT=20 ; -- -- "Kategoriler" tablosu verilerini boşaltın -- "Kategoriler"e EKLE ('kimlik', 'başlık', 'parent') DEĞERLER (1, "Arabalar", 0), (2, "Motosikletler", 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, "Tekneler", 0), (12, "Liftback", 8), (13, "Crossover", 8), (14, "Beyaz", 13), (15, "Kırmızı", 13), (16, "Siyah", 13), (17, "Yeşil", 13), (18, Mazda CX, 3 ), (19, Mazda MX, 3);

İşin algoritması aşağıdakilerden oluşur:

Veritabanı bağlantısı oluşturma

sorgu("İSİM AYARLA "utf8""); /* * Bunu yapmanın "resmi" nesne yönelimli yolu * ancak $connect_error PHP 5.2.9 ve 5.3.0'a kadar çalışmıyordu. */ if ($mysqli->connect_error) ( die("Bağlantı başarısız (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Sürümlerle uyumluluktan emin olmak istiyorsanız 5.2 .9'dan önce, * bunun gibi daha iyi kod */ if (mysqli_connect_error()) ( die("Bağlantı başarısız (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

Kategoriler tablosundan veri almak için bir fonksiyon yazma

// Veritabanından menü dizimizi bir dizi olarak alın function getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Bir dizi oluştur. dizi anahtarı menü kimliğidir $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat; )

Bunun gibi bir dizi elde ederiz, burada dizi anahtarı kategori kimliğidir.

Dizi Ağacı İşlevi, Tommy Lacroix

//Tommy Lacroix'den bir diziden ağaç oluşturma işlevi function getTree($dataset) ( $ağaç = dizi(); foreach ($veri kümesi as $id => &$node) ( //Eğer ek yoksa (!$node[" parent"])( $tree[$id] = &$node; )else( //Çocuklar varsa, $dataset[$node["parent"]][" dizisinde dolaşın childs"][$id] = &$ düğüm; ) ) $ağaç döndürür; )

Bir ağaç şeklinde bir dizi alma

Tüm komut dosyası

sorgu("İSİM AYARLA "utf8""); /* * Bunu yapmanın "resmi" nesne yönelimli yolu * ancak $connect_error PHP 5.2.9 ve 5.3.0'a kadar çalışmıyordu. */ if ($mysqli->connect_error) ( die("Bağlantı başarısız (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Sürümlerle uyumluluktan emin olmak istiyorsanız 5.2 .9'dan önce * bu kodu kullanmak daha iyidir */ if (mysqli_connect_error()) ( die("Bağlantı hatası (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //Menümüzü alın veritabanından dizi olarak dizi işlevi getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Dizi anahtarının olduğu bir dizi oluşturun menü kimliği $cat = array(); while ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat; ) //Bir dizi oluşturma işlevi Tommy Lacroix tarafından bir diziden ağaç function getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //Ek yoksa if (!$node["parent) "])( $tree[$id] = &$node; )else( //Çocuklar varsa, $dataset[$node["parent"]]["childs"][$id] dizisini yineleyin = &$node; ) ) return $ağaç; ) //Hazırlan veri içeren inci dizi $cat = getCat($mysqli); //Bir ağaç menüsü oluştur $ağaç = getTree($cat); //Menüyü ağaç işlevi şeklinde görüntülemek için şablon tplMenu($category)( $menu = "
  • ".$category["title"].""; if(isset($category["childs"]))( $menu .= "
      ".showCat($category["çocuklar"]) ."
    "; ) $menü .="
  • "; return $menu; ) /** * Şablonumuzu tekrar tekrar okuyun **/ function showCat($data)( $string = ""; foreach($data as $item)( $string .= tplMenu($item); ) return $string; ) //HTML işaretlemesini al $cat_menu = showCat($tree); //Ekoyu göster "
      ". $cat_menu ."
    "; ?>

    çalışmanın sonucu

    Yönetici için PHP + MySQL'de çok düzeyli menü

    Bu menüyü sitenizin yönetici panelinde kullanmak istiyorsanız, birkaç işlevi yeniden yazmanız gerekir. tplMenü(), gösterKedi().

    ".$kategori["başlık"].""; )else( $menü = " "; ) if(isset($category["çocuklar"]))( $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 ""; ?>

    çalışmanın sonucu

    Arabalar → Mazda →→ Mazda 3 →→→ Sedan →→→ Hatchback →→ Mazda 6 →→→ Liftback →→→ Crossover →→→→ Beyaz →→→→ Kırmızı →→→→ Siyah →→→→ Yeşil →→ Mazda CX →→ Mazda MX → Honda Motorcycles → Kawasaki → Harley Boats

    Panelde oluşturulan özel bir menüyü görüntüler: Görünüm > Menüler.

    Hangi gezinme menüsünün gösterileceği (birkaç tane olabilir) theme_location parametresinde belirtilir.

    theme_location parametresi belirtilmemişse, görüntüleme menüsü aşağıdaki sırayla seçilecektir:

      "menü" parametresinde geçirilen ID, bilgi veya açıklama ile eşleşen ve bu menüde en az bir bağlantı (bir öğe) varsa;

      aksi halde ilk menü boş değildir;

      veya, "fallback_cb" parametresinde belirtilen işlev tarafından döndürülen değeri görüntüler (varsayılan olarak, wp_page_menu işlevi burada belirtilir);

    1. hiçbir şey eşleşmezse, işlev hiçbir şey vermez.

    Temanın menüleri desteklemesi için bu özelliği aşağıdakilerle etkinleştirmeniz gerekir:
    add_theme_support("menüler");

    Veya menü için bir yer kaydedebilirsiniz. register_nav_menu(), ardından tema menüsü desteği otomatik olarak etkinleştirilecektir.

    Menü öğesi değiştirme filtreleri

    • add_filter("wp_nav_menu_args", "my_wp_nav_menu_args"); function my_wp_nav_menu_args($args = "")( $args["container"] = false; return $args; )

      #4.1. Kabı kaldıralım, sadece bir tane, görüntülenen menü

      "" ]); ?>

      #5 ul paketini çıkarın

      Bu örnek, ul sarmalayıcıyı menüden kaldıracaktır:

      "%3$s" ]); ?>

      #6 Menünün en üstüne bir kelime ekleyin

      Bu örnek, aynı menü öğesi olarak, ancak bağlantı olarak değil, bir menü listesinin en üstüne bir kelimenin nasıl ekleneceğini gösterir. Menünün başına "Liste" kelimesini ekleyelim ve ayrıca oluşturulan li etiketi için id niteliğini belirtelim:

      "birincil", "items_wrap" => "

      • Liste:
      • %3$s
      " ]); ?>

      #7 Tüm menülere CSS sınıfları ekleyin

      Bir kanca kullanarak, ihtiyacımız olan koşul karşılanırsa kendi CSS sınıflarımızı ekleyebiliriz.

      Bir gönderiyse ve menü öğesi adı "blog" ise bir CSS sınıfı ekleyelim:

      Add_filter("nav_menu_css_class", "özel_nav_class", 10, 2); function special_nav_class($classes, $item)( if(is_single() && $item->title == "(!LANG:Blog)"){ $classes = "special-class"; } return $classes; } !}

      #8 Bir menü oluşturmak için işlevinizi kullanma

      İlk olarak, "walker" => new Your_Walker_Function argümanını belirtmeniz gerekir.

      Your_Walker_Function, menüyü oluşturan yeni sınıfımızdır. Tekerleği yeniden icat etmemek için orijinalinden kopyalanabilir, bkz. sınıf Walker_Nav_Menu. Sınıf kodunu kopyalıyoruz ve gerektiğinde düzeltiyoruz.

      Menü öğelerine (hem ul hem de li) menü derinliği ve çift/tek CSS sınıfları ekleyen bir örnek:

      // özel menü oluşturma sınıfı: class magomra_walker_nav_menu Walker_Nav_Menu'yu genişletir ( // ul alt menülere sınıflar ekler function start_lvl(&$output, $depth) ( // derinliğe bağlı sınıflar $indent = ($depth > 0 ? str_repeat("\ t", $derinlik) : ""); // kod girintisi $görüntü_derinliği = ($derinlik + 1); // çünkü ilk alt menüyü 0 olarak sayar $sınıflar = dizi("alt menü", ($görüntü_derinliği %) 2 ? "menu-tek" : "menü-çift"), ($display_depth >=2 ? "alt-alt menü" : ""), "menu-derinlik-" . $display_depth); $class_names = implode( " ", $sınıflar); // html oluştur $çıktı .= "\n" . $indent . "

        " . "\n"; ) // li"lere ana/alt sınıfları ekleyin ve start_el(&$output, $item, $depth, $args) fonksiyonuna linkler ekleyin ( global $wp_query; $indent = ($depth > 0) ? str_repeat("\t", $depth) : ""); // kod girintisi // derinliğe bağlı sınıflar $depth_classes = dizi(($depth == 0 ? "ana menü öğesi" : "alt menü- item")), ($derinlik >=2 ? "alt-alt menü-öğesi" : ""), ($derinlik % 2 ? "menü-öğesi-çift"), "menü -item-depth-" . $depth); $depth_class_names = esc_attr(implode(" ", $depth_classes)); // geçen sınıflar $classes = boş($item->classes) ? array() : (dizi) $ item->classes; $class_names = esc_attr(implode(" ", application_filters("nav_menu_css_class", array_filter($classes), $item))); // html oluştur $output .= $indent . "
      • ) $öğeleri döndür; ) function __nav_hasSub($item_id, $items)( foreach($items as $item)( if($item->menu_item_parent && $item->menu_item_parent == $item_id) return true; ) false döndür; )

        #11 Bireysel menü öğelerine sınıf ekleme

        4.1 sürümünden itibaren.

        Bunun için özel bir kanca var: nav_menu_css_class. Ve şimdi sınıflar onun aracılığıyla eklenebilir veya çıkarılabilir. Örneğin, tüm menü öğelerine my__class sınıfını ekleyelim:

        Add_filter("nav_menu_css_class", "add_my_class_to_nav_menu", 10, 2); function add_my_class_to_nav_menu($classes, $item)( /* $classes, Array( => menu-item => menu-item-type-post_type => menu-item-object-page => menu-item-284) içerir */ $sınıflar = "benim_sınıfım"; $sınıfları döndür; )

        4.1 sürümüne kadar.

        Menü öğeleri için sınıflar, _wp_menu_item_classes_by_context(&$menu_items); işleviyle eklenir. . Ancak ne yazık ki sınıfınızı eklemek için herhangi bir filtre sağlamıyor. Bu nedenle, dolaşalım ve koltuk değneği str_replace()'i kullanalım:

        // menüyü görüntülemek yerine almak $menu = wp_nav_menu(array("echo" => 0,)); // tüm öğelere my__class sınıfını ekle $menu = str_replace("class="menu-item", "class="menu-item my__class", $menu); // echo $menüyü göster;

        #12 Menüyü yalnızca varsa göster

        Varsayılan olarak, menü yoksa bunun yerine site sayfaları görüntülenecektir. Ancak menüyü yalnızca yönetici panelinde oluşturulduğunda görüntülemek istiyorsanız, fallback_cb parametresini "__return_empty_string" olarak belirtin:

        wp_nav_menu(array("theme_location" => "birincil menü", "fallback_cb" => "__return_empty_string"));

        #13 Yalnızca menü alt öğesini görüntüleme

        Diyelim ki bir birinci seviye var ve birinci seviyenin öğelerinin her birinin kendi alt menüsü var. Menu-item-135 sınıfına sahip bir öğe için böyle bir alt menü görüntülememiz gerekiyor:

        ## İstediğiniz alt menünün tüm LI'lerini kesin ve bunları UL bloğumuzda görüntüleyin $menu = wp_nav_menu(array("theme_location" => "header_menu", "container" => "", "echo" => 0,) ); $regex_part = preg_quote("menü öğesi-135"); // "gotovye-resheniya" öğesinin alt menüsünü görüntüle preg_match("~". $regex_part .*alt menü[^>]+>(.*?)

      ~s", $menü, $mm); if(!empty($mm)) echo "";

      Çok optimal değil, ancak çalışan bir örnek. Bazen, hızlı bir şekilde sonuç almanız gereken az ziyaret edilen siteler için yararlı olabilir.

      Menü Öğeleri için CSS Sınıfları

      Menü öğelerine aşağıdaki CSS sınıfları eklenir (kullanıcının hangi sayfalarda olduğuna göre ayrılır):

      Tüm sayfalardaki tüm öğeler için

        .menü seçeneği- tüm menü öğelerine;

        .menu-öğe-nesne-(nesne)- (nesnenin) gönderi türü veya sınıflandırma adıyla değiştirildiği tüm öğelere:
        .menu-item-object-category (kategoriler için)
        .menu-item-object-tag (etiketler için)
        .menu-item-object-page (kalıcı sayfalar için)
        .menu-item-nesne-(özel)

      • .menu-öğe tipi-(tür)- (tür) bağlantı türü (gönderme veya sınıflandırma) ile değiştirildiği tüm menü öğelerine. Her tür bağlantıyı gruplandırır:
        .menu-item-type-post_type (kalıcı sayfa, özel gönderi türü)
        .menu-item-type-taksonomisi (kategori, etiket veya özel sınıflandırma)

      Geçerli sayfa öğeleri için

      • .current-menü-öğesi- menüdeki bağlantı, görüntülenen sayfanın adresiyle eşleşiyorsa. Geçerli sayfa.

      Görüntülenen sayfanın üst öğeleri için

      • .current-menü-ebeveyn
      • .current-(nesne)-ata
      • .current-(type)-ata

      Bir şekilde görüntülenen sayfayla ilgili öğeler için

      • .current-menü-atası
      • .current-(nesne)-ata
      • .current-(type)-ata

      Sitenin ana sayfasıyla ilgili öğeler için

      • .menü-öğe-ev

      wp_page_menu() işleviyle uyumluluk

      • .page_item
      • .page-item-$ID
      • .current_page_item
      • .current_page_parent
      • .current_page_ancestor

      $item nesnesi

      $item parametreleri

      Örnekler genellikle $item menü öğesini kullanır. Bu elemanın hemen hemen tüm parametreleri aşağıda gösterilmiştir:

      Alan Tanım
      İD Menü öğesi kimliği
      menu_item_parent Üst menü öğesinin kimliği
      sınıflar menü öğesi sınıfları dizisi
      Posta tarihi Ekleme Tarihi
      post_modified son değiştirilme tarihi
      post_author Bu menü öğesini ekleyen kullanıcının kimliği
      Başlık menü öğesi başlığı
      url menü öğesi bağlantısı
      attr_title bağlantının başlık özelliği
      xfn rel bağlantı özelliği
      hedef bağlantının hedef özelliği
      akım geçerli öğe buysa 1'dir
      current_item_ancestor 1 geçerli öğe iç içe geçmiş bir öğeyse
      current_item_parent 1 geçerli öğe ana öğeyse
      menu_order menüdeki seri numarası
      Nesne Kimliği Menü nesne kimliği. Kayıtlar, şartlar vb.
      tip menü nesne türü (vergi, giriş)
      nesne vergi adı, gönderi türü: sayfa, kategori, post_tag ...
      type_label yerelleştirilmiş tür adı: Kategori, Sayfa
      post_parent ebeveyn kimliği
      yazı başlığı yazı başlığı
      posta adı plak şirketi
      $ite örneği
      WP_Post Nesnesi ( => 10 => 5 => 2019-02-11 13:33:39 => 2019-02-11 13:33:39 => => Yeni => => yayınla => kapalı => kapalı = > => yeni => => => 2019-02-11 23:10:19 => 2019-02-11 23:10:19 => => 0 => http://dh5.com/?p= 10 => 1 => nav_menu_item => => 0 => ham => 10 => 0 => 10 => özel => özel => Özel Bağlantı => Yeni => # => => => => Dizi = > ekstra-alt menü => menü öğesi => menü öğesi türü-özel => menü öğesi-nesne-özel => => => =>)

      Walker parametresini kullanmaya bir örnek

      Walker'da menü oluşturacak bir nesne belirtebilirsiniz. Bu nesnede, ortaya çıkan menünün HTML kodunu tanımlayabilirsiniz.

      Standart olmayan bir düzen için bir menü oluşturmanız gerekiyorsa, bazen bu nesneyi yeniden oluşturmak düzeni yeniden yapmaktan daha kolaydır.

      Yürüteç nesnesinin bir örneği olarak, sınıfı ele alalım Walker_Nav_Menu(), varsayılan olan. İçinde yalnızca start_el() yöntemiyle ilgileniyoruz. Her öğenin HTML'sinden sorumlu olan kişidir. Kural olarak, sadece onu değiştirmek yeterlidir. Bunu yapmak için Walker_Nav_Menu sınıfını genişletecek kendi sınıfınızı oluşturmanız ve menüyü çağırırken walker parametresinde belirtmeniz gerekir.

      Bir örneğe bakalım. start_el() yönteminin kodu değiştirilmeden alındı. Şablon olarak kullanıyoruz:

      Sınıf My_Walker_Nav_Menu Walker_Nav_Menu'yu genişletir ( /** * Öğe çıktısını başlatır. * * @3.0.0'dan beri * @4.4.0'dan beri (@see "nav_menu_item_args") filtresi eklendi. * * @see Walker::start_el() * * @param string $output Referans tarafından geçildi.Ek içerik eklemek için kullanılır.* @param WP_Post $item Menü öğesi veri nesnesi.* @param int $depth Menü öğesinin derinliği. Doldurma için kullanılır.* @param stdClass $args Bir nesne of wp_nav_menu() argümanları * @param int $id Geçerli öğe kimliği */ public function start_el(&$output, $item, $depth = 0, $args = dizi(), $id = 0) ( if (isset ($args->item_spacing) && "discard" === $args->item_spacing) ( $t = ""; $n = ""; ) else ( $t = "\t"; $n = "\n "; ) $indent = ($derinlik) ? str_repeat($t, $derinlik) : ""; $sınıflar = boş($item->sınıflar) ? dizi() : (dizi) $item->sınıflar; $sınıflar = "menu-item-" .$item->ID; $args = application_filters("nav_menu_item_args", $args, $item, $depth); $class_names = join(" ", application_filters("nav_menu_css_class", array_ filtre($sınıflar), $item, $args, $derinlik)); $sınıf_adı = $sınıf_adı ? " class="" .esc_attr($class_names) . """ : ""; $id = application_filters("nav_menu_item_id", "menu-item-". $item->ID, $item, $args, $derinlik); $kimlik = $kimlik? " id="" .esc_attr($id) . """ : ""; // $output .= $indent menü öğesi için HTML kodunu oluşturun. " "; $atts = array(); $atts["title"] = ! empty($item->attr_title) ? $item->attr_title: ""; $atts["target"] = ! boş($item- >hedef) ? $item->hedef: ""; $atts["rel"] = ! empty($item->xfn) ? $item->xfn: ""; $atts["href"] = ! boş ($item->url) ?$item->url: ""; $atts = application_filters("nav_menu_link_attributes", $atts, $item, $args, $depth); $attributes = ""; foreach ($atts as $attr => $değer) ( if (! boş($değer)) ( $değer = ("href" === $attr) ? esc_url($değer) : esc_attr($değer); $attributes .= " " .$attr ."="" .$değer . """; ) ) $title = application_filters("the_title", $item->title, $item->ID); $title = application_filters("nav_menu_item_title" , $başlık, $item, $args, $derinlik); $item_output = $args->önce; $item_output .= " "; $item_output .= $args->link_before . $title . $args->link_after; $item_output .= ""; $item_output .= $args->after; $output .= application_filters("walker_nav_menu_start_el", $item_output, $item, $depth, $args); ) )

      Şimdi menüyü çağırırken yürüteçimizi belirtiyoruz:

      Wp_nav_menu(array("theme_location" => "head_menu", "walker" => yeni My_Walker_Nav_Menu(),));

      Bitti, şimdi her menü öğesi ihtiyacımız olan HTML şemasına göre oluşturulacak.

      Filtreli BEM menüsü

      Düzen, BEM metodolojisine göre oluşturulacaktır:

      Dosya index.php veya menüyü görüntülemek için başka bir

      "başlık menüsü", ]);

      Dosya işlevler.php

      "Üst alan", "alt bilgi menüsü" => "Alt alan", ]); )); // Ana menü seçeneklerini değiştirir add_filter("wp_nav_menu_args", "filter_wp_menu_args"); function filter_wp_menu_args($args) ( if ($args["theme_location"] === "header-menu") ( $args["container"] = false; $args["items_wrap"] = ""; $args[ "menu_class"] = "menu menu--main menu-horizontal"; ) return $args; ) // li etiketinin id niteliğini değiştirin add_filter("nav_menu_item_id", "filter_menu_item_css_id", 10, 4); function filter_menu_item_css_id($menu_id, $item, $args, $depth) ( return $args->theme_location === "header-menu" ? "" : $menu_id; ) // li etiketinin sınıf niteliğini değiştirin add_filter( "nav_menu_css_class", "filter_nav_menu_css_classes", 10, 4); function filter_nav_menu_css_classes($classes, $item, $args, $depth) ( if ($args->theme_location === "header-menu") ( $classes = [ "menu-node", "menu-node--main_lvl_ " . ($depth + 1) ]; if ($item->current) ( $classes = "menu-node--active"; ) ) return $classes; ) // İç içe ul add_filter(" nav_menu_submenu_css_class", "filter_nav_menu_submenu_css_class", 10, 3); function filter_nav_menu_submenu_css_class($classes, $args, $depth) ( if ($args->theme_location === "header-menu") ( $classes = [ "menu", "menu--dropdown", "menu--vertical" " ]; ) return $classes; ) // Bağlantılara sınıf ekle add_filter("nav_menu_link_attributes", "filter_nav_menu_link_attributes", 10, 4); function filter_nav_menu_link_attributes($atts, $item, $args, $depth) ( if ($args->theme_location === "header-menu") ( $atts["class"] = "menu-link"; if ($ item->current) ( $atts["class"] .= "menu-link--active"; ) ) return $atts; )

      Bu hizmette herkese açık bir Facebook sayfası için çok ucuz beğeniler sipariş edin ve sadece iyi bir fiyat değil, aynı zamanda bir kaynak satın almak için kişisel koşullar seçme fırsatını yakalayın. Örneğin, alma hızı modunu ve imzalı sayfaların kalitesini seçebileceksiniz. Ayrıca, hizmet müşterilerine garanti vermektedir.

      kod wp gezinme menüsü: wp-includes/nav-menu-template.php WP 5.2.2

      "", "container" => "div", "container_class" => "", "container_id" => "", "menu_class" => "menu", "menu_id" => "", "echo" => true, "fallback_cb" => "wp_page_menu", "before" => "", "after" => "", "link_before" => "", "link_after" => "", "items_wrap" => "" , "item_spacing" => "koru", "depth" => 0, "walker" => "", "theme_location" => "",); $args = wp_parse_args($args, $varsayılanlar); if (! in_array($args["item_spacing"], array("preserve", "discard")), true)) ( // geçersiz değer, varsayılana geri dönün. $args["item_spacing"] = $varsayılanlar[" item_spacing"]; ) /** * Bir gezinme menüsünü görüntülemek için kullanılan argümanları filtreler. * * @since 3.0.0 * * @see wp_nav_menu() * * @param dizisi $args wp_nav_menu() bağımsız değişkenleri dizisi. */ $args = application_filters("wp_nav_menu_args", $args); $args = (nesne) $args; /** * wp_nav_menu() çıktısının kısa devre yapılıp yapılmayacağını filtreler. * * Filtreye boş olmayan bir değer döndürmek * wp_nav_menu() işlevini kısa devre yapar, $args->echo doğruysa bu değeri yansıtır, aksi takdirde bu değeri döndürür. * * @since 3.9.0 * * @see wp_nav_menu() * * @param string|null $output Nav menü çıkışı ile kısa devre yapın. varsayılan boş. * @param stdClass $args wp_nav_menu() bağımsız değişkenlerini içeren bir nesne. */ $nav_menu = application_filters("pre_wp_nav_menu", null, $args); if (null !== $nav_menu) ( if ($args->echo) ( echo $nav_menu; dönüş; ) return $nav_menu; ) // İstenen menüye göre gezinme menüsünü alın $menu = wp_get_nav_menu_object($args- >menü); // Tema_konumuna dayalı olarak gezinme menüsünü alın if (! $menu && $args->theme_location && ($locations = get_nav_menu_locations()) && isset($locations[ $args->theme_location ])) ( $menu = wp_get_nav_menu_object( $locations[ $args->theme_location ]); ) // hala bir menü bulamıyorsak, öğeleri içeren ilk menüyü alın if (! $menu && ! $args->theme_location) ( $menus = wp_get_nav_menus() ; foreach ($menus as $menu_maybe) ( if ($menu_items = wp_get_nav_menu_items($menu_maybe->term_id, array("update_post_term_cache" => false))) ( $menu = $menu_maybe; break; ) ) ) if (empty( $args->menu)) ( $args->menu = $menu; ) // Menü varsa, öğelerini alın.if ($menu && ! is_wp_error($menu) && ! isset($menu_items)) ( $ menu_items = wp_get_nav_menu_items($menu->term_id, array("update_post_term_cache" => false)); ) /* * Menü bulunamadıysa: * - Geri çekil (belirtilmişse) veya kefalet * * Menü yoksa öğeler bulundu: * - Geri çekil, ancak yalnızca tema konumu belirtilmemişse. * - Aksi takdirde, kefaletle. */ if ((! $menu || is_wp_error($menu) || (isset($menu_items) && empty($menu_items) && ! $args->theme_location)) && isset($args->fallback_cb) && $args ->fallback_cb && is_callable($args->fallback_cb)) ( return call_user_func($args->fallback_cb, (array) $args); ) if (! $menu || is_wp_error($menu)) ( return false; ) $ nav_menu = $öğeler = ""; $show_container = yanlış; if ($args->container) ( /** * Menü kapsayıcıları olarak kullanım için geçerli olan HTML etiketlerinin listesini filtreler. * * @since 3.0.0 * * @param dizisi $tags Menü olarak kullanım için kabul edilebilir HTML etiketleri container.* Varsayılan, "div" ve "nav" içeren dizidir.*/ $allowed_tags = application_filters("wp_nav_menu_container_allowedtags", array("div", "nav")); if (is_string($args->container) && in_array ($args->container, $allowed_tags)) ( $show_container = true; $class = $args->container_class ? " class="" .esc_attr($args->container_class) . """ : " class="menu -" . $menu->slug. "-container""; $id = $args->container_id ? " id="" . esc_attr($args->container_id) . """ : ""; $nav_menu .= "<" . $args->konteyner. $kimlik . $sınıf. ">"; ) ) // $menu_item değişkenlerini ayarlayın _wp_menu_item_classes_by_context($menu_items); $sorted_menu_items = $menu_items_with_children = dizi(); foreach ((dizi) $menu_items as $menu_item) ( $menu_items[ $menu_item->menu_order ] = $menu_item; if ($menu_item->menu_item_parent) ( $menu_items_with_children[ $menu_item-] true) //>menu_item-) Uygun olduğunda menu-item-has-children sınıfını ekleyin if ($menu_items_with_children) ( foreach ($sorted_menu_items as &$menu_item) ( if (isset($menu_items_with_children[ $menu_item->ID ])) ( $menu_item->classes = "menü-öğesi-çocukları vardır"; ) ) ) unset($menu_items, $menu_item); /** * Menünün HTML'sini oluşturmadan önce menü öğesi nesnelerinin sıralanmış listesini filtreler. * * 3.1.0'dan beri * * @param dizisi $sorted_menu_items Menü öğeleri, her bir menü öğesinin menü sırasına göre sıralanır. * @param stdClass $args wp_nav_menu() bağımsız değişkenlerini içeren bir nesne. */ $sorted_menu_items = application_filters("wp_nav_menu_objects", $sorted_menu_items, $args); $items .= walk_nav_menu_tree($sorted_menu_items, $args->depth, $args); unset($sorted_menu_items); // öznitelikler if (! boş($args->menu_id)) ( $wrap_id = $args->menu_id; ) else ( $wrap_id = "menu-" . $menu->slug; while (in_array($wrap_id, $) menu_id_slugs)) ( if (preg_match("#-(\d+)$#", $wrap_id, $matches)) ( $wrap_id = preg_replace("#-(\d+)$#", "-" . ++$ eşleşmeler, $wrap_id); ) else ( $wrap_id = $wrap_id. "-1"; ) ) ) $menu_id_slugs = $wrap_id; $wrap_class = $args->menu_class ? $args->menu_sınıfı: ""; /** * Gezinme menüleri için HTML listesi içeriğini filtreler. * * @since 3.0.0 * * @see wp_nav_menu() * * @param string $items Menü öğeleri için HTML liste içeriği. * @param stdClass $args wp_nav_menu() bağımsız değişkenlerini içeren bir nesne. */ $items = application_filters("wp_nav_menu_items", $items, $args); /** * Belirli bir gezinme menüsü için HTML listesi içeriğini filtreler. * * @since 3.0.0 * * @see wp_nav_menu() * * @param string $items Menü öğeleri için HTML liste içeriği. * @param stdClass $args wp_nav_menu() bağımsız değişkenlerini içeren bir nesne. */ $items = application_filters("wp_nav_menu_($menu->slug)_items", $items, $args); // Bu noktada hiçbir öğe yoksa herhangi bir işaretleme yazdırmayın. if (empty($items)) ( return false; ) $nav_menu .= sprintf($args->items_wrap, esc_attr($wrap_id), esc_attr( $wrap_class), $items); unset($items); if ($show_container) ( $nav_menu .= "konteyner. ">"; ) /** * Gezinme menüleri için HTML içeriğini filtreler. * * @since 3.0.0 * * @see wp_nav_menu() * * @param string $nav_menu Gezinme menüsü için HTML içeriği. * @param stdClass $args wp_nav_menu() bağımsız değişkenlerini içeren bir nesne. */ $nav_menu = application_filters("wp_nav_menu", $nav_menu, $args); if ($args->echo) ( echo $nav_menu; ) else ( return $nav_menu; ) )

    Web sitesi menüsü nasıl oluşturulur sorusunun cevabını merak ediyorsanız doğru yere geldiniz.

    PHP'de, programlamadaki aptallar ve hala tankta olanlar için özel olarak yazılmış dinamik bir menü oluşturmaya bakacağız.

    ders 3

    Sitemizin gelecekteki düzenini oluşturalım. Bunu yapmak için Photoshop'ta süper güzel bir web sitesi çizin ve parçalara ayırın. Diyelim ki üst bilgi, logo, menü ve alt bilgi bu örnekte olduğu gibi kelimelerle yazılmıyor, bunlar sitenin zarif ve rengarenk tasarlanmış öğeleri.

    Örneğin, üç sayfa oluşturalım ve bunlara Kısım 1, Kısım 2, Kısım 3 diyelim.

    Bu metin farklı sayfalar için farklı olacaktır, ancak bununla uğraşmayacağız ve tüm sayfalarda olduğu gibi bırakmayacağız.

    Şimdi php ile bir web sitesi oluşturmaya başlayalım.

    1. Üstbilgi, logo, menü, altbilgi bloklarını php veya html uzantılı ayrı dosyalara ayırın

    başlık.html

    logo.html

    menü.html

    altbilgi.html

    Tüm sayfalarda görmek için bu yazı ile bir dosya ekleyelim. diyelim metin.html

    Not. Şu andan itibaren, doğrudan dosyada daha fazla kayıt tutacağım. metin.html

    2. Sitemiz için php ile bir şablon oluşturalım.

    Bunu yapmak için basitçe yapalım - gerçek dosyayı kaydedin, ancak php uzantısıyla tüm metin içeriğini silin. Profesyonel olmasına izin vermeyin, ancak anlaşılabilir ve daha sonra her şeyi karmaşıklaştıracağız. Şimdi asıl şey, düzen ilkesini anlamaktır.

    3. Şimdi template.html dosyasına ihtiyacımız yok.

    Onun sayesinde sitemizin nasıl görüneceğine dair bir fikrimiz var.

    4. Şablonumuz template.php dosyasıdır.

    Şimdi include komutunu kullanarak sitenin tüm öğelerini içine ekleyeceğiz.

    5. Başlangıçta amaçladığımız gibi üç sayfa oluşturalım.

    Bölüm 1, Hadi arayalım 1.php

    Bölüm 2, Hadi arayalım 2.php

    3. Bölüm, Hadi arayalım 3.php

    Bunu yapmak için en basit komutu kullanabilirsiniz. farklı kaydet...

    En küçüğü için açıklayacağım: dosyayı aç şablon.php, ardından düğmesine basın farklı kaydet... ve isim altında kaydet 1.php, prosedürü tekrarlayın ve sitenin sayfalarını sırayla kaydedin 2.php, 3.php

    Aynı tasarıma sahip 3 sayfamız var. Dosya yerine eklemek yeterlidir metin.html diğeri, farklı resimler veya herhangi bir html kodu, komut dosyası ve her sayfanın içeriği ile desteklemek için benzersiz olacaktır.

    Dikkat!

    Dosya oluşturulmamışsa index.php ana sayfa için, ardından tarayıcıda site adresini yazarak sitenin kendisini değil, yalnızca dizin yapısını (klasör listesi) göreceğiz.

    Denver'a bakıp kendin görebilirsin. Durumu düzeltelim - bir dosya oluşturun index.php ve daha fazla uzatmadan uzun süre arayın ev. Bir dosya oluşturalım metin-ev.html ve komut ile Dahil etmek Sitenin yeni oluşturulan ana sayfasına yapıştırın.

    6. Bir siteyi php ile nasıl görüntüleyebilirim?

    Ne oldu - bu yüzden sadece görmeyin. Bu artık html uzantılı bir şablon değil.

    Ama sorun da değil. Kendimize ihtiyacımız var, yani. bilgisayardaki yerel sunucu. Bunun için Denver'ı kuracağız ve internete girmeden tarayıcıda yaptığımız işin sonucuna bakacağız.

    Şimdi sıra burada. Site adresini yazdım ve yeni oluşturulmuş her şeyi normal bir biçimde bir tasarımla gördüm.

    Şimdi php site menüsünü ele alalım.

    1. menu.html dosyasını açın ve 1., 2. ve 3. bölümleri site bağlantılarına çevirin. Php'de bağlantılar farklı şekillerde oluşturulur.

    Görevimiz, php'de oluşturulan siteyi nasıl hissedeceğinizi öğrenmek. Bu nedenle, normal bir statik site Bölüm 1, vb. gibi bağlantılar yapacağız.

    Macromedia Dreamweaver'daki bu bağlantı oluşturma prosedürünü gerçekten seviyorum. hasat için zamanın var Tamam ve kahve iç.

    2. Ziyaretçi bu sayfadaysa menüdeki bir bağlantı nasıl devre dışı bırakılır.

    Ziyaretçinin hangi sayfada olduğunu bilerek sitede gezinmesi daha uygun olacaktır.

    Tüm adımları kesinlikle nokta nokta tamamladıysanız, menüdeki tüm linklerin bizde sürekli aktif olduğunu görebilirsiniz. Nasıl düzeltilir?

    Neyin tanımıyla başlayalım koşullu ifadeler

    - bu, koşullara bağlı olarak bazı eylemlerin gerçekleştirildiği veya gerçekleştirilmediği zamandır.

    Aşağıdakileri yapalım:

    • İhtiyacımız olacak değişkenler ve bir koşullu operatör:

    if ($master == "Usta")// bu durum. Yürütülürse, menünün bu yerine, yankı komutunu kullanarak, "Ana Sayfa" yazısını görüntüleyen sıradan HTML etiketleri eklenir.

    Eko "

    ev

    ";

    Başka// "aksi halde" anlamına gelir - koşul karşılanmazsa ne olur. Bu durumda, koşul karşılanmazsa, "Ana" yazısı ana sayfaya giden bir bağlantı olacaktır.

    Eko "

    ev

    ";

    • Bir şart bulduk ama değişkeni kontrol etbunu sorman gerek

    Bunu yapmak için aşağıdaki kod bloklarını tüm sayfalara yerleştirin:

    $master ="Usta";

    $master ="Bölüm 1";

    $master ="Bölüm 2";

    $master ="Bölüm 3";

    Gördüğünüz gibi, her sayfanın kendi kodu vardır.

    Dolayısıyla bir php menüsü oluşturmak için pratik adımlarımız şu şekilde olacaktır:

    1) dosyayı açma index.php

    ve kodu yapıştırın

    $master ="Usta";

    site menüsünün kendisini görüntüleyen kodun ekleme noktasına "menu.html" içerir;
    ?>

    2) dosyayı açma menü.html ve ana sayfaya basit bir html bağlantısı yerine koşulu içeren kodu ekleyin.

    Tarayıcıya bakıyoruz ve hayran kalıyoruz! Ana sayfaya gidersek link artık aktif değil!

    3) 1. ve 2. adımları sayfalarla tekrarlayın 1.php, 2.php, 3.php

    Tekrar 1:

    1) 1.php dosyasını açın ve menüyü görüntüleyen kodun önüne belirli bir değişkene sahip bir blok yapıştırın

    $master ="Bölüm 1";

    2) menu.html dosyasını açın ve basit bir bağlantı yerine koşulu içeren kodu yapıştırın Bölüm 1 aşağıdaki değişiklikleri yaparak:

    if ($master == "Bölüm 1")// bu durum. Yürütülürse, menünün bu yerine, yankı komutunu kullanarak, "Bölüm 1" yazısını görüntüleyen sıradan HTML etiketleri eklenir.

    Eko "

    Bölüm 1

    ";

    Başka// "aksi halde" anlamına gelir - koşul karşılanmazsa ne olur. Bu durumda, koşul karşılanmazsa, "Bölüm 1" yazısı ana sayfaya giden bir bağlantı olacaktır.

    Eko "

    Bölüm 1

    ";

    Mucize yine oldu! Şimdi sayfadaysak Bölüm 1, menüdeki bağlantı aktif değil.

    Tekrar, öğrenmenin anasıdır! Veya tanktakiler için! Yine

    tekrar 2

    1) Açık dosya 2.php ve kodu yapıştırın.

    $master ="Bölüm 2";

    2) menu.html dosyasını tekrar açın ve kodu koşulla yapıştırın

    if ($master == "Bölüm 2")// bu durum. Yürütülürse, menünün bu yerine, yankı komutu kullanılarak, "Bölüm 2" yazısını görüntüleyen sıradan HTML etiketleri eklenir.

    Eko "

    Bölüm 2

    ";

    Başka// "aksi halde" anlamına gelir - koşul karşılanmazsa ne olur. Bu durumda, koşul karşılanmazsa, "Bölüm 2" yazısı ana sayfaya giden bir bağlantı olacaktır.

    Eko "

    Bölüm 2

    ";

    tekrar 3

    1) Açığız dosya 3.php ve değişkeni ayarlayın.

    $master ="Bölüm 3";

    2) menu.html dosyasında, bağlantı yerine koşulu içeren kodu ekleyin 3. Bölüm, değişiklikler şunlardır:

    if ($master == "Bölüm 3")// bu durum. Yürütülürse, menünün bu yerine, yankı komutu kullanılarak, "Bölüm 3" yazısını görüntüleyen sıradan HTML etiketleri eklenir.

    Eko "

    3. Bölüm

    ";

    Başka// "aksi halde" anlamına gelir - koşul karşılanmazsa ne olur. Bu durumda, koşul karşılanmazsa, "Bölüm 3" yazısı ana sayfaya giden bir bağlantı olacaktır.

    Eko "

    3. Bölüm

    ";

    Sonuç: bu tür menülerde linkler yerine biz

    ev


    Bölüm 1

    Bölüm 2


    3. Bölüm

    Bu php öğreticisi, site ziyaretçilerinden gelen yoğun talep üzerine yazılmıştır ve bir php sitesi için dinamik bir menünün nasıl oluşturulacağını öğrenmek için pratik bir kılavuzdur.

    Aşağıdaki web yöneticisinin hile sayfası, php'deki her sayfa için nasıl benzersiz başlıklar, açıklamalar ve anahtar kelimeler yapacağınızı söyleyecektir.

    Arşivi tüm site şablonu ve php menü dosyaları ile indirebilirsiniz. Programlamaya yeni başlayanlar için önerilir.

    Ciddi bir php çalışmasına hazırsanız, Popov'dan daha iyi bir video kursu bulmak zor. Çok fazla tecrübesi ve iyi bir stili var.

    ]]> ]]>




    Bilgisayar yardım web sitesi

    © Telif hakkı 2022,
    rzdoro.ru - Bilgisayar yardım sitesi

    • Kategoriler
    • Demir
    • Windows 10
    • Tarama
    • Windows 7
    • Demir
    • Windows 10
    • Tarama
    • Windows 7