Fasulye html modulları php adı. Jdoc:include - səhifədəki məzmunu göstərmək üsulu. Sadə kəsiklər əlavə etmək

Şablonun gövdəsində məzmunun göstərilməsi üsulları mövzusuna qısaca toxunduq. İndi onun nə olduğuna və nə ilə yeyildiyinə daha yaxından nəzər salaq. Beləliklə, metod bəyannamələri jdoc hər Joomla şablonunda mövcuddur və bu və ya digər məlumatları şablonun mətnində (yəni saytın səhifəsində) göstərin. Ümumiyyətlə, metod bəyannaməsi belə görünür:

Bu sətir saytdakı komponentlərdən məlumatları göstərir, məsələn, com_content-dən məqalələr. Çıxış elementlərinin növü atributda göstərilmişdir.

1. tip - çıxış elementlərinin növləri.

  • komponent- yuxarıda yazdığım kimi, səhifənin əsas məzmununu göstərir. Şablon üçün yalnız bir dəfə çağırıla bilər.
  • baş- açılış etiketindən sonra da bir dəfə elan edilir . Üslubları, skriptləri göstərmək üçün xidmət edir, və cari səhifənin metadatası.</li><li><i>mesaj</i><i>- </i> sistem mesajlarını göstərir. Sənədin mətnində bir dəfə elan edilir.</li><li><i>quraşdırma</i>- heç nə göstərmir və quraşdırma üçün “təlimat”dır.</li><li><i>modul -</i> səhifədə tək modulu göstərir. Reklamların sayı məhdudiyyətsizdir.</li><li><i>modullar</i>- əvvəlki tipdən fərqli olaraq, öz mövqeyində birdən çox modulu göstərməyə imkan verir.</li> </ul><p>Siyahıda göstərilən ilk dörd növ üçün onları səhifədə göstərmək kifayətdir. Modul tipində tapşırıq bir az daha mürəkkəbləşir. Səhifədə modulu göstərmək üçün əvvəlcə onun üçün modul yaratmalıyıq <b>modul mövqe</b> unikal identifikatorla (modul mövqeyinin adı). Bu name="mövqe adı" atributundan və sətrin məcburi əlavə edilməsindən istifadə etməklə həyata keçirilir:</p><p> <position>vəzifə adı</position> templateDetails.xml faylına. Vəzifənin adını templateDetails.xml-də təsvir etməklə biz onu sistemdə təyin edirik və modul menecerində görürük. Vəzifələrin adları ixtiyari ola bilər, baxmayaraq ki, ad = "user3" mövqeyi yuxarı menyunu göstərmək üçün standart olaraq istifadə olunur.</p><p><b>2. stil - çıxış üslubunun təsviri (mod chrome).</b></p> <p>Göstərilən üslubdan asılıdır <a href="https://5visa.ru/az/multimedia/raskladnoi-planshet-lenovo-folio-predstavila-skladnoi-planshet-i-smartfon.html">görünüş</a> və modul qabıq quruluşu. Oxşayır</p><p> :<jdoc:include type="modules" name="user1" style="xhtml" />Varsayılan olaraq, modul çıxışının bir neçə üslubu var:</p><ul><li><i>xhtml -</i> modulu modChrome_xhtml($module, &$params, &$attribs) başlıq funksiyası olan blokda göstərir <br>{<br>if (!boş ($module->məzmun)) : ?> <br> <div class="moduletable<?php echo htmlspecialchars($params->almaq ("moduleclass_sfx")); ?>>"> <br> <?php if ($module->şou başlığı != 0) : ?> <br> <h3><?php echo $module->başlıq; ?></h3><br> <?php endif; ?><br> <?php echo $module->məzmun; ?> <br> </div><br> <?php endif;<br>}</li><li><i>masa -</i> modulu cədvəl strukturunun tərtibatında göstərir <br>funksiya modChrome_table($modul, &$params, &$attribs) <br>{ ?><br> <table cellpadding="0" cellspacing="0" class="moduletable<?php echo htmlspecialchars($params->almaq ("moduleclass_sfx")); ?>>"> <br> <?php if ($module->şou başlığı != 0) : ?> <br> <tr><br> <th><br> <?php echo $module->başlıq; ?> <br> </th><br> </tr><br> <?php endif; ?><br> <tr><br> <td><br> <?php echo $module->məzmun; ?> <br> </td><br> </tr><br> </table><br> <?php<br>}</li><li><i>horz -</i> cədvəl xanasında modulun məzmununu göstərir, üfüqi funksiyanı modChrome_horz($module, &$params, &$attribs) <br>{ ?><br> <table cellspacing="1" cellpadding="0" width="100%"><br> <tr><br> <td><br> <?php modChrome_table($module, $params, $attribs); ?><br> </td><br> </tr><br> </table><br> <?php<br>}</li><li><i>dairəvi</i>- modulu qrafik haşiyələr (məsələn, yuvarlaq künclər) şəklində mürəkkəb üslub üçün bir neçə iç-içə blokda göstərir modChrome_rounded($modul, &$params, &$attribs) funksiyası <br>{ ?><br> <div class="module<?php echo htmlspecialchars($params->almaq ("moduleclass_sfx")); ?>>"> <br> <div><br> <div><br> <div><br> <?php if ($module->şou başlığı != 0) : ?> <br> <h3><?php echo $module->başlıq; ?></h3><br> <?php endif; ?><br> <?php echo $module->məzmun; ?> <br> </div><br> </div><br> </div><br> </div><br> <?php<br>}</li><li><i>kontur</i>- ModChrome_outline ($module, &$params, &$attribs) modul bloku funksiyasına əvvəlcədən təyin edilmiş css üslublarını əlavə edir <br>{<br>statik $css=false; <br>əgər (!$css) <br> {<br>$css=doğru; <br>jimport("joomla.environment.brauzer"); <br>$doc = JFactory::getDocument(); <br>$brauzer = JBrowser::getInstance(); <br>$doc->addStyleDeclaration(".mod-preview-info (doldurma: 2px 4px 2px 4px; haşiyə: 1px bərk qara; mövqe: mütləq; fon rəngi: ağ; rəng: qırmızı;)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper ( background-color:#eee; haşiyə: 1px nöqtəli qara; rəng:#700;)"); <br>əgər ($browser->getBrowser()=="msie") <br> {<br>əgər ($brauzer->getMajor()<= 7) {<br>$doc->addStyleDeclaration(".mod-preview-info (filtr: alfa(şəffaflıq=80);)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (filtr: alfa(şəffaflıq=50);)"); <br> } <br>başqa( <br>$doc->addStyleDeclaration(".mod-preview-info (-ms-filtr: alfa(şəffaflıq=80);)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (-ms-filtr: alfa(şəffaflıq=50);)"); <br> } <br> } <br>başqa <br> {<br>$doc->addStyleDeclaration(".mod-preview-info (şəffaflıq: 0.8;)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (şəffaflıq: 0.5;)"); <br> } <br> } <br> ?><br> <div class="mod-preview"><br> <div class="mod-preview-info"><?php echo $module->mövqe."[".$module->style."]"; ?></div><br> <div class="mod-preview-wrapper"><br> <?php echo $module->məzmun; ?> <br> </div><br> </div><br> <?php<br>}</li><li><i>heç biri</i>- ümumiyyətlə qeyd olunmayan üsluba bənzəyir. Dizayn və başlıq funksiyası olmayan modulu göstərir modChrome_none($module, &$params, &$attribs) <br>{<br>echo $module->məzmun; <br>}</li> </ul><p>Bütün əvvəlcədən təyin edilmiş üslublar templates/system/html/modules.php faylında yerləşir. Ancaq biz yalnız təqdim olunan variantlardan istifadə etməklə məhdudlaşmırıq, lakin özümüzü yaratmaq iqtidarındayıq.</p> <p><b>3. Fərdi xrom rejimi yaradın.</b></p> <p><b><br></b> Beləliklə, təqdim olunan standart modul təqdimat növləri cari tələblərə cavab vermir. Öz dizayn tərzinizi əlavə etməlisiniz. Nümunə olaraq, kifayət qədər tez-tez təkrarlanan vəziyyəti seçək. Tapşırığa uyğun olaraq yerinə <h3>modulun başlığını etiketə qoyun <span>, semantik cəhətdən neytraldır. Siz həmçinin modul məzmun blokunu ayrıca yerləşdirməlisiniz <div>. Öz modul çıxış stilinizi yaratmaq üçün standart alətlərdən istifadə edəcəyik. Joomla şablonlarının əksəriyyətində şablon yaratmaq üçün istifadə olunan html/qovluq (şablonlar/şablon adı/html/) var. Yəni modul şablonunu bu qovluğa köçürsəniz, modules/my_module/tmpl/default qovluğundan şablon əvəzinə, templates/template name/html/my_modules/default faylı çıxacaq. Komponentlər eyni şəkildə şablonlanır. Rahat və praktikdir. Şablonunuzun html/qovluğunda modules.php faylı yaradın. Şablonda belə bir qovluq yoxdursa, onu yaradacağıq. Gəlin onu fayla yazaq</p><p> <?php<br>funksiya modChrome_modbox($module, &$params, &$attribs) // Funksiyaya zəng edin <br>{<br>if (!empty ($module->content)): /* Mövqedə aktiv modulun olub olmadığını yoxlayın */?> <br> <div class="moduletable<?php echo htmlspecialchars($params->almaq ("moduleclass_sfx")); /* modul sinifinin css şəkilçisini göstərin */ ?>"> <br> <?php if ($module->showtitle != 0) : /* modul başlığının daxil olub-olmadığını yoxlayın */ ?> <br> <span class="title"><?php echo $module->başlıq; /* Başlığı çap edin */ ?></span><br> <?php endif; ?><br> <div class="modcontent"><br> <?php echo $module->məzmun; /* Modulun məzmununu çıxarın */ ?> <br> </div><br> </div><br> <?php endif;<br>} <br>?> Bitdi. İndi yalnız onu çıxış üslubu kimi təyin etməlisiniz. <jdoc:include type="modules" name="user1" style="modbox"/>Mövqeyimizə modul təyin edirik və nəticəyə baxırıq.</p> <p>PHP-nin ən gözəl cəhətlərindən biri onun HTML formaları ilə işləməsidir. Burada əsas odur ki, hər bir forma elementi avtomatik olaraq PHP proqramlarınız üçün əlçatan olur. PHP-də formalardan istifadə haqqında ətraflı məlumat üçün bölməni oxuyun. Budur bir nümunə HTML forması:</p> <p><b>Nümunə №1 Ən Sadə HTML Forması</b></p> <p><form action="action.php" method="post"> <p>Adınız: <input type="text" name="name" /></p> <p>Sənin yaşın: <input type="text" name="age" /></p> <p><input type="submit" /></p> </form></p> <p>Bu formada xüsusi bir şey yoxdur. Bu, heç bir xüsusi etiketi olmayan adi HTML formasıdır. İstifadəçi formanı doldurub təqdim düyməsini kliklədikdə action.php səhifəsi çağırılacaq. Bu faylda belə bir şey ola bilər:</p> <p><b>Nümunə №2 Forma məlumatlarının göstərilməsi</b></p> <p>Salam,<?php echo htmlspecialchars ($_POST [ "name" ]); ?> .<br>Sizə<?php echo (int) $_POST [ "age" ]; ?>illər.</p> <p>Bu proqramın nümunə çıxışı:</p> <p>Salam, Sergey. 30 yaşın var.</p> <p>Əgər kod parçalarını nəzərə almasanız <span>htmlspecialchars()</span> Və <i>(int)</i>, bu kodun iş prinsipi sadə və başa düşülən olmalıdır. <span>htmlspecialchars()</span> Zərərli HTML və ya Javascript-in səhifənizə daxil edilməməsi üçün "xüsusi" HTML simvollarının düzgün kodlanmasını təmin edir. Yaş sahəsi, bildiyimiz bir rəqəm olmalıdır, biz sadəcə çevirə bilərik <span>tam</span>, avtomatik olaraq arzuolunmaz simvollardan xilas olacaq. PHP də filtr uzantısından istifadə edərək bunu avtomatik edə bilər. $_POST["name"] və $_POST["age"] dəyişənləri PHP tərəfindən avtomatik olaraq sizin üçün təyin edilir. Əvvəllər biz $_SERVER superqlobal dəyişənindən istifadə etdik, lakin burada bütün POST məlumatlarını ehtiva edən $_POST superqlobal dəyişəndən də istifadə edirik. qeyd et ki <i>göndərmə üsulu</i> formamızın (metod) POST-dur. metoddan istifadə etsəydik <i>GET</i>, onda bizim forma məlumatımız superqlobal dəyişəndə ​​olacaq $_GET . Alternativ olaraq, məlumat mənbəyinin əhəmiyyəti yoxdursa, siz $_REQUEST dəyişənindən istifadə edə bilərsiniz. Bu dəyişən GET, POST, COOKIE məlumatlarının qarışığından ibarətdir.</p> <p><b>15 il əvvəl</b></p> <p>HTTP spesifikasiyasına uyğun olaraq, server sonunda bir şeyin vəziyyətini dəyişdirmək üçün formadan istifadə edərkən POST metodundan istifadə etməlisiniz. Məsələn, səhifədə istifadəçilərə öz şərhlərini əlavə etmək imkanı verən forma varsa, buna bənzər səhifə burada, forma POST-dan istifadə etməlidir. POST vasitəsilə çatdığınız səhifədə "Yenidən yüklə" və ya "Yenilə" düyməsini klikləsəniz, bu, demək olar ki, həmişə xətadır -- eyni şərhi iki dəfə göndərməməlisiniz -- buna görə də bu səhifələr əlfəcin edilmir və ya keşlənmir.</p><p>Formanız serverdən bir şey əldə etdikdə və əslində heç nəyi dəyişmədikdə GET metodundan istifadə etməlisiniz. Məsələn, axtarış motorunun forması GET-dən istifadə etməlidir, çünki veb-saytda axtarış müştərini maraqlandıra biləcək heç bir şeyi dəyişdirməməlidir və axtarış motoru sorğusunun nəticələrini işarələmək və ya keşləmək əlfəcin və ya keşləmə kimi faydalıdır. statik HTML səhifəsi.</p> <p><b>2 il bundan əvvəl</b></p> <p>Aydınlaşdırmağa dəyər:</p><p>POST GET-dən daha təhlükəsiz deyil.</p><p>GET vs POST seçiminin səbəbləri sorğunun məqsədi (məlumat “təqdim edirsiniz”?), sorğunun ölçüsü (URL-nin nə qədər uzun ola biləcəyinə məhdudiyyətlər var və GET parametrləri göndərilir) kimi müxtəlif amilləri əhatə edir. URL) və Fəaliyyətin nə qədər asanlıqla paylaşıla bilməsini istəyirsiniz -- Məsələn, Google Axtarışları GET-dir, çünki o, sadəcə URL-i paylaşmaqla axtarış sorğusunu başqası ilə kopyalamağı və paylaşmağı asanlaşdırır.</p><p>GET-in paylaşılması POST-dan daha asan olduğu üçün təhlükəsizlik burada yalnız nəzərə alınır. Nümunə: siz parolun GET tərəfindən göndərilməsini istəmirsiniz, çünki istifadəçi nəticədə URL-i paylaşa və səhvən öz parolunu ifşa edə bilər.</p><p>Bununla belə, şəbəkə bağlantısının özünü qorumaq üçün TLS/SSL tətbiq etməsəniz, GET və POST-u yaxşı yerləşdirilmiş zərərli şəxs ələ keçirmək eyni dərəcədə asandır.</p><p>HTTP üzərindən göndərilən bütün formalar (adətən 80 port) etibarsızdır və bu gün (2017), ictimai vebsaytın HTTPS-dən (əsasən HTTP + Nəqliyyat Layeri Təhlükəsizliyidir) istifadə etməməsi üçün çox yaxşı səbəblər yoxdur.</p><p>Bonus olaraq, TLS istifadə etsəniz, istifadəçilərinizin trafikinizə sizin tərəfinizdən daxil edilməmiş kodu (AD) daxil etmə riskini minimuma endirmiş olursunuz.</p> <p>Bu, PHP daxil olmaqla sinifin ümumi zəifliyidir. Amma auditi apardığım şəxs mənə dedi ki, bu zəiflikdən istifadə etmək olmaz, ona görə də nəzərə alınmır. Onunla mübahisə etməli oldum</p> <h2>PHP-include nədir</h2> <p>Gəlin bu zəifliklə bağlı kiçik bir maarifləndirici proqram keçirək. PHP-include ixtiyari faylı, məsələn, bu kodu “daxil etməyə” imkan verən zəiflikdir:</p> <p>$module=$_REQUEST["modul"]; daxildir("modullar/".$modul);</p> <p>Və adətən “/etc/passwd” faylında PHP teqləri olmadığı üçün (<?php и?>), sonra o, html kodunun adi php skriptində php teqlərinin arxasında göstərildiyi kimi brauzerdə göstəriləcək. Əlbəttə ki, faylları oxumaq bu hücumun mümkün tətbiqlərindən yalnız biridir. Əsas odur ki, lazımi faylları lazımi PHP kodu ilə daxil edin.</p> <p>Nümunəyə qayıdaq. Gəlin onu mürəkkəbləşdirək:</p> <p>$module=$_REQUEST["modul"]; daxildir("modullar/".$module."/module.class.php");</p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p>$modul = $_REQUEST [ "modul" ] ;</p><p>daxildir ("modullar/" . $module . "/module.class.php" );</p> </td> </tr></table><p>Gördüyünüz kimi, indi dəyişənimizin sonunda bir sətir əlavə olunur ki, bu da bizə hər hansı bir faylı daxil etməyimizə mane olur. Beləliklə, bir çox PHP funksiyaları binar təhlükəsiz deyil, yəni belə funksiyalar NULL baytı sətirin sonu hesab edir. Skriptə bu şəkildə daxil oluruq:</p> <p>script.php?module=../../../../../../../../../../../etc/passwd%00</p> <p>Əgər magic_quotes direktivi deaktivdirsə, onda biz /etc/passwd məzmununu yenidən görəcəyik.</p> <h2>Zəiflik varmı?</h2> <p>Qayıdaq kodumuza:</p> <p>$module=addslashes($_REQUEST["modul"]); daxildir("modullar/".$module."/module.class.php");</p> <table class="crayon-table"><tr class="crayon-row"><td class="crayon-nums " data-settings="show"> </td> <td class="crayon-code"><p>$module = tire əlavə edir ($_REQUEST [ "modul" ] );</p><p>daxildir ("modullar/" . $module . "/module.class.php" );</p> </td> </tr></table><p>Gördüyünüz kimi, dəyişənimiz “əlavə tire”lərdən keçməyə məcburdur və NULL baytdan istifadə etməyə çalışsaq, o, “\0”a çevriləcək və daxiletmə işləməyəcək.</p> <p>Ancaq tərəqqi hələ də dayanmır! Məlum olub ki, USH-dən olan bəzi uşaqlar PHP-də maraqlı bir xüsusiyyət tapıblar: PHP fayl sistemi hücum vektorları (İngilis dili). Məqalənin mahiyyətini qısaca ümumiləşdirmək üçün php bir neçə funksiyadan istifadə edərək yolları emal edir:</p> <ul><li><b>Yolun kəsilməsi</b>- php yol sətirini müəyyən edilmiş MAXPATHLEN uzunluğuna qədər kəsir (Windows-da 270 simvola qədər, NIX-də - adətən 4096, BSD-də - adətən 1024)</li> <li><b>Yolun normallaşdırılması</b>— php əlavə “/” və “/” simvollarını silməklə yolu xüsusi şəkildə emal edir. və onların müxtəlif birləşmələri</li> <li><b>Kanonik formaya endirmə</b>— lazımsız keçidlər silinir, məsələn, “dir1/dir2/../dir3” “dir1/dir3/”-ə çevrilir, “dir2” kataloqunun mövcudluğu yoxlanılır və digər oxşar çevrilmələr (yəni normallaşdırmanın davamı) )</li> </ul><p>İndi, ardıcıl olaraq, keçən yola nə olur:</p> <ol><li>Əgər yol nisbidirsə, o zaman include_path direktivindən olan dəyərlər əvvəlcə əvəz olunur</li> <li>Sonra platformadan asılı olaraq yol müəyyən uzunluğa kəsilir</li> <li>Yol normallaşdırılır</li> <li>Yol kanonik formaya endirilir</li> </ol><p>İndi bundan istifadə etməyə çalışaq. Gəlin “modules/” kataloqunda yerləşən “test.php” faylını daxil etməyə çalışaq. Bunun üçün sonuna “/.” işarəsi əlavə edin. belə ki, ümumi uzunluq, fayl adı və include_path-dən alınan dəyərlə birlikdə 4096 simvoldan açıq şəkildə böyükdür. <br>script.php?module=test.php/././.[...]/././.</p> <p>Bu halda, təxmin etməlisiniz ki, bütün yol sətri (artıq kəsilmiş) kəsiklə deyil, nöqtə ilə (vacibdir!) bitsin. Bunu etmək üçün aşağıdakı kimi bir slash əlavə edə bilərsiniz: <br></p> <p>Və bu variantlardan biri mütləq işləyəcək.</p> <h2>Təhlil edilir</h2> <p>Yolda hansı dəyişikliklərin baş verəcəyinə baxaq <br>modullar/test.php//././.[...]/./././module.class.php <br><i>4200 simvol</i> </p> <p>Xəttdə baş verən ilk şey, daxil_yoldan dəyərin ona əlavə edilməsidir: <br>/home/site/public_html/modules/test.php//././.[...]/./././module.class.php <br><i>4223 simvol</i> </p> <p>Sonra sətir MAXPATHLEN-ə kəsilir (tutaq ki, 4096): <br>/home/site/public_html/modules/test.php//././.[...]/./. <br><i>4096 simvol</i> </p> <p>Buradan başqa tire əlavə etməyin nəyə görə lazım olduğunu görə bilərsiniz (əks halda xətt kəsik xəttinə kəsiləcəkdi). İndi bu xətt normallaşdırılıb, əvvəlcə əlavə tireləri çıxarır: <br>/home/site/public_html/modules/test.php/././.[...]/./. <br><i>4095 simvol</i> </p> <p>Nəticədə bizə lazım olan faylın düzgün yolunu əldə edirik və bu yol artıq daxilə köçürüləcək və bizə lazım olan fayl daxil ediləcək.</p> <p>Yəni, “test.php” faylımızı uğurla daxil edəcəyik. <br>script.php?module=test.php//././.[...]/././.</p> <p>Bu o deməkdir ki, zəiflik nəzəri deyil. Nəticədə müştərim mərcdən uduzdu, mən isə mərcdən və mərc etdiyimiz 10 rubldan uddum. Əlbəttə ki, 10 rubldan əlavə, mən də müştərinin gözündə etibar və hörmət qazandım, bu da vacibdir.</p> <h2>Qeydlər</h2> <p>Burada mən bu zəifliyin istismarının bir neçə maraqlı xüsusiyyətlərinə baxacağam.</p> <h3>Kataloqdan çıxın</h3> <p>Bu kodu nəzərdən keçirin:</p> <p> ) ; </p> <p>RFI-dən istifadə edə biləcəyiniz və uzaq serverdən bir fayl daxil edə biləcəyiniz nöqtəni atlayaq. Serverdə “allow_url_include=OFF” deyək.</p> <p>Aşağıdakı qovluqdan bir fayl daxil etməli olduğumuz bir vəziyyəti nəzərdən keçirək: <br>script.php?module=../test.php/././.[...]/././.</p> <p>Belə bir sorğu fayl tapılmadı kimi xəta yaradacaq. Və bunun ətrafında olmaq üçün onu belə adlandırmalıyıq: <br>script.php?module=blabla/../../test.php/././.[...]/././.</p> <p>Yolların kanonlaşdırılmasını əbəs yerə təsvir etməmişəm. Bunun sayəsində “blabla” kataloqunun mövcud olması lazım deyil.</p> <h3>Sadə kəsiklər əlavə etmək</h3> <p>Diqqətli oxucu, yəqin ki, normallaşdırmanın təsvirində əlavə tire işarələrinin “/” və “/.” kəsikli nöqtələrin silindiyini yazdım, buna görə də sonunda nöqtə ilə bitən lazımsız əngəldən qaçmaq üçün niyə sadəcə tire işarələrindən istifadə etməyək.</p> <p>Bütün bunlar alqoritmlərə aiddir, yəni “/” nöqtəsi olan slash. tamamilə silinir. Ancaq sadə kəsiklər ilə vəziyyət bir az daha mürəkkəbdir; normallaşdırma zamanı yalnız bir (!) kəsik qalana qədər hər iki kəsik bir ilə əvəz olunur, məsələn:</p><p>/home/site/public_html/modules/test.php////////////////// <br><i>57 simvol</i> <br> ↓<br>/home/site/public_html/modules/test.php///////// <br><i>48 simvol</i> <br> ↓<br>/home/site/public_html/modules/test.php///// <br><i>44 simvol</i> <br> ↓<br>/home/site/public_html/modules/test.php/// <br><i>42 simvol</i> <br> ↓<br>/home/site/public_html/modules/test.php// <br><i>41 simvol</i> <br> ↓<br>/home/site/public_html/modules/test.php/ <br><i>40 simvol</i> </p> <h3><b>Kiçik bir sapma:</b></h3> <p>Üstəlik, bir çox məşhur hack resurslarına diqqət yetirsəniz, bu səhvi görəcəksiniz. Anladığım kimi, bu səhv müəyyən bir Raz0r-ın vektor təklif etdiyi məqaləsi ilə başladı: <br>index.php?act=../../../../../etc/passwd/////[…]/////</p> <p>Və hətta jurnala da diqqət yetirin ][aker öz məqaləsində bu səhvi təkrarlayıb. Üstəlik, hətta orijinal USH məqaləsində açıq şəkildə yazılmışdır ki, sadəcə slashlardan istifadə etmək məqsədəuyğun deyil və normallaşmadan əvvəl sonunda bir dövr simvolu qalmalıdır. Amma sadə kəsiklər (sonunda nöqtə olmasa belə) yalnız Suhosin ilə PHP-də işləyir.</p> <p>Yəni “/” nöqtəsi olan slash işarəsindən istifadə edin. - daha universal üsuldur, çünki “/” kəsik işarələrindən fərqli olaraq php-nin bütün versiyaları üçün işləyir.</p> <h2>Nəticə</h2> <p>Ümid edirəm ki, bu məqalə skriptlərinizdə ən kiçik boşluqları belə tərk etməməli olduğunuzu başa düşməyə kömək edəcək, çünki gec-tez onlar üçün öz hücum vektorunuzu inkişaf etdirə bilərsiniz, bu da ciddi nəticələrə səbəb ola bilər.</p> <p>Em elementi vurğu ilə mətn keçidini təmsil edir. Oxucunun diqqətini cümlənin və ya abzasın mənasına cəlb etmək üçün ondan istifadə edə bilərsiniz. Bunun nə demək olduğunu sizə em elementini təsvir edən dən sonra deyəcəyəm.</p><blockquote><b>Cədvəl 8-6:</b> element</blockquote><blockquote><b>Şəkil 8-3:</b> em elementindən istifadə</blockquote><p>Bu misalda mən cümlənin əvvəlində I (I) vurğunu qoyuram. Em elementi haqqında düşünsək, cümləni ucadan dedikdə, cümlənin suala cavab olduğunu nəzərə almış oluruq. Məsələn, təsəvvür edin ki, mən soruşdum: "Kim alma və portağal sevir?" Cavabınız belə olacaq: "Mən alma və portağal xoşlayıram." (Bunu ucadan deyəndə və vurğunu I deyəndə, bu meyvələri sevən bir insan olduğunuzu aydınlaşdırırsınız).</p><p>Amma soruşsam ki, "almaları sevirsən və başqa nələr?" Cavab verə bilərsiniz: "Mən alma və portağal sevirəm." Bu zaman portağalın bəyəndiyiniz başqa bir meyvə olduğunu vurğulayan son sözə vurğu ediləcək. HTML-də bu seçim belə görünür:</p><p>Mən alma xoşlayıram və <b><em> </b> portağal <b></em> </b>.</p><h3>Xarici sözlərin və texniki terminlərin tərifi</h3><p>i elementi ətrafdakı məzmundan fərqli xarakter daşıyan mətn parçasını bildirir. Bu kifayət qədər qeyri-müəyyən tərifdir, lakin ümumi nümunələr arasında başqa dillərdən sözlər, texniki və ya elmi terminlər və hətta insan düşüncələri (nitqdən fərqli olaraq) daxildir. i elementi təsvir edilmişdir.</p><blockquote><b>Cədvəl 8-7:</b> Element i</blockquote><blockquote><b>Şəkil 8-5:</b> s elementindən istifadə etməklə</blockquote><br><img src='https://i2.wp.com/storage.smarly.net/html5/8.5.png' width="100%" loading=lazy loading=lazy><h3>Mühüm mətnin müəyyən edilməsi</h3><p>Güclü element vacib olan mətnin keçidini bildirir. Bu elementdə təsvir edilmişdir.</p><blockquote><b>Cədvəl 8-9:</b> Element güclü</blockquote><blockquote><b>Şəkil 8-7:</b> u elementindən istifadə</blockquote><br><img src='https://i1.wp.com/storage.smarly.net/html5/8.7.png' width="100%" loading=lazy loading=lazy><h3>Kiçik şriftin əlavə edilməsi</h3><p>Kiçik element kiçik şrifti ifadə edir və tez-tez keyfiyyətlər və aydınlaşdırmalar üçün istifadə olunur. B kiçik elementi təmsil edir.</p><blockquote><b>Cədvəl 8-11:</b> element kiçik</blockquote><blockquote><b>Şəkil 8-8:</b> Kiçik elementdən istifadə</blockquote><br><img src='https://i1.wp.com/storage.smarly.net/html5/8.8.png' width="100%" loading=lazy loading=lazy><h3>Üst və alt işarənin əlavə edilməsi</h3><p>Siz müvafiq olaraq yuxarı və alt işarəni göstərmək üçün alt və sup elementlərindən istifadə edə bilərsiniz. Bəzi dillərdə sözləri yazmaq üçün yuxarı işarələrdən, sadə riyazi ifadələrdə həm yuxarı, həm də alt işarədən istifadə olunur. Bu elementlər təqdim olunur.</p><blockquote><b>Cədvəl 8-12:</b> Alt və əlavə elementlər</blockquote><blockquote><b>Şəkil 8-9:</b> Alt və əlavə elementlərdən istifadə</blockquote><br><img src='https://i1.wp.com/storage.smarly.net/html5/8.9.png' width="100%" loading=lazy loading=lazy> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> <div class="single-popular"> <div class="single-popular-tit col-lg-12">Kateqoriyada məşhur:</div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/8e694afe297762af56fa10dc9d64eb9d.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="Kompüterdə karaoke klipini necə yaratmaq olar?"/ loading=lazy loading=lazy> <div class="single-popular-item-tit">Kompüterdə karaoke klipini necə yaratmaq olar?</div> <a href="https://5visa.ru/az/at/sozdanie-karaoke-svoimi-rukami-kak-sozdat-karaoke-klip-na-kompyutere-eto.html" rel="bookmark" title="Kompüterdə karaoke klipini necə yaratmaq olar?">oxumaq</a> <div class="clr"> </div> </div> </div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/d610310bd3744add66d0b4be4dfee6a5.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="Oyun üçün Origin proqramı tələb olunur, lakin o quraşdırılmayıb. FIFA 16 Origin tələb edir."/ loading=lazy loading=lazy> <div class="single-popular-item-tit">Oynamaq üçün Origin proqramı tələb olunur, lakin FIFA quraşdırılmayıb...</div> <a href="https://5visa.ru/az/multimedia/prilozhenie-origin-neobhodimo-dlya-igry-no-ono-ne-ustanovleno-prilozhenie-origin.html" rel="bookmark" title="Oyun üçün Origin proqramı tələb olunur, lakin o quraşdırılmayıb. FIFA 16 Origin tələb edir.">oxumaq</a> <div class="clr"> </div> </div> </div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/30ee436baf8151ff5b776ef4575c45ea.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="Facebook sosial şəbəkəsində şəxsi səhifənin qeydiyyatı"/ loading=lazy loading=lazy> <div class="single-popular-item-tit">Facebook sosial şəbəkəsində şəxsi səhifənin qeydiyyatı</div> <a href="https://5visa.ru/az/multimedia/zaregistrirovat-dve-stranicy-facebook-na-odin-nomer-registraciya-lichnoi.html" rel="bookmark" title="Facebook sosial şəbəkəsində şəxsi səhifənin qeydiyyatı">oxumaq</a> <div class="clr"> </div> </div> </div> <div class="single-popular-item col-lg-6 col-md-6 col-sm-6 col-xs-6"> <div class="single-popular-item-wrp"> <img width="150" height="120" src="/uploads/f19ca0b3b94ccf60b634700168b060f2.jpg" class="attachment-sm-widget size-sm-widget wp-post-image" alt="Sadə Nmap Nmap Skanını necə işə salmaq olar"/ loading=lazy loading=lazy> <div class="single-popular-item-tit">Sadə Nmap Nmap Skanını necə işə salmaq olar</div> <a href="https://5visa.ru/az/installation-and-configuration/setevoi-skaner-nmap-i-ego-vozmozhnosti-kak-zapustit-prostoe-skanirovanie.html" rel="bookmark" title="Sadə Nmap Nmap Skanını necə işə salmaq olar">oxumaq</a> <div class="clr"> </div> </div> </div> <div class="clr"></div> </div> </div>  <div class="sidebar col-lg-3 col-md-4 col-sm-12"> <div class="sidebar-wrp"> <div class="sidebar-wrp-title">Ən son məqalələr</div> <div class="sidebar-wrp-des"> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/934317c9dc463eca8a068c72103a9d1c.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Şəkli bir neçə dərəcə çevirmək necə...</div> <div class="clr"></div> <a href="https://5visa.ru/az/internet/kak-povernut-izobrazhenie-v-vorde-i-eshche-neskolko-priemov.html">oxumaq</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/22b772bd41ea5a26bd659632075d8633.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Yandex brauzerində reklamın söndürülməsi Harada...</div> <div class="clr"></div> <a href="https://5visa.ru/az/tips/kak-otklyuchit-blokirovku-reklamy-v-brauzere-yandeks-otklyuchenie-reklamy-v-yandeks.html">oxumaq</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/fb321d5756cb0506f3cba53b24342950.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Wi-Fi bağlantısı problemlərinin aradan qaldırılması...</div> <div class="clr"></div> <a href="https://5visa.ru/az/problems/shlyuz-ustanovlennyi-po-umolchaniyu-ne-dostupen-ustranenie-problem-s-wi-fi.html">oxumaq</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/adf1bbe784035fed9b433ebb2510db2f.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Windows 10 profilində parolu dəyişdirin</div> <div class="clr"></div> <a href="https://5visa.ru/az/education/pomenyat-parol-na-profile-vindovs-10.html">oxumaq</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/a1f00d0e4dfd0c63b7073715f264f36a.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Simsiz marşrutlaşdırıcıların qurulması üçün təlimatlar...</div> <div class="clr"></div> <a href="https://5visa.ru/az/at/pravilnaya-nastroika-wi-fi-routera-asus-rt-g32-instrukciya-po-nastroike.html">oxumaq</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/da305b0b628cd68b021f50a2fe2a3a89.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Sərt diski necə seçmək və hansını almaq daha yaxşıdır...</div> <div class="clr"></div> <a href="https://5visa.ru/az/multimedia/kakaya-skorost-zhestkogo-diska-horoshaya-kak-vybrat-zhestkii-disk-i.html">oxumaq</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/470eb147f848e5af1fb8b95300372a3e.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">Butaforlar üçün Meizu. Zənglər və ünvan kitabçası....</div> <div class="clr"></div> <a href="https://5visa.ru/az/internet/meizu-dlya-chainikov-zvonki-i-adresnaya-kniga-storonnie-prilozheniya-dlya.html">oxumaq</a> </div> <div class="last-post col-lg-12 col-md-12 col-sm-6 col-xs-6"> <div class="last-post-img"> <img width="60" height="48" src="/uploads/7a081806d1b8bf3a3ff61c21be94541f.jpg" class="attachment-sm-widget2 size-sm-widget2 wp-post-image" alt="" / loading=lazy loading=lazy> </div> <div class="last-post-tit">PDFMaster proqramını yükləyin</div> <div class="clr"></div> <a href="https://5visa.ru/az/program/smotret-pdf-faily-skachat-programmu-pdfmaster.html">oxumaq</a> </div> <div class="clr"></div> </div> </div> <div id="text-4" class="widget widget_text sidebar-wrp"> <div class="textwidget"> </div> </div> <div class="clr"></div> </div> </div> </div> </div> <div id="footer"> <div class="container"> <div class="row"> <div class="footer-contacts col-lg-6 col-md-6 col-sm-12 col-xs-12"> <img src="/public/logo.png" loading=lazy loading=lazy> <div class="footer-contacts-tit">5visa.ru <br>İnternet. Multimedia. Naviqator. Təhsil. BY. Mikroproqram. Proqramlar. məsləhət. Quraşdırma</div> <div class="footer-soc"> <div class="footer-soc-wrp"> <div class="soc_w"> <a href="https://vk.com/share.php?url=https://5visa.ru/education/bobovye-html-modules-php-name-jdoc-include---metod-otobrazheniya-kontenta-na-stranice.html" class="soc-link vk" target="_blank"></a> <a href="https://www.facebook.com/sharer/sharer.php?u=https://5visa.ru/education/bobovye-html-modules-php-name-jdoc-include---metod-otobrazheniya-kontenta-na-stranice.html" class="soc-link fb" target="_blank"></a> </div> </div> </div> </div> <div class="footer-links col-lg-4 col-md-6 col-sm-12 col-xs-12"> </div> <div class="footer-links col-lg-4 col-md-4 col-sm-4 col-xs-4" style="display: block;"> <ul> <li><a href="">Layihə nəşri</a></li> <li><a href="">Saytda reklam</a></li> </ul> <ul> <li><a href="https://5visa.ru/az/feedback.html">Əlaqələr</a></li> <li><a href="https://5visa.ru/az/sitemap.xml">Sayt xəritəsi</a></li> </ul> </div> </div> </div> <div class="copyright">© 2024 İnternet. Multimedia. Naviqator. Təhsil. BY. Mikroproqram. Proqramlar. məsləhət. Quraşdırma</div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script src="https://5visa.ru/wp-content/themes/trudinsp/js/bootstrap.min.js"></script> <script type="text/javascript" src="https://5visa.ru/wp-content/themes/trudinsp/js/SmoothScroll.js"></script> <a id="scroll-to-top" href="#" title="Yuxarıya sürüşdürün">Üst</a> <script type='text/javascript' src='https://5visa.ru/wp-content/plugins/contact-form-7/includes/js/jquery.form.min.js?ver=3.51.0-2014.06.20'></script> <script type='text/javascript' src='https://5visa.ru/wp-content/plugins/jquery-smooth-scroll/js/jss-script.min.js?ver=4.8.3'></script> <script type='text/javascript' src='https://5visa.ru/wp-content/plugins/table-of-contents-plus/front.min.js?ver=1509'></script> <script type='text/javascript' src='/wp-includes/js/jquery/ui/effect.min.js?ver=1.11.4'></script> <script type='text/javascript' src='/wp-includes/js/jquery/ui/effect-blind.min.js?ver=1.11.4'></script> <script type='text/javascript'> /* <![CDATA[ */ var stbUserOptions = { "mode":"css","cssOptions":{ "roundedCorners":false,"mbottom":20,"imgHide":"http:\/\/5visa.ru\/wp-content\/plugins\/wp-special-textboxes\/themes\/stb-metro\/minus.png","imgShow":"http:\/\/5visa.ru\/wp-content\/plugins\/wp-special-textboxes\/themes\/stb-metro\/plus.png","strHide":"\u0421\u043a\u0440\u044b\u0442\u044c","strShow":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c"} }; /* ]]> */ </script> <script type='text/javascript' src='https://5visa.ru/wp-content/plugins/wp-special-textboxes/js/wstb.min.js?ver=5.5.101'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=4.8.3'></script> <script type="text/javascript" id="slb_context">/* <![CDATA[ */if ( !!window.jQuery ) { (function($){ $(document).ready(function(){ if ( !!window.SLB ) { { $.extend(SLB, { "context":["public","user_guest"]} );} } })} )(jQuery);} /* ]]> */</script> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html>